Laravel Precognition Updates are Here


May 24th, 2023

Laravel Precognition Updates are Here

Laravel Precognition was overhauled and ships with a fresh perspective on predicting the outcome of a future HTTP request. The Laravel team has taken the original version and polished it to streamline front-end and server-side validation with popular front-end tools:

The Precognition docs have instructions for using Precognition with Vue, React , Vue + Inertia.js, and React + Inertia.js to streamline validation. Regardless of the front-end technology you use, routes that tap into Precognition only need to provide the framework-provided middleware:

use App\Http\Requests\CreateUserRequest;
use Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests;
Route::post('/users', function (CreateUserRequest $request) {
// ...

Depending on your front-end technology, installing the accompanying NPM module makes validation with Precognition a breeze. For example, the following is a form component with precognition validation using the laravel-precognition-vue module:

<script setup>
import { useForm } from 'laravel-precognition-vue';
const form = useForm('post', '/users', {
name: '',
email: '',
const submit = () => form.submit();
<form @submit.prevent="submit">
<label for="name">Name</label>
<div v-if="form.invalid('name')">
{{ }}
<label for="email">Email</label>
<div v-if="form.invalid('email')">
{{ }}
<button>Create User</button>

As the user fills out the form, Precognition will handle live validation output powered by Laravel validation rules on the server-side form request.

The front-end also has some useful methods to determine the validation of fields and general things about validation:

.then(response => {
// ...
.catch(error => {
// ...

Check out the documentation for other features like $request->isPrecognative() in the server-side form request, which you can use to manage side effects and adjust validation rules.

Filed in:

Paul Redmond

Full stack web developer. Author of Lumen Programming Guide and Docker for PHP Developers.