What is Precognition
Precognition is a mechanism that runs server-side validation before a form is submitted. You can use your Laravel rules as-is on the frontend without redefining them. Unlike normal requests, Precognition requests execute a route’s middleware and form request validation, but not the controller method body itself. That makes it well-suited to real-time validation as the user types.Installation
In Laravel 13, you don’t need to install the backendlaravel/precognition package.
What you do need is a frontend helper package.
- Vue:
laravel-precognition-vue - React:
laravel-precognition-react - Alpine.js:
laravel-precognition-alpine
Inertia has built-in Precognition support from 2.3, and it also works out of the box in Inertia 3.
When using Inertia forms, you typically don’t need to add
laravel-precognition-vue / laravel-precognition-react.Backend configuration
Add theHandlePrecognitiveRequests middleware to your route.
It’s practical to gather validation rules into a form request.
Consolidating rules into a form request makes reuse and separation of concerns easier.
Frontend integration
Alpine.js (Blade)
Vue (Inertia.js)
React (Inertia.js)
Vanilla JS with Axios
The Precognition library uses Axios. To use your existing Axios instance, swap it in withclient.use().
Controlling validation timing
Usevalidate() to validate individual inputs.
setValidationTimeout().
validateFiles().
Form helper
useForm() handles submission and error state together.
validating: A validation request is in progressprocessing: A submission is in progresserrors: A list of errorsvalid('field')/invalid('field'): The field’s validation statesubmit(): Perform a regular submission