Qu’est-ce que Wayfinder ?
Laravel Wayfinder est un paquet qui relie sans friction le back-end Laravel et le front-end TypeScript. Il génère automatiquement des fonctions TypeScript entièrement typées à partir des contrôleurs et des routes, ce qui permet d’appeler directement les endpoints Laravel comme des fonctions depuis le code front-end. Le hardcoding des URL, la gestion manuelle des paramètres de route, la synchronisation manuelle des changements back-end — tout cela devient inutile.Wayfinder est en version bêta (actuellement v0.1.x). L’API pourrait changer avant la sortie de la v1.0.0. Tous les changements importants sont consignés dans le CHANGELOG.
Différences entre Ziggy et Wayfinder
Qu’est-ce que Ziggy ?
Ziggy est un helper de routes largement utilisé dans l’écosystème Laravel depuis de nombreuses années. Il expose les définitions de routes Laravel côté JavaScript et permet de générer les URL sous une forme commeroute('posts.show', { id: 1 }).
Pourquoi a-t-il été remplacé par Wayfinder ?
Ziggy manipule les noms de routes et les paramètres sous forme de chaînes, ce qui limitait sa compatibilité avec TypeScript. Les fautes de frappe dans les noms de routes ou les noms de paramètres erronés ne provoquaient que des erreurs à l’exécution. Wayfinder est conçu selon une approche TypeScript-first et génère les méthodes de contrôleur comme des fonctions importables.| Critère de comparaison | Ziggy | Wayfinder |
|---|---|---|
| Méthode de référence des routes | route('posts.show', { id: 1 }) | import { show } from "@/actions/..." |
| Sécurité de type | Définitions de types limitées | Types TypeScript complets |
| Support IDE | Complétion faible | Complétion et vérification de types complètes |
| Tree shaking | Toutes les routes incluses dans le bundle | Seules les routes utilisées sont incluses |
| Moment de génération | Injection au runtime | Génération statique au moment du build |
Installation
1. Installez le paquet côté serveur avec Composer
2. Installez le plugin Vite avec NPM
3. Ajoutez le plugin à vite.config.js
Génération des fichiers de définitions TypeScript
Générez les fichiers TypeScript avec la commandewayfinder:generate.
resources/js.
--path.
Utilisation de base
Import et utilisation d’une action
Voici un exemple qui génère l’URL correspondant à la méthodeshow de PostController.
.url().
Passage de paramètres
Les fonctions Wayfinder acceptent des paramètres sous diverses formes./posts/{post:slug}), vous pouvez utiliser cette valeur.
Import de tout un contrôleur
Vous pouvez également importer tout un contrôleur et appeler ses méthodes.Contrôleurs à action unique
Les contrôleurs à action unique (Invokable Controller) s’utilisent en appelant directement la fonction importée.Import de routes nommées
Pour accéder aux routes par leur nom, utilisez les fichiers sousroutes/.
Paramètres de requête
Toutes les fonctions Wayfinder acceptent l’optionquery pour ajouter des paramètres de requête.
mergeQuery.
Variantes de formulaire
Pour les formulaires HTML traditionnels, générez avec l’option--with-form et utilisez la variante .form.
Combinaison Inertia et Wayfinder
En combinant le helper de formulaire Inertia et Wayfinder, vous pouvez soumettre un formulaire sans écrire une seule chaîne d’URL.Link.
Adoption dans les starter kits
Lorsque vous créez un nouveau projet aveclaravel new et sélectionnez React, Vue ou Svelte, vous obtenez une configuration où Wayfinder est automatiquement configuré. Les starter kits incluent ce qui suit.
- Paquet Composer
laravel/wayfinder - Paquet NPM
@laravel/vite-plugin-wayfinder - Plugin déjà configuré dans
vite.config.js - Répertoires générés déjà ajoutés à
.gitignore
Gestion des noms de méthodes en conflit avec les mots réservés
Pour les méthodes de contrôleur portant le même nom que des mots réservés JavaScript commedelete ou import, un suffixe Method est ajouté.
État actuel (v0.1.x)
La version stable actuelle est fournie sur la branchev0.1.x. À la date de mars 2026, la dernière version est la v0.1.15.
Principal historique des versions v0.1.x
| Version | Contenu principal |
|---|---|
| v0.1.15 | Compatibilité Laravel 13, correction du crash des vues Blade |
| v0.1.13 | Amélioration de la compatibilité TypeScript strict pour les paramètres de requête |
| v0.1.7 | Prise en charge de la spécification côté front-end des paramètres URL par défaut |
| v0.1.6 | Ajout du plugin Vite |
| v0.1.5 | Support PHP 8.2, prise en charge des routes mises en cache |
| v0.1.0 | Version initiale |
Fonctionnalités de nouvelle génération en développement sur la branche next
Sur la branchenext, une prochaine version avec des fonctionnalités considérablement étendues par rapport à la v0.1.x actuelle est en développement.
Portée de génération TypeScript considérablement élargie
Alors que la v0.1.x ne cible que les routes et les actions de contrôleur, la prochaine version génère l’ensemble suivant en TypeScript.Génération de types TypeScript pour les Form Requests
Génération de types pour les modèles Eloquent
types.d.ts.
Conversion des Enums PHP en TypeScript
Changement du répertoire de sortie
Dans la v0.1.x, la sortie était répartie dans les trois répertoiresactions/, routes/ et wayfinder/, mais dans la prochaine version, tout est regroupé sous resources/js/wayfinder.
Principaux changements de la v0.1.x à next
- Chemin d’import modifié de
@/actions/...à@/wayfinder/... - Les flags
--skip-actions,--skip-routes,--with-formsont supprimés et déplacés dans le fichier de configuration types.tsrenommé entypes.d.ts
Résumé
Laravel Wayfinder repense selon une approche TypeScript-first la fonctionnalité offerte par Ziggy qui consiste à « référencer les routes Laravel depuis JavaScript ». Grâce à l’approche par import de fonctions générées, il apporte de grandes améliorations en matière de sécurité de type, de support IDE et de tree shaking. Même la v0.1.x actuelle offre déjà une référence typée aux routes et actions de contrôleur, et elle est adoptée par défaut dans les starter kits Laravel basés sur Inertia. La prochaine version en développement sur la branchenext évoluera vers une infrastructure de sécurité de type plus complète, générant en TypeScript non seulement les Form Requests, les modèles Eloquent, les Enums, mais aussi les props de pages Inertia.
Laravel Wayfinder sur GitHub
Code source, CHANGELOG et Issues ici.
Vite Plugin Wayfinder
Détails des options de configuration du plugin Vite ici.