npm.io
0.16.5 • Published 3h ago

@arkstack/inertia

Licence
Version
0.16.5
Deps
1
Size
71 kB
Vulns
0
Weekly
319

@arkstack/inertia

@arkstack/inertia

A runtime-agnostic InertiaJS server-side adapter for Arkstack. Build a single-page app (Vue, React, or Svelte) without an API: controllers return page components and props, and Inertia handles client-side routing. Works with both the Express and H3 drivers.

Install

pnpm add @arkstack/inertia

Then register the middleware in src/config/middleware.ts under before (alongside resora()):

import { inertia, resora } from '@arkstack/driver-express/middlewares' // or @arkstack/driver-h3/middlewares

export default (): MiddlewareConfig => ({
  before: [resora(), inertia()],
})

Publish the config and root template:

ark publish --package @arkstack/inertia

Usage

import { inertia, Inertia } from '@arkstack/inertia'

// Render a page — JSON page object on Inertia visits, full HTML on first load
return inertia('Users/Index', { users: await User.all() })

// Shared props (global at boot, or request-scoped inside a handler)
inertia().share('appName', config('app.name'))

// Partial-reload helpers
inertia('Users/Index', {
  users: await User.all(),
  stats: Inertia.lazy(() => expensiveStats()),   // only on a partial reload that asks for it
  chart: Inertia.defer(() => buildChart()),       // fetched by the client after load
  auth: Inertia.always({ user: request.user }),   // always present, even on partials
})

// Redirects (302 -> 303 for PUT/PATCH/DELETE) and external/full-page visits
Inertia.redirect('/users')
Inertia.location('https://example.com')

Server-side rendering

Set ssr.enabled in src/config/inertia.ts, build an SSR bundle, and run it with the supervised command:

ark inertia:ssr   # runs dist-ssr/ssr.js, restarting it if it crashes

The initial visit is then server-rendered and the client hydrates it; if the SSR server is unreachable the adapter falls back to client-side rendering.

Documentation

See the Inertia guide for the full setup, partial reloads, asset versioning, configuration, and SSR.

Keywords