Announcing Messagevisor v1.0 stable

Today, I am releasing Messagevisor v1.0: the first stable version of the Git based translation management and localization workflow I introduced earlier this year.
Messagevisor now has a stable authoring model, a tested runtime contract, and production ready SDKs for browsers and JavaScript runtimes. Native SDKs for Android, the JVM, and the Apple ecosystem are on the way.
This gives teams a dependable foundation for managing product copy as code while keeping localization, review, and runtime needs together. If AI agents write much of your code, Messagevisor also helps keep translations visible and in sync.
What Messagevisor is#
Messagevisor keeps messages, translations, locale formats, targeting rules, and tests in your Git repository.
You define content in YAML or JSON, review it through pull requests, build compact datafiles in CI, and deliver translations independently of application releases.
The workflow is intentionally familiar to engineering teams:
- Messages hold copy, translations, metadata, and contextual overrides
- Locales define inheritance, direction, and reusable formatting presets
- Segments describe reusable audiences
- Targets decide what belongs in each application datafile
- Sets model development, staging, production, or any other parallel release lane
- Tests and examples make expected behaviour executable
- SDKs evaluate the generated datafiles inside applications
There is no central Messagevisor service that owns your content. Git remains the source of truth, and datafiles are ordinary JSON artifacts that you can publish through your own infrastructure.
A runtime API designed for applications#
The JavaScript SDK's primary entry point is now createMessagevisor():
import { createMessagevisor } from "@messagevisor/sdk";const m = createMessagevisor({ datafile, context: { plan: "pro", },});const greeting = m.translate( "dashboard.greeting", { name: "Ada" });// "Hello, Ada!"Instances support locale and context, direct formatting helpers, defaults, diagnostics and events, and modules. Request scoped child instances can share datafiles and modules while isolating request state.
Learn more in the JavaScript SDK documentation.
Extend it with modules#
Modules extend translation formatting and runtime integration without changing the core datafile contract.
Official modules include:
- ICU MessageFormat
- Interpolation
- Missing translation observation
- Featurevisor integration for using feature and experiment evaluations in overrides
Modules can format or transform translations, connect external evaluations, report diagnostics, and clean up when the SDK closes.
Target only what an application needs#
Targets can select messages and named ICU format presets using exact keys, patterns, or exclusions. They can also keep only formats used by the messages and overrides in a datafile.
That means a web application, an Android application, an iOS application, and an internal administration tool can all consume purpose built artifacts from the same source project without shipping the complete translation catalogue to every client.
Built for developers and agents#
Declarative content is useful to humans, automation, and coding agents for the same reason: intent stays visible and changes remain reviewable.
The Messagevisor skill teaches compatible agents how to inspect a project, update definitions, preserve conventions, and validate their work. Agents can help with repetitive translation work while Git still provides the diff, ownership, and audit trail. Translators and product teams keep the final judgement.
Upgrading from 0.x#
Version 1 includes intentional breaking changes to SDK construction, modules, events, diagnostics, formatter cache ownership, and condition behaviour.
Upgrade the CLI, SDK, modules, and framework packages together. Then rebuild your datafiles and run your Messagevisor and application tests before deploying.
The v1 migration guide explains the changes and suggested upgrade sequence.
What stable means#
Stable does not mean finished.
It means the authoring and runtime contracts can now evolve through deliberate semantic versioning. SDKs have a shared reference point, and breaking behaviour should no longer arrive casually under another 0.x release.
There is still more to explore, including richer review operations, native interchange formats, pull request automation, and an editorial experience in Catalog. Future work can now build on v1 instead of repeatedly changing the foundation underneath users.
Thank you#
Messagevisor moved from an early idea to a stable project quickly, but the goal has stayed the same: make application copy as reviewable, testable, portable, and dependable as the code around it.
If that workflow is useful to your team, try the quick start, read the documentation, and follow the project on GitHub.
Feedback and bug reports are welcome in the issue tracker.