Skip to main content

¿Qué es Precognition?

Precognition es un mecanismo que ejecuta la validación del lado del servidor antes de enviar el formulario. Puedes usar directamente las reglas de Laravel sin duplicar la definición de reglas en el frontend. A diferencia de una solicitud normal, en una solicitud Precognition se ejecutan los middleware de la ruta y la validación de la form request, pero no se ejecuta el cuerpo del método del controlador. Por eso es ideal para validaciones en tiempo real durante la entrada del usuario.

Instalación

En Laravel 13 no necesitas instalar adicionalmente laravel/precognition en el backend. Lo único necesario son los paquetes helper del frontend.
  • Vue: laravel-precognition-vue
  • React: laravel-precognition-react
  • Alpine.js: laravel-precognition-alpine
Inertia incluye soporte para Precognition a partir de la versión 2.3. También funciona directamente en Inertia 3. Si usas formularios de Inertia, normalmente no necesitas instalar además laravel-precognition-vue / laravel-precognition-react.

Configuración del backend

Añade el middleware HandlePrecognitiveRequests a la ruta. En la práctica, conviene concentrar las reglas de validación en una form request. Agruparlas en una form request facilita la reutilización de reglas y la separación de responsabilidades.
Si tienes middleware propio con efectos secundarios, sáltalo cuando la solicitud sea Precognition.

Integración en el frontend

Alpine.js (Blade)

Vue (Inertia.js)

React (Inertia.js)

JavaScript puro con Axios

Las librerías de Precognition usan Axios. Si vas a usar una instancia de Axios existente, sustitúyela con client.use().

Control del momento de la validación

Para validar campo a campo usa validate().
Puedes ajustar el tiempo de debounce con setValidationTimeout().
Si quieres validar también los archivos en cada llamada, usa validateFiles().
Los campos de tipo array se validan usando comodines.

Helper de formulario

useForm() te permite manejar de forma unificada el estado de envío y los errores.
  • validating: solicitud de validación en curso
  • processing: envío en curso
  • errors: lista de errores
  • valid('field') / invalid('field'): estado de validación del campo
  • submit(): envío normal

Comparación entre solicitudes normales y solicitudes Precognition

El siguiente diagrama muestra la diferencia entre una solicitud normal y una Precognition.

Enlaces relacionados

Última modificación el 13 de julio de 2026