The 1.0-readiness release: one <Trans> contract everywhere, live extraction and a coverage view. The three framework adapters now share the exact same <Trans> surface and rendering rules, the CLI learns status (how much is left to translate, per locale) and extract --watch (live extraction for bundlers without the Vite plugin), and the last planned pre-1.0 breaking changes land: @verbaly/svelte moves to Svelte 5 only, and React/Vue <Trans> render whitelisted tags as real elements like the rest of the toolkit always did. Two breaking changes, both called out below.
Highlights
<Trans>is now the same component in React, Vue and Svelte. Same props everywhere (id,values,instance,components,richTags,links) and same rendering rules: your custom component wins, then named links, then the safe tag whitelist, and anything unknown degrades to plain text.- Breaking: React and Vue
<Trans>now render whitelisted tags for real. A message likeThe <em>build</em> gateshows a real<em>element, matching Svelte and the DOM interpreter. Before, React and Vue flattened it to plain text. If you relied on that, passrichTags={[]}. - Breaking:
@verbaly/svelterequires Svelte 5. Svelte 4 support is retired while the project is still 0.x. In exchange, the Svelte<Trans>finally gets thecomponentsprop: map a tag in your message to your own component. verbaly statustells you how much is left to translate. One line per language ("es: 45/48 translated (94%)"), no CI noise.verbaly checkstays the build gate.verbaly extract --watchkeeps catalogs and types in sync as you code. Made for webpack, Rspack and Rollup setups, where the Vite plugin's live extraction isn't available.- Easier to give feedback. The README now says exactly where a bug report or a friction report goes, and the issue forms cover all ten packages.
For the full details of this release, see the repository changelog.