Laravel News reported on Inertia.js 3.8.0 on October 2, 2026. The release focuses on browser-only components, large PHP integers, form callbacks, optimistic updates, and page restoration after deployments.
return Inertia::render('Orders/Show', [
'id' => $order->id,
])->preserveBigIntegers();Evan Burrell contributed WhenMounted to the React, Vue, and Svelte adapters. It renders a fallback during server-side rendering and the first hydration render, then displays its children after mounting in the browser. This prevents components that access window or document from triggering the SSR error "window is not defined" or causing a hydration mismatch. Vue uses a fallback slot. React accepts a fallback prop and a function for the children, because JSX evaluates ordinary children before WhenMounted renders. A component mounted later during a client-side visit displays its children immediately.
Pascal Baljet added optional handling for integers outside JavaScript's safe range. A 64-bit PHP value such as the Snowflake ID 900719925474099988 can otherwise arrive as a JSON number and become 900719925474100000 in the browser. The server-side feature requires inertia-laravel v3.5.0. Developers can enable preserve_big_integers in config/inertia.php for every response, or use the INERTIA_PRESERVE_BIG_INTEGERS environment variable. A single response can opt in through preserveBigIntegers().
Large values are sent with a {"$bigint":"..."} marker and restored as native BigInt values in the client. Values within the safe range remain regular numbers. The behavior covers the initial page, visits, partial reloads, encrypted history, and SSR. When a BigInt travels back through the router, a form, or Precognition, it is submitted as decimal digits. Laravel's integer validation rule and $request->integer() accept that representation.
The Form component now forwards onHttpException, onNetworkError, onBeforeUpdate, and onFlash to the visit. The properties existed before, but the adapters did not pass them on, so HTTP 500 responses and network failures during Form submissions skipped the callbacks. They now behave like the corresponding useForm callbacks. Returning false from either error callback prevents the global event and the default handling.
Optimistic requests now carry an ID. If an older response arrives after a newer optimistic request has succeeded, Inertia ignores the stale response and avoids rolling back the newer screen state. A failed newer request does not block an older successful response, which can still update the page after the failed request has reverted.
History restoration now checks asset versions after a browser reload during back or forward navigation. Previously, Inertia could restore old props from history state while the new JavaScript bundle was already active. Newly added or renamed props could then be undefined. A version difference now triggers a fresh page load.
The complete GitHub notes compare 3.7.1 with 3.8.0. They also record onk's fix for multi-byte UTF-8 corruption in SSR request-body parsing in #3248, Dependabot's pnpm/action-setup update from 6.0.10 to 6.1.0 in #3261, and fouteox's core-type fix when Axios is absent in #3258. The notes identify #3264 by lazerg, #3245 by pascalbaljet, #3268 by pascalbaljet for server.origin in SSR CSS URLs, and #3239 by ramonmalcolm10 for removing top-level await from the generated SSR bundle.
Further entries cover daleweaver777's Form callback change in #3262, Evan Burrell's WhenMounted work in #3218, CI test improvements by pascalbaljet in #3277, dependency updates in #3278 and #3286, and cleanup of cancelled in-flight prefetches by gianpieropuleo in #3271. The release also handles already-aborted XHR signals in #3273, fixes a React InfiniteScroll scroll jump on Safari and CI flakiness in #3282, records the BigInt implementation in #3237, and silences the state_referenced_locally warning in the Svelte App component in #3287.




Comments
No comments yet — be the first.
Open the discussion
No account or password needed — just enter your e-mail and we’ll send you a one-time sign-in link. First time here? You’re set up automatically.
Your rating will be applied automatically after you sign in.
Check your inbox
We’ve sent a sign-in link to …. Open it on this device — this tab will sign you in automatically.
Nothing arrived? Check your spam folder — and mark the mail as "Not spam" so it lands in your inbox next time.