Skip to content

Framework matrix

Six server frameworks. Vite. Two backend runtimes. One mental model.

Frontend and full-stack hosts use first-party adapters and verified example applications. Hono and Express are a separate backend path: they use the shared runtime directly with request-local locale resolution. Start with the integration boundary you own, then inspect its exact setup and verification evidence.

01 — Matrix

The 6 × 4 server matrix, plus Vite.

FrameworkCookieRouteSubdomainTLD
Next.js
✓ verified
✓ verified
✓ verified
✓ verified
public host pending
TanStack Start
✓ verified
✓ verified
✓ verified
✓ verified
public host pending
SolidStart
✓ verified
✓ verified
✓ verified
✓ verified
public host pending
Waku
✓ verified
✓ verified
✓ verified
✓ verified
public host pending
React Router
✓ verified
✓ verified
✓ verified
✓ verified
public host pending
Remix v3
✓ verified
public host pending
✓ verified
public host pending
✓ verified
public host pending
✓ verified
public host pending

public demo · ◌ public host pending · ✓ verified in CI — Remix v3 is currently a local/CI proof surface.

All 25 apps are smoke-checked on relevant pull requests and main pushes. The 21 browser-capable examples — the20 established UI-adapter matrix apps plus the Vite MDX proof — cover SSR output, locale switching, and localized server actions or functions in weekly or manual Playwright runs; the four Remix v3 apps cover server responses and locale handling through smoke checks. Versioned screenshots cover the 20 UI-adapter examples; Vite has no capture artifact. Cookie, route, and subdomain demos are publicly hosted for the five browser-verified frameworks; the TLD domains are still being provisioned, and Remix v3 has no public hosting yet. Hosting status is documented in the repo's demo-deployments guide.

02 — Strategies

Pick the locale strategy your product needs — not the one your framework dictates.

Cookie

One URL for all locales. Best for apps behind login where SEO is irrelevant and switching should be instant.

Route segment

/de/checkout-style paths. The SEO-friendly default for public content with indexable localized pages.

Subdomain

de.example.com. Clean separation per market, works well with regional CDNs and analytics splits.

Top-level domain

example.de vs example.com. Maximum market trust; Palamedes maps each domain to its locale.

03 — Per framework

Your stack, specifically.

Next.js

examples/nextjs-*

App Router with server components and server actions. The @palamedes/next-plugin handles the host-specific build wiring; authoring, catalogs, and runtime access stay on the shared model.

cookieroutesubdomain◌ tldi18n guide →source →

TanStack Start

examples/tanstack-*

Server functions and file-based routing, integrated through @palamedes/vite-plugin. Locale resolution runs in a server function; the client stays island-light.

cookieroutesubdomain◌ tldi18n guide →source →

SolidStart

examples/solidstart-*

Solid-native rich-message rendering with @palamedes/solid — the same macro authoring, hook-free lookup, and catalogs as React.

cookieroutesubdomain◌ tldi18n guide →source →

Waku

examples/waku-*

Minimal RSC framework. Waku exercises the request-local runtime model through a different server integration, which is why it belongs in the matrix.

cookieroutesubdomain◌ tldi18n guide →source →

React Router

examples/react-router-*

Framework-mode React Router with loaders and actions. The classic SPA-plus-SSR shape, same catalogs, same runtime.

cookieroutesubdomain◌ tldi18n guide →source →

Remix v3

examples/remix-*

The new server-first Remix stack — not React Router Framework Mode and not React. It is currently a local and CI smoke-proof surface with explicit server-only boundaries.

◌ local / CIi18n guide →source →

Vite

packages/vite-plugin

The shared build integration behind the TanStack Start, SolidStart, Waku, and React Router families. Use it directly with React or Solid for macro transforms, PO imports, and build diagnostics.

i18n guide →source →

04 — Backend

Backend services are a separate integration path.

Hono and Express do not use a frontend adapter. They call the shared runtime with request-local locale resolution, so transactional emails, API errors, and PDF generation use the same catalogs without pretending to be framework UI.

See your framework speaking three languages — right now.