nytodev/inertia-bundle
A Laravel package that simplifies setting up Inertia.js in your applications. It bundles the configuration, middleware, and scaffolding needed to build modern single-page apps with Vue or React while preserving Laravel routing and controllers, so you can get started faster with less boilerplate.
Architecture fit
inertia-laravel 3.x as its reference implementation (the fix notes cite PropsResolver parity). Its value is highest where the backend is PHP but not Laravel (the -bundle naming and docs set point to a Symfony-style integration), or where a team needs a framework-light serializer that mirrors Inertia's wire contract.inertia-laravel remains the default; this package is then a parity reference and a fallback, not a primary dependency. That distinction should be settled before we invest in it.Integration feasibility
once props, errors) and diff them across the bump.Technical risk
once()->until() expiresAt moved from seconds to milliseconds. This is described as a bug fix, and it is — but any consumer that parsed or persisted expiresAt (SSR layer, edge cache rules, custom prop caches, test fixtures) now reads a value ~1000× larger. Treat as a silent behavioral change despite "no breaking changes."errors now serializes as {} instead of []. Any test asserting array shape, or front-end code doing .length / Array.isArray() on errors, will behave differently. Low blast radius, high likelihood of hitting a naive assertion.X-Inertia-Reset keys are now omitted from mergeProps/prependProps/deepMergeProps/matchPropsOn. Correct per protocol, but apps that implicitly relied on the old merge-into behavior for list accumulation (infinite scroll, paginated merge props) will see the client value replace rather than grow. This is the highest user-visible risk in the release.nytodev) with a narrow contributor base — bus-factor and long-term support risk remains the dominant technical concern, not this patch.Key questions
@inertiajs client version do we pin, and does it implement the millisecond expiresAt comparison and {} errors shape? Server and client must move together.expiresAt, or assert on the errors JSON shape?inertia-laravel releases?Stack fit
inertia-laravel and should not be dual-adopted without a specific reason (e.g., a shared package serving both backends).docs/props.md, CLAUDE.md, AGENTS.md) also make the repo viable for AI-assisted contribution — relevant if we plan to carry patches upstream ourselves.Migration path
inertia-laravel or a custom adapter: port per prop category — merge/prepend/deep-merge/match-on, deferred, scroll, once, errors. Note lazy()/LazyProp no longer exist; use optional(). This is the single largest source of mechanical edits, and the docs cleanup in this release makes the requirement unambiguous.Compatibility
expiresAt against Date.now(). Against an older client, the fix is inert — once() props will still re-resolve every visit. Confirm client version before claiming the performance benefit.errors: {} change is protocol-conformant and matches inertia-laravel; older clients that tolerated [] should still work, but our own tests may not.Sequencing
once()->until(), empty errors).Maintenance
inertia-laravel releases, otherwise parity gaps accumulate silently.lazy() references removed) lowers the cost of contributing fixes back — worth using if we hit a gap that blocks us.Support
expiresAt in seconds. Pre-write both into the release note we send to app teams.X-Inertia-Reset behavior is now documented explicitly; point support at docs/props.md rather than re-deriving it.Scaling
once()->until() fix should reduce load: previously every until() prop looked expired, so it re-resolved on every visit. Expect a measurable drop in per-request query/API count on repeat visits for apps using once() — worth instrumenting to confirm the gain rather than assuming it.X-Inertia-Reset also bounds client-side prop growth on merge props, which matters for long-lived sessions and payload size on paginated views.Failure modes
inertia-laravel (this release fixed three such divergences; assume more exist until the documented gaps close).until() expiry, especially with server-side rendering or queued workers generating props.expiresAt in the old unit after upgrade.Ramp-up
How can I help you explore Laravel packages today?