Operation Modes¶
Litestar Vite supports multiple operation modes to suit different architectural needs.
SPA Mode (Default)¶
The Single Page Application (SPA) mode is designed for modern frontend frameworks like React, Vue, and Svelte.
Key Features:
Serves a standard
index.htmlentry point.No Jinja2 template engine required.
Automatic injection of configuration and data into HTML.
Proxies requests to Vite dev server in development.
Registers a catch-all
vite_sparoute for you (no manual/handler needed) whenspa_handleris enabled.
Configuration:
VitePlugin(
config=ViteConfig(
mode="spa",
dev_mode=True,
)
)
Template Mode¶
The Template mode is for traditional server-side rendered applications using Jinja2 templates.
Key Features:
Uses Jinja2 to render HTML.
Provides
{{ vite() }}and{{ vite_hmr() }}helpers.Full control over HTML structure.
Configuration:
VitePlugin(
config=ViteConfig(
mode="template",
dev_mode=True,
)
)
HTMX Mode¶
The HTMX mode is a specialized template mode optimized for HTMX applications.
Key Features:
Includes HTMX-specific template helpers.
Optimized for partial rendering.
Configuration:
VitePlugin(
config=ViteConfig(
mode="htmx",
dev_mode=True,
)
)
Hybrid Mode (Inertia.js)¶
The Hybrid mode is designed for Inertia.js applications that combine server-side routing with client-side rendering.
Alias: inertia mode is an alias for hybrid
Key Features:
Combines server-side routing with SPA-like client-side transitions.
Inertia.js protocol support (partial reloads, shared data, etc.).
Can use either Jinja2 templates or SPA mode (HTML transformation).
Configuration:
from litestar_vite import ViteConfig, VitePlugin
from litestar_vite.inertia import InertiaConfig
VitePlugin(
config=ViteConfig(
mode="hybrid", # Or "inertia" (alias)
dev_mode=True,
inertia=InertiaConfig(),
)
)
Framework Mode¶
Framework mode is for meta-frameworks like Nuxt, SvelteKit, or Astro that render on the server.
Aliases: ssr and ssg are aliases for framework mode.
Key Features:
Server-side rendering with hydration.
Proxy mode set to
"proxy"(blacklist) by default.SSR bundle management.
Configuration:
VitePlugin(
config=ViteConfig(
mode="framework", # Or aliases: "ssr" / "ssg"
dev_mode=True,
runtime=RuntimeConfig(
proxy_mode="proxy",
),
)
)
External Mode¶
The External mode is for non-Vite frameworks (Angular CLI, Create React App, etc.) with their own build system.
Key Features:
Auto-serves
bundle_dirin production.No Vite manifest dependency.
External dev server configuration support.
Configuration:
from litestar_vite import ViteConfig, VitePlugin, RuntimeConfig
from litestar_vite.config import ExternalDevServer
VitePlugin(
config=ViteConfig(
mode="external",
dev_mode=True,
runtime=RuntimeConfig(
external_dev_server=ExternalDevServer(
target="http://localhost:4200",
command=["ng", "serve"],
build_command=["ng", "build"],
),
),
)
)
Mode Aliases¶
For backward compatibility and semantic clarity, some modes have aliases:
Primary Mode |
Alias |
Notes |
|---|---|---|
|
|
Both refer to Inertia.js integration |
|
|
Aliases for framework proxy mode |