Skip to main content

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 comme route('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. Dans les starter kits Laravel basés sur Inertia (React, Vue, Svelte), Wayfinder est adopté par défaut.

Installation

1. Installez le paquet côté serveur avec Composer

2. Installez le plugin Vite avec NPM

3. Ajoutez le plugin à vite.config.js

Lorsque vous ajoutez le plugin Vite, les fichiers TypeScript sont régénérés automatiquement chaque fois qu’un fichier PHP ou de routes change pendant que le serveur de développement est en cours d’exécution.

Génération des fichiers de définitions TypeScript

Générez les fichiers TypeScript avec la commande wayfinder:generate.
Par défaut, trois répertoires sont générés sous resources/js.
Les fichiers générés sont entièrement régénérés à chaque build ; il est donc recommandé de les ajouter à .gitignore. Excluez ensemble les trois répertoires wayfinder, actions et routes.
Pour modifier la destination de sortie, utilisez l’option --path.
Il est également possible de générer uniquement les actions de contrôleur ou uniquement les routes.

Utilisation de base

Import et utilisation d’une action

Voici un exemple qui génère l’URL correspondant à la méthode show de PostController.
Si vous n’avez besoin que de l’URL, utilisez .url().
Vous pouvez également spécifier une méthode HTTP particulière.

Passage de paramètres

Les fonctions Wayfinder acceptent des paramètres sous diverses formes.
Si un key binding est défini pour la route (/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.
Importer un contrôleur entier empêche le tree shaking et inclut toutes les actions dans le bundle. Importer individuellement permet de conserver un bundle final plus petit.

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 sous routes/.

Paramètres de requête

Toutes les fonctions Wayfinder acceptent l’option query pour ajouter des paramètres de requête.
Pour fusionner avec les paramètres de requête de l’URL actuelle, utilisez 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.
Cela fonctionne de la même manière avec le composant Link.

Adoption dans les starter kits

Lorsque vous créez un nouveau projet avec laravel 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
L’installation manuelle dans un projet existant suit la procédure présentée ci-dessus.

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 comme delete ou import, un suffixe Method est ajouté.

État actuel (v0.1.x)

La version stable actuelle est fournie sur la branche v0.1.x. À la date de mars 2026, la dernière version est la v0.1.15.

Principal historique des versions v0.1.x


Fonctionnalités de nouvelle génération en développement sur la branche next

Sur la branche next, une prochaine version avec des fonctionnalités considérablement étendues par rapport à la v0.1.x actuelle est en développement.
La branche next peut être installée avec la contrainte dev-next, mais l’API est susceptible de changer considérablement. Son utilisation en production n’est pas recommandée.

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

Le type suivant est généré à partir du Form Request ci-dessus.

Génération de types pour les modèles Eloquent

À partir du modèle ci-dessus, les types sont générés dans types.d.ts.

Conversion des Enums PHP en TypeScript

Le type et les constantes sont tous deux générés.

Changement du répertoire de sortie

Dans la v0.1.x, la sortie était répartie dans les trois répertoires actions/, 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-form sont supprimés et déplacés dans le fichier de configuration
  • types.ts renommé en types.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 branche next é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.
Dernière modification le 13 juillet 2026