Passer au contenu principal
Cet article s’appuie sur le README de livewire/blaze comme source primaire. À l’heure actuelle, il n’existe pas de documentation dédiée à Blaze sur laravel.com.

Qu’est-ce que Blaze ?

Blaze est un package officiel de Livewire qui accélère le rendu des composants Blade. Il s’applique non seulement aux composants Livewire, mais aussi aux composants Blade anonymes classiques. Le README présente, pour un benchmark de 25 000 rendus d’un composant anonyme, un passage de 500 ms → 13 ms (soit une réduction d’environ 97,4 %). Selon les scénarios, des réductions de 91 à 97 % sont également signalées.

Trois stratégies d’optimisation

Blaze propose trois stratégies : compile (par défaut), memo et fold.

Laquelle choisir ?

StratégieQuand la choisirAvantagesPrécautions
compileStratégie standard à choisir en premierGrande compatibilité, gain de performance facile sans configurationVérifier les limitations communes
memoIcônes, badges, etc. rendus plusieurs fois avec les mêmes propsRéduit le coût des rendus après le premierInutilisable pour les composants avec slot
foldUI statiquement déterminable, pour viser la performance maximaleÉlimine presque toute la surcharge d’exécutionGérer avec soin l’état global et les valeurs dynamiques sous peine d’incohérence
En cas de doute, commencer par compile puis appliquer memo / fold uniquement aux points où un goulot d’étranglement a été identifié est la démarche la plus sûre.

Installation et activation

composer require livewire/blaze:^1.0
Il existe deux méthodes d’activation.

1) Ajouter @blaze à un composant individuel

@blaze

<button {{ $attributes }}>
    {{ $slot }}
</button>
Vous pouvez changer de stratégie au besoin.
@blaze(memo: true)
@blaze(fold: true)

2) Activer par répertoire avec Blaze::optimize()

use Livewire\Blaze\Blaze;

public function boot(): void
{
    Blaze::optimize()
        ->in(resource_path('views/components'));
}
Après activation, videz les vues compilées.
php artisan view:clear
@blaze convient à un usage « pour commencer », tandis que Blaze::optimize() est adapté à une application large en production. Le README recommande également une application progressive en démarrant par un répertoire limité.

Limitations

Voici les limitations explicitement mentionnées dans le README.
  • Les composants basés sur des classes ne sont pas pris en charge
  • La variable $component n’est pas utilisable
  • Les View composers / creators / lifecycle events ne sont pas déclenchés
  • L’injection automatique des variables de View::share() n’est pas prise en charge (utilisez explicitement $__env->shared('key') si nécessaire)
  • @aware entre Blade et Blaze a des limitations (parent et enfant doivent tous deux être côté Blaze)
  • Il n’est pas possible d’effectuer le rendu direct d’un composant Blaze avec view() (uniquement via une balise de composant)

Compatibilité avec Flux UI

Le README de Blaze indique que si vous utilisez Flux UI, il suffit d’installer Blaze pour l’utiliser, sans configuration supplémentaire.

Fonctionnement en résumé

Le Blade classique passe à chaque fois par une pipeline de rendu qui inclut la résolution des composants et le traitement des attributs. La stratégie compile de Blaze compile cette pipeline en une fonction PHP optimisée appelée directement, ce qui réduit considérablement la surcharge de la pipeline. Comme l’explique le README, la différence conceptuelle est la suivante.
  • Standard : exécution du rendu Blade à chaque fois
  • Blaze compile : appel direct d’une fonction compilée
  • Blaze fold : intégration du HTML à la compilation, réduisant encore les calculs à l’exécution
fold est le plus rapide, mais tout élément rompant le caractère statique (état d’authentification, valeurs dépendantes de la requête, de la session ou du temps, etc.) peut être source de dysfonctionnements. Ne l’appliquez qu’aux zones à forte charge, en vérifiant le comportement au fur et à mesure.
Dernière modification le 13 juillet 2026