Laravel + Inertia.js — moderne full-stack e-commerce apps
Terug naar blog

Laravel + Inertia.js — moderne full-stack e-commerce apps

AuthorRuthger Idema
10 juni 20269 min leestijd

Laravel + Inertia.js combineert een SPA-ervaring met Laravel zonder losse API. Leer wanneer je Inertia kiest, hoe auth werkt en welke use cases echt lonen.

Laravel + Inertia.js — moderne full-stack e-commerce apps

Drie afzonderlijke codebases voor één e-commerce platform: een Laravel backend, een Vue SPA, en een REST API die ze verbindt. Dat is hoe veel teams hun klantportaal of B2B-tool bouwen. Het resultaat: dubbel onderhoud, authentication op twee plekken, en een API die alleen intern wordt gebruikt. Inertia.js snijdt die laag weg.

Met Laravel + Inertia.js bouw je een volwaardige SPA-ervaring zonder een losse API te schrijven. Controllers sturen direct page components aan. Routing, middleware, sessions, auth — alles blijft in Laravel. In de praktijk zien wij bij klanten een reductie van 30–40% in setup-tijd op nieuwe full-stack projecten ten opzichte van een klassieke decoupled aanpak.


Wat Inertia.js precies doet

Inertia is geen framework. Het is een protocol dat Laravel-controllers verbindt met frontend components (Vue, React, of Svelte). Bij een gewone navigatie stuurt Inertia een JSON-response met de component-naam en props. De client swisselt het component zonder een full page reload.

Het resultaat voelt als een SPA. Maar je schrijft geen API-endpoints, geen serializers, geen token-management voor je eigen frontend. Laravel Sanctum of gewone session-auth werkt direct.

php
// routes/web.php
Route::middleware('auth')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
    Route::get('/orders', [OrderController::class, 'index'])->name('orders.index');
});

// app/Http/Controllers/DashboardController.php
use Inertia\Inertia;

class DashboardController extends Controller
{
    public function index(): \Inertia\Response
    {
        return Inertia::render('Dashboard/Index', [
            'stats'        => OrderStats::forUser(auth()->user()),
            'recentOrders' => Order::latest()->limit(10)->get(),
        ]);
    }
}

De Vue- of React-component ontvangt stats en recentOrders als props. Geen fetch, geen useEffect, geen loading state voor initiële data.


Inertia vs losse SPA + API: wanneer kies je wat?

Dit is de vraag die we het vaakst horen. Het eerlijke antwoord: Inertia is niet altijd de juiste keuze.

SituatieInertia + LaravelLosse SPA + API
Klantportaal, dashboard, B2B-toolAangeradenOverkill
Publieke API die derden gebruikenNiet geschiktAangeraden
Mobile app + web dezelfde backendNiet geschiktAangeraden
Team heeft alleen Laravel-kennisSterk aangeradenLeercurve API-design
SEO-zware marketing-pagina'sGebruik SSR of aparte pageNuxt/Next beter
Meerdere frontends op één backendNiet geschiktAangeraden

Heb je een backend die ook een mobiele app bedient, of wil je een publieke API aanbieden? Dan bouw je sowieso een API — en heeft Inertia weinig meerwaarde. Maar voor tools die alleen door jouw frontend worden gebruikt, is een REST API pure overhead.


Vue vs React adapter

Inertia werkt met beide. De keuze hangt af van je team, niet van Inertia zelf.

Vue 3 adapter (@inertiajs/vue3) is de meest gebruikte in de Laravel-community. Composition API,