¿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 comoroute('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.| Elemento | Ziggy | Wayfinder |
|---|---|---|
| Referencia a rutas | route('posts.show', { id: 1 }) | import { show } from "@/actions/..." |
| Seguridad de tipos | Definiciones de tipo limitadas | Tipos TypeScript completos |
| Soporte IDE | Autocompletado débil | Autocompletado y verificación de tipos completos |
| Tree-shaking | Todas las rutas se incluyen en el bundle | Solo las rutas usadas van al bundle |
| Momento de generación | Se inyectan en runtime | Generación estática en tiempo de build |
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
Generación del archivo de definiciones TypeScript
Con el comandowayfinder:generate se generan los archivos TypeScript.
resources/js.
--path.
Uso básico
Importar y usar acciones
Ejemplo de generación de la URL correspondiente al métodoshow de PostController.
.url().
Cómo pasar parámetros
Las funciones de Wayfinder aceptan parámetros en varios formatos./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.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 bajoroutes/.
Parámetros de consulta
Todas las funciones Wayfinder pueden añadir parámetros de consulta con la opciónquery.
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.Link.
Adopción en los starter kits
Al crear un proyecto nuevo conlaravel 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
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 comodelete o import, se les añade el sufijo Method.
Estado actual (v0.1.x)
La versión estable actual se ofrece en la ramav0.1.x. A fecha de marzo de 2026, la última versión es v0.1.15.
Historial principal de la serie v0.1.x
| Versión | Contenido principal |
|---|---|
| v0.1.15 | Compatibilidad con Laravel 13, corrección de crash de vistas Blade |
| v0.1.13 | Mejora de compatibilidad TypeScript strict de los parámetros de consulta |
| v0.1.7 | Soporte para indicar los parámetros de URL por defecto desde el frontend |
| v0.1.6 | Añadido del plugin de Vite |
| v0.1.5 | Soporte de PHP 8.2, soporte de rutas cacheadas |
| v0.1.0 | Release inicial |
Funcionalidades de nueva generación en desarrollo en la rama next
En la ramanext se está desarrollando la próxima versión, que amplía notablemente las funcionalidades respecto a la actual v0.1.x.
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
Generación de tipos de modelos Eloquent
types.d.ts.
Conversión de Enum PHP a TypeScript
Cambio del directorio de salida
En v0.1.x se dividía en tres directoriosactions/, 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-routesy--with-formse eliminan y pasan al archivo de configuración types.tscambia atypes.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 ramanext 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í.