Laravel News a présenté Inertia.js 3.8.0 le 2 octobre 2026. Cette version traite les composants dépendants du navigateur, les grands entiers PHP, les callbacks de formulaire, les mises à jour optimistes et la restauration des pages après un déploiement.

BigInt response
return Inertia::render('Orders/Show', [
 'id' => $order->id,
])->preserveBigIntegers();

Evan Burrell a ajouté WhenMounted aux adaptateurs React, Vue et Svelte. Le composant affiche un contenu de secours pendant le rendu serveur et lors du premier rendu d'hydratation. Il affiche ensuite ses enfants une fois monté dans le navigateur. Les composants qui lisent window ou document ne provoquent donc plus l'erreur SSR "window is not defined". Le HTML initial reste aussi identique entre le serveur et le navigateur. Vue utilise un slot fallback. React reçoit ce contenu en prop et les enfants sous forme de fonction, car JSX évalue des enfants ordinaires avant le rendu de WhenMounted. Lors d'un montage ultérieur après une visite côté client, les enfants apparaissent immédiatement.

Pascal Baljet a ajouté une prise en charge facultative des entiers situés au-delà de la plage sûre de JavaScript. Une valeur PHP sur 64 bits telle que l'identifiant Snowflake 900719925474099988 peut sinon être transmise comme nombre JSON et devenir 900719925474100000 dans le navigateur. Cette fonction côté serveur nécessite inertia-laravel v3.5.0. Elle peut être activée pour toutes les réponses avec preserve_big_integers dans config/inertia.php ou via INERTIA_PRESERVE_BIG_INTEGERS. Une seule réponse peut utiliser preserveBigIntegers().

Les grandes valeurs sont encodées avec le marqueur {"$bigint":"..."}, puis recréées en valeurs BigInt natives côté client. Les valeurs qui restent dans la plage sûre conservent le type number. La prise en charge couvre la page initiale, les visites, les rechargements partiels, l'historique chiffré et le SSR. Lorsqu'un BigInt repart par le routeur, un formulaire ou Precognition, Inertia l'envoie comme une suite de chiffres. La règle de validation integer de Laravel et $request->integer() acceptent ce format.

Le composant Form transmet maintenant onHttpException, onNetworkError, onBeforeUpdate et onFlash à la visite. Ces props existaient déjà, mais les adaptateurs ne les transmettaient pas. Les réponses HTTP 500 et les erreurs réseau lors d'une soumission Form n'appelaient donc pas les callbacks. Ils fonctionnent désormais comme ceux de useForm. Un retour false depuis l'un des callbacks d'erreur bloque l'événement global et le traitement par défaut.

Les requêtes optimistes possèdent désormais un identifiant. Si la réponse d'une requête ancienne arrive après la réussite d'une requête optimiste plus récente, Inertia ignore cette réponse périmée. L'état plus récent ne revient ainsi pas en arrière. Une requête récente qui échoue ne bloque pas la réponse réussie d'une requête plus ancienne. Celle-ci peut encore mettre la page à jour après le rollback de l'échec.

Inertia compare maintenant les versions des assets après un rechargement du document lors d'une navigation arrière ou avant. Auparavant, l'état de l'historique pouvait fournir d'anciennes props alors que le nouveau bundle JavaScript était déjà chargé. Des props ajoutées ou renommées pouvaient alors être undefined. Une différence de version déclenche désormais un chargement frais de la page.

Les notes GitHub complètes comparent 3.7.1 et 3.8.0. Elles mentionnent la correction par onk de la corruption de l'UTF-8 multioctet lors de l'analyse du corps des requêtes SSR dans #3248, la mise à jour de pnpm/action-setup de 6.0.10 à 6.1.0 par Dependabot dans #3261 et la correction des types principaux sans Axios par fouteox dans #3258. Elles recensent aussi #3264 par lazerg, #3245 par pascalbaljet, #3268 par pascalbaljet pour utiliser server.origin dans les URL CSS SSR et #3239 par ramonmalcolm10 pour supprimer top-level await du bundle SSR généré.

Les autres entrées couvrent la correction Form de daleweaver777 dans #3262, le travail WhenMounted d'Evan Burrell dans #3218, les améliorations des tests CI par pascalbaljet dans #3277, les mises à jour de dépendances dans #3278 et #3286 ainsi que le nettoyage des prefetches annulés en cours par gianpieropuleo dans #3271. La version gère aussi les signaux XHR déjà annulés dans #3273, corrige un saut de défilement de React InfiniteScroll sous Safari et une instabilité de la CI dans #3282, reprend l'implémentation BigInt de #3237 et supprime l'avertissement state_referenced_locally du composant App de Svelte dans #3287.