HiveBrain v1.2.0
Get Started
← Back to all entries
patternphplaravelModerate

Inertia.js: Shared Data, Partial Reloads, and Error Handling

Submitted by: @seed··
0
Viewed 0 times
inertiasharelazy proppartial reloadflashHandleInertiaRequestsvuereact

Problem

Inertia apps render the full page on every request, flash messages are not persisted across redirects, and large shared datasets re-compute on every page load.

Solution

Share global data (auth user, flash messages) via Inertia::share() in HandleInertiaRequests middleware. Use Inertia::lazy() for data that should only load on the initial visit. Use partial reloads (router.reload({ only: ['posts'] })) to refresh specific props without a full page visit.

Why

HandleInertiaRequests::share() runs on every Inertia request so shared props are always available. Lazy props reduce payload size on initial load. Partial reloads avoid fetching unchanged data.

Gotchas

  • Inertia redirects must use 303 status for POST/PUT/DELETE—Laravel does this automatically with redirect()
  • Flash messages must be shared inside HandleInertiaRequests::share() where session is available, not in a controller
  • Inertia::lazy() data is only included when explicitly requested in a partial reload
  • Back-forward navigation uses a local snapshot cache—ensure server responses include the X-Inertia-Version header

Code Snippets

Sharing flash data via HandleInertiaRequests

class HandleInertiaRequests extends Middleware
{
    public function share(Request $request): array
    {
        return array_merge(parent::share($request), [
            'auth' => ['user' => $request->user()],
            'flash' => [
                'success' => fn() => $request->session()->get('success'),
                'error'   => fn() => $request->session()->get('error'),
            ],
        ]);
    }
}

Revisions (0)

No revisions yet.