Skip to main content

Introduction

laravel/head est le package officiel qui permet de gérer le <head> d’une application via une API fluent. Il prend en charge le title, les meta, Open Graph, l’URL canonique, les directives robots, les hints de performance et les données structurées, et fonctionne aussi bien avec Blade qu’avec Livewire ou Inertia. La version 0.1.0 est sortie le 28 juillet 2026.

Ordre de résolution

Les données du <head> d’une page sont résolues à partir de cinq couches, de la priorité la plus faible à la plus élevée :
  1. Valeurs par défaut de la page.
  2. Métadonnées d’un groupe de routes.
  3. Métadonnées d’une route.
  4. Métadonnées définies au runtime.
  5. Métadonnées des pages d’erreur.
Chaque couche supérieure remplace la couche inférieure champ par champ. Par exemple, un title défini au runtime remplace celui de la route, mais ne remplace pas la description associée.

Enregistrer les valeurs par défaut

Enregistrez les valeurs par défaut du site dans un service provider.
La couche « par défaut » est la couche de page la moins prioritaire. Tant qu’aucune couche supérieure ne définit de titre, Acme s’affiche tel quel ; dès qu’une couche supérieure définit un titre, le suffixe hérité s’applique (Head::title('About') devient About - Acme).

Métadonnées de route

Sur les pages statiques, vous pouvez attacher les métadonnées directement à la définition de la route.
Il est aussi possible d’appliquer des métadonnées communes à tout un groupe.
withHead() stocke un simple tableau via l’API standard des métadonnées de route de Laravel (sous la clé head de ->metadata()), ce qui préserve la compatibilité avec les routes mises en cache.

Métadonnées runtime

Pour des valeurs qui ne sont connues qu’à la réception de la requête (comme le titre d’un billet), utilisez la façade Head au moment de l’exécution.
Les métadonnées conditionnelles se déclarent naturellement via when() / unless().

Pages d’erreur

Vous pouvez enregistrer des métadonnées par code de statut.
Lorsque l’une des pages d’erreur enregistrées est rendue, ces métadonnées prennent le pas sur toutes les autres couches.

Open Graph et Twitter Card

og() configure les propriétés Open Graph, tandis que des méthodes comme ogImage() permettent d’ajouter des images, des vidéos ou de l’audio.
Le title et la description du document alimentent automatiquement og:title / og:description s’ils ne sont pas définis explicitement. Une fois Twitter Card enregistrée dans les valeurs par défaut, elle est rendue automatiquement à partir des mêmes title, description et image que Open Graph.
Vous pouvez bien sûr surcharger explicitement les valeurs Twitter au cas par cas.

PWA, performance et icônes

Le helper pwa() regroupe les balises <head> nécessaires à une application web installable.

Theme color

La couleur de thème peut être définie globalement, par route ou au runtime. L’enum Media permet même de spécifier des couleurs différentes selon le média.
Media inclut également Portrait et Landscape.

Métadonnées d’application et icônes

Laravel Head expose des helpers pour les métadonnées courantes de navigateur et d’application.
favicon() est un alias de icon() qui accepte les mêmes arguments type, sizes et media.

Performance et découvrabilité

Laravel Head peut aussi générer des hints de performance, des liens de pagination, des variantes de locale et des balises de découverte de flux.
preloadAsset() / prefetchAsset() résolvent l’URL via le helper asset() et déduisent automatiquement l’attribut as à partir de l’extension.

Balises personnalisées

Pour toute balise ne disposant pas d’une méthode dédiée, utilisez meta() / link().
meta() utilise name= pour les balises meta classiques, mais bascule automatiquement sur property= pour les clés qui l’exigent (comme Open Graph og: ou les métadonnées d’article article:).

Données structurées (JSON-LD)

Le builder de schémas intégré couvre les principaux types JSON-LD.
Les fabriques intégrées sont article, blogPosting, product, offer, brand, breadcrumbs, faq, organization, person, webPage et webSite. Les fabriques inconnues retombent sur un objet schéma générique, ce qui vous permet de représenter n’importe quel type schema.org personnalisé. Les éléments d’un fil d’Ariane peuvent être ajoutés un par un ou en bloc. La position est attribuée automatiquement dans l’ordre d’ajout.
Les questions d’une FAQ suivent le même schéma : question() pour en ajouter une, questions() pour en ajouter plusieurs.
Les types de schéma personnalisés peuvent être enregistrés explicitement.

Conclusion

laravel/head permet de gérer de manière centralisée les métadonnées nécessaires au SEO et au partage social, aussi bien avec Blade qu’avec Livewire ou Inertia. Sa structure à cinq couches — défauts, groupe de routes, route, runtime et pages d’erreur — préserve la cohérence globale du site tout en permettant une personnalisation fine page par page.

Dépôt laravel/head

Le code source et les dernières informations.
Dernière modification le 2 août 2026