Skip to main content

¿Qué es Wayfinder?

Laravel Wayfinder es un paquete que conecta backend Laravel y frontend TypeScript con cero fricción. Genera automáticamente funciones TypeScript completamente tipadas a partir de controladores y rutas, con lo que puedes invocar directamente como funciones los endpoints de Laravel desde el código de frontend. Ya no es necesario hardcodear URLs, gestionar manualmente los parámetros de ruta ni sincronizar a mano los cambios del backend.
Wayfinder está en versión Beta (actualmente v0.1.x). La API puede cambiar antes de la release de v1.0.0. Todos los cambios importantes se registran en el CHANGELOG.

Diferencias entre Ziggy y Wayfinder

¿Qué es Ziggy?

Ziggy es un helper de rutas ampliamente usado durante años en el ecosistema Laravel. Publicaba las definiciones de rutas de Laravel al lado JavaScript, y permitía generar URLs con formas como route('posts.show', { id: 1 }).

Por qué se ha sustituido por Wayfinder

Ziggy trata los nombres de rutas y los parámetros como cadenas, por lo que tenía limitaciones de compatibilidad con TypeScript. Los typos en nombres de rutas o los nombres de parámetro incorrectos solo se convierten en errores en tiempo de ejecución. Wayfinder tiene un diseño TypeScript-first y genera los métodos de controlador como funciones importables. En los starter kits de Laravel basados en Inertia (React, Vue, Svelte), Wayfinder se adopta por defecto.

Instalación

1. Instala el paquete del lado servidor con Composer

2. Instala el plugin de Vite con NPM

3. Añade el plugin a vite.config.js

Al añadir el plugin de Vite, mientras el servidor de desarrollo esté arrancado, se regeneran automáticamente los archivos TypeScript cada vez que cambian archivos PHP o de rutas.

Generación del archivo de definiciones TypeScript

Con el comando wayfinder:generate se generan los archivos TypeScript.
Por defecto se generan tres directorios bajo resources/js.
Como los archivos generados se regeneran completamente en cada build, se recomienda añadirlos a .gitignore. Excluye a la vez los tres directorios wayfinder, actions y routes.
Para cambiar el destino de salida, usa la opción --path.
También es posible generar solo las acciones de controlador o solo las rutas.

Uso básico

Importar y usar acciones

Ejemplo de generación de la URL correspondiente al método show de PostController.
Si solo necesitas la URL, usa .url().
También puedes indicar un método HTTP concreto.

Cómo pasar parámetros

Las funciones de Wayfinder aceptan parámetros en varios formatos.
Si la ruta especifica un key binding (/posts/{post:slug}), puedes usar ese valor.

Importación de todo el controlador

También puedes importar todo el controlador y llamar a los métodos.
Al importar el controlador entero, el tree-shaking no funciona y todas las acciones se incluyen en el bundle. Importarlas por separado mantiene menor el tamaño final del bundle.

Controladores de acción única

En los controladores de acción única (Invokable Controller), llamas directamente a la función importada.

Importar rutas con nombre

Para acceder por nombre de ruta, usa los archivos bajo routes/.

Parámetros de consulta

Todas las funciones Wayfinder pueden añadir parámetros de consulta con la opción query.
Para fusionar con los parámetros de consulta de la URL actual, usa mergeQuery.

Variante Form

Si vas a usarlo con formularios HTML tradicionales, genera con la opción --with-form y usa la variante .form.

Combinar Inertia y Wayfinder

Al combinar los helpers de formulario de Inertia con Wayfinder, puedes enviar formularios sin escribir ni una cadena de URL.
También se puede usar en el componente Link.

Adopción en los starter kits

Al crear un proyecto nuevo con laravel new y elegir React, Vue o Svelte, se te ofrece una configuración con Wayfinder ya configurado automáticamente. El starter kit incluye:
  • Paquete Composer laravel/wayfinder
  • Paquete NPM @laravel/vite-plugin-wayfinder
  • Configuración del plugin ya presente en vite.config.js
  • Directorios generados ya añadidos a .gitignore
También puedes hacer la introducción manual en proyectos existentes siguiendo los pasos anteriores.

Tratamiento de nombres de método que chocan con palabras reservadas

A los métodos de controlador con el mismo nombre que palabras reservadas de JavaScript como delete o import, se les añade el sufijo Method.

Estado actual (v0.1.x)

La versión estable actual se ofrece en la rama v0.1.x. A fecha de marzo de 2026, la última versión es v0.1.15.

Historial principal de la serie v0.1.x


Funcionalidades de nueva generación en desarrollo en la rama next

En la rama next se está desarrollando la próxima versión, que amplía notablemente las funcionalidades respecto a la actual v0.1.x.
La rama next se puede instalar con la restricción dev-next, pero la API puede cambiar mucho. No se recomienda su uso en producción.

Amplio aumento del alcance del TypeScript generado

Mientras que la v0.1.x se centra solo en rutas y acciones de controlador, la próxima versión genera como TypeScript todo lo siguiente.

Generación de tipos TypeScript de Form Request

A partir del Form Request anterior se genera el siguiente tipo.

Generación de tipos de modelos Eloquent

A partir del modelo anterior se generan los tipos en types.d.ts.

Conversión de Enum PHP a TypeScript

Se generan tanto los tipos como las constantes.

Cambio del directorio de salida

En v0.1.x se dividía en tres directorios actions/, routes/ y wayfinder/, pero en la próxima versión se agrupa bajo resources/js/wayfinder.

Principales cambios de v0.1.x a next

  • La ruta de importación cambia de @/actions/... a @/wayfinder/...
  • Las flags --skip-actions, --skip-routes y --with-form se eliminan y pasan al archivo de configuración
  • types.ts cambia a types.d.ts

Conclusión

Laravel Wayfinder es un paquete que rediseña con enfoque TypeScript-first la funcionalidad que ofrecía Ziggy de “referenciar rutas de Laravel desde JavaScript”. Con el enfoque de importar y usar las funciones generadas, mejora enormemente la seguridad de tipos, el soporte de IDE y el tree-shaking. Incluso con la actual v0.1.x ya se logra la referencia type-safe de rutas y acciones de controlador, y se adopta por defecto en los starter kits de Laravel basados en Inertia. En la próxima versión en desarrollo en la rama next está previsto que evolucione a una base type-safe más amplia, generando también como TypeScript Form Requests, modelos Eloquent, Enums y page props de Inertia.

GitHub de Laravel Wayfinder

Código fuente, CHANGELOG e issues aquí.

Vite Plugin Wayfinder

Detalles de las opciones de configuración del plugin de Vite aquí.
Última modificación el 13 de julio de 2026