Skip to content

Release v0.18.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 07:43
99b6541

Nuxt joins the family. The second meta-framework integration: @verbaly/nuxt is a zero-config Nuxt module — one line in nuxt.config wires the Vite plugin, negotiates the locale per request (cookie → Accept-Language → fallback), awaits the catalog before render and keeps <html lang> in sync, so pages arrive translated and hydrate flash-free. Built entirely on the 0.16/0.17 primitives (resolveRequestLocale, createRequestInstance) with zero dependency on nuxt or @nuxt/kit. switchLocale() moves to core so both SSR integrations share it (@verbaly/sveltekit re-exports — nothing breaks). No breaking changes.

Highlights

  • New package @verbaly/nuxt — Nuxt SSR in one line: modules: ['@verbaly/nuxt']. The module wires @verbaly/vite (live extraction + virtual:verbaly), negotiates the visitor's language per request and hydrates the client with the same locale and catalog — no flash of untranslated text, no hydration mismatch, no locale leaking between concurrent users.
  • Zero framework lock — no @nuxt/kit, no nuxt peer: the module is typed structurally (same approach that keeps @verbaly/sveltekit free of @sveltejs/kit), verified against the real NuxtModule type and a real Nuxt 4 app.
  • switchLocale() is now a core export — the client-side language switch (catalog first, then locale, then cookie + <html lang>) lives once in verbaly and serves SvelteKit, Nuxt and hand-rolled setups. @verbaly/sveltekit re-exports it: existing imports keep working unchanged.
  • Client-only apps covered too — with ssr: false the module still resolves the locale in the browser (cookie → navigator.languages → fallback).
  • Support Verbaly — GitHub Sponsors is live: github.com/sponsors/AronSoto.

For the full details of this release, see the repository changelog.