Changelog
Babelize release notes by version and date: new features, improvements and bug fixes across the platform, with the newest release first.
Welcome to the Babelize changelog. Here you'll find a record of what's new, what's improved, and what's fixed.
[v2.2.0] - 2026-10-16
React Native and Expo apps can be translated (beta), pull requests change only the lines that need to change, and lists your code also uses as data are translated where they're shown.
New
- React Native and Expo (beta) — Expo Router, classic Expo and bare React Native apps are translated end to end: translations are bundled into the app, the device language picks the locale (
expo-localizationorreact-native-localize), your entry point imports the i18n setup, and screen titles,Alerttext and accessibility labels are translated. See React Native & Expo - Babelize SDK in React Native —
@babelize/sdkruns in React Native with adetectLocaleoption, and the new@babelize/metroplugin writes the translations before Metro bundles. See React Native & Expo in the SDK docs - Monorepos — when the repository root isn't an app, the app package (for example
apps/mobile) is translated, not the root - Organizations that restrict third-party apps — when your GitHub organization blocks the Babelize app or requires single sign-on, adding the repository explains why and links to installing the Babelize GitHub App or requesting approval. With the App installed, Babelize reads the repository once GitHub confirms your account can
- Re-translate everything — schedule it in project settings, or turn it on in the Run dialog: the next run translates every string again instead of reusing earlier translations (and uses credits for all of them)
- Redesigned project settings — sections for general settings, languages and the translation engine, language chips, an explicit Automatic engine option, a live preview of date, price and number formats, and Save enabled only when something changed
Improved
- Static HTML/CSS/JS sites are generally supported — no longer in beta. Vue and React Native remain in beta
- Pull requests change only what they need to — only lines with translated text change, plus the translation hook and import. Formatting, line endings and indentation stay as you wrote them, and a re-run changes nothing
- Lists that are also data — a list shown as chips or options and also saved or sent to your API (
NICHES, plan sizes) stays as you wrote it: a map from each value to its translation key is added next to it, and only what's displayed is translated - Plurals from your code —
{count} item{count === 1 ? '' : 's'}becomes one plural message, translated form by form, instead of a word with an English "s" - Clearer messages for translators — placeholders are named after what they show (
{dealEndsAt}rather than{0}), and the cloud translator keeps line breaks
Bug Fixes
- Data is no longer translated — colors, roles, statuses, icon names, storage folders, object keys, TypeScript types, ISO dates and codes such as GST numbers were sometimes treated as text, which could break styling or send translated values to your API
- Line breaks —
\nin a template string is a real line break in the message, not a backslash and an n - Static sites: pages in subfolders — pages such as
blog/post.htmlnow load../i18n.js, so they translate like the home page. Re-running repoints pages from earlier runs - Static sites: page titles and descriptions —
<title>and the description, Open Graph and Twitter<meta>tags are translated too - Static sites: language list — the generated
i18n.jslists your source and target languages, so the switcher and the fallback to the source language work
[v2.1.0] - 2026-10-12
A large release: translate locally without an account, cancel runs, import and export translation memory, manage your subscription yourself, and Django out of beta. It also closes a full audit of billing, projects, runs, accounts and storage.
New
babelize translate— local translation — translate a project straight into your working tree from the CLI, with no Babelize account. Pair it with--reportfor a QA report file and--allow-partialwhen a few strings may failbabelize checkfor CI — fails the build when locale files are missing keys or a translation broke a placeholder- MCP workflow tools —
babelize_analyze,babelize_check,babelize_translateandbabelize_reviewlet Claude Code, Cursor and Codex localize a project locally. See MCP server - Cancel a run — stop a queued or running run from the dashboard or with
babelize babels cancel <id>. You're only charged for strings it had already translated - Run history — filter by status and trigger, search across several projects, page through every run, and see who started each one. Run details show logs in order and only that run's warnings
- Translation memory import and export — export as TMX or CSV, and import a CSV in merge mode (adds and updates entries) or replace mode (replaces this project's entries). Invalid rows are skipped and listed with their row number
- Manage your subscription — the billing page shows when your plan renews, lets you cancel at the end of the period or resume, and opens Dodo's portal for your payment method and invoices
- Replace a ZIP project's source — upload a new archive for an existing ZIP project
- Django is generally supported — no longer in beta, verified end to end and listed next to React and Next.js. Vue and static HTML remain in beta. Limitations are on the Django page
- JSX sentences as one message — text, values and inline elements such as links in one sentence become a single translatable string, so translations can reorder words naturally
- Plural messages with the cloud translator — ICU plural and select messages are translated branch by branch
- Translation problems per run — each run lists strings that failed or need review, and failed strings are retried on the next run
- Live project chat — comments and replies update in real time
Improved
- Translation quality — a curated UI dictionary (now including Polish) for common interface words, the source language is passed to the translator, and placeholders are protected so they come back intact
- Glossary — terms are enforced without touching placeholders or URLs, CSV import can merge, and glossary commands are available in the CLI and MCP server
- Unsupported frameworks are refused up front — a Laravel, Rails, Flutter or Angular project is turned away with the framework named, instead of failing on the first run
- Python package managers — pip, Poetry, Pipenv, uv and PDM are shown on the project page
Bug Fixes
- Downloads keep every translation — after a re-run that reused earlier translations, the downloaded locale files could contain only that run's new strings
- Generated files are left alone — a re-run could rewrite Babelize's own i18n config and break the app
- Navigation links stay separate — a row of links (Shop, Cart, Contact) was grouped into one string and could fail to translate
- One failing string no longer fails a run — a re-run whose only new string failed was marked Failed, even though everything else was ready
- Pull requests include every change — PRs now carry every file the run changed and are built on the commit the run started from. Update PR reflects the PR's real languages
- Runs can't get stuck — one live run per project, a real time limit, and every failure ends the run cleanly. A failed re-run keeps your last good output
- Deleted projects stay deleted — they disappear everywhere and are removed for good after 30 days. Archived projects are read-only, and restoring checks the owner's plan
- Project files — each project's files now live in one folder; downloads are written safely, and cleanup never deletes translation history
- Removing a language — failed with a server error
- Team invites on paid plans — owners who had changed plan could be told their plan only allowed the owner
- Email sign-in — showed your email instead of your name and avatar
- Notifications — mark all as read keeps the list, the unread badge is accurate, and links go to the right place
- Billing — repeated payment webhooks are handled once, refunds and disputes appear in your history, credit reservations settle exactly once, and plans granted to an account show their end date
Security
- Billing data — billing tables and credit functions can only be changed by the server
- Connected accounts — GitHub and Google tokens are encrypted at rest; your own AI provider keys are no longer cached outside the database
- Accounts — deleting your account cancels billing and revokes sessions and API keys, with a 30-day window to restore it. Shared projects pass to a teammate instead of being left without an owner
- Profiles and teams — closed gaps that let someone read another user's profile, take over an email address, or promote themselves to project owner
Changes worth knowing
- Billing counts translations produced — runs are charged for strings actually translated, not for every string found. Cancelled or timed-out runs are charged for what they translated before stopping
- Re-run once before your next pull request — project files moved to a new layout, so run each project once before raising a PR
- Some older ZIP projects need a re-upload — if a run reports that the project's archive is missing, use Replace source
- Locale and currency preferences are hidden until they apply across the app
- Packages —
@babelize/cli1.1.3,@babelize/engine0.1.2 and@babelize/types0.1.2. The CLI now respects a saved API URL, prints clean JSON with--json, fails clearly in non-interactive mode, and uses consistent exit codes - License — the repository and published packages are Apache-2.0
[v2.0.7] - 2026-09-29
A bug fix release. The headline is sign-in: signing in with GitHub, Google or GitLab had stopped working.
Bug Fixes
- OAuth sign-in repaired — signing in with GitHub, Google or GitLab landed back on the sign-in page with
?expired=true. The session is issued as a cookie, and the dashboard's proxy for the OAuth callback was dropping that cookie before it reached the browser, so the sign-in completed and then immediately had nothing to show for it. Email and password sign-in was never affected - Onboarding no longer redirects — finishing or skipping the welcome dialog left you on the import wizard rather than the dashboard you were already looking at
Changes worth knowing
- Refreshed onboarding — the welcome dialog is a two-column layout now, and it stays out of your way: finishing it returns you to the dashboard
- Theme-aware favicon — the tab icon follows your browser's light or dark theme
- Shared brand assets — the logos live in one place in the repo instead of a copy per app
[v2.0.6] - 2026-09-23
A bug fix release. No new features — this one is security hardening and correctness, following a full audit of the platform.
Bug Fixes
- Admin pages restored — several admin screens (user roles, subscription languages, role management) returned "Forbidden" to genuine admins. The permission check behind them queried a column that does not exist, so it answered "not an admin" for everyone. Those endpoints work now
- Account data showing as missing — accounts created with email and later linked to Google or GitHub ended up with two identities, and projects, subscriptions and billing history could appear missing. Affected accounts are reconciled and the cause is fixed, so it cannot recur
- Notifications update live — the notification bell captured your runs once at page load and never refreshed, so runs finishing later never appeared. It now reflects current activity
- Real-time updates after reconnect — when the live connection dropped, project and run updates would silently stop resubscribing. They now resume correctly
- No more dashboard flash — protected pages are checked before rendering, so signed-out visitors are redirected instead of briefly seeing the app shell
- Uploads — a crafted ZIP could write files outside its workspace during extraction. Archive handling is now bounded to the project workspace
- Payment webhooks — a duplicate webhook route could never verify its signature. Both provider URLs now reach the verified handler
- Translation memory and billing history are paginated instead of loading every row at once
Security
- Live updates — the real-time connection accepted a token without verifying its signature, meaning a forged token could subscribe to another account's runs. Signature verification is now mandatory
- Project insights — insights for any project could be read by any signed-in user who knew its ID. Now restricted to project members
- Request protection — CSRF tokens are signed by the server, so a token we did not issue is rejected. The protection can no longer be disabled in production by configuration
- Access tokens — no longer stored in browser storage, where any script on the page could read them
- Database access rules — row level security added to the last three unprotected tables, including the one that records who is an admin. Internal fallbacks that could bypass these rules have been removed
- Rate limiting — could be bypassed by rotating a request header; limits now derive from the real client address and fail closed when quota state is unknown
Changes worth knowing
- Runtime SDK translation now consumes AI credits.
POST /v1/translatewas previously unmetered. If you use@babelize/sdkfor runtime translation, it now draws on your credit balance like any other translation - One run per project at a time. Starting a run while another is in progress returns
409 RUN_IN_PROGRESSinstead of both runs corrupting each other's workspace - Paginated responses. Translation memory and billing history now accept
?page=and?limit=(defaultpage=1; defaultlimitis 100 for translation memory and 50 for billing history). Clients that expected every row in one response should page - Next.js 16 —
@babelize/sdkand@babelize/nextnow declare support for Next 16
[v2.0.5] - 2026-08-26
Features
- Single-package SDK — React and Next.js bindings are now subpath exports of
@babelize/sdk(@babelize/sdk/react,@babelize/sdk/next). One install for React, Next, or vanilla apps.@babelize/sdk-reactand@babelize/sdk-nextare deprecated in favor of the subpaths - ICU MessageFormat —
babelize.icu()translates ICU messages (plural, select, selectordinal, nested) while preserving structure, placeholders,#pound, and number/date/time formatters. Exposed onuseBabelize()in React. See the ICU guide - Full CLDR plural forms —
babelize.p()now requests all six CLDR forms (zero/one/two/few/many/other), so Polish, Arabic, and Russian get correctfew/many/zero/twotranslations instead of falling back to the generic plural. The Next.js build plugin now extracts plurals too - CLI CI safety — the CLI is now pipeline-safe: cancelled prompts exit
128(never0), a global--yes/--non-interactiveflag plusCIauto-detection prevents prompts from hanging,--passwordis a registeredauth login/signupoption, andrun status --watch --jsonemits final JSON. See CI/CD - Shared scanner — new
@babelize/scannerpackage shared by the Vite and Next build plugins (no more extraction drift between them)
Bug Fixes
- Extraction reliability — identical JSX labels at different lines are all extracted (dedup by location, not text); Vue templates handle multiline text and normalize
{{ var }}→{var}; HTMLdata-i18nis honored on any ancestor; CLI and MCPscantools are drift-guarded to stay identical - NLLB output artifacts — FLORES language tokens (
eng_Latn) and the unknown-token marker⁇(U+2047) are stripped at both the Rust translator and the backend safety net, so translated output is clean - API key docs — corrected
api-keysCLI docs to match the real commands (api-keys babelize create <name>)
[v2.0.4] - 2026-07-28
Features
- Persistent Downloads — Translation ZIP files now stay accessible in your dashboard until you delete them (auto-cleaned after 30 days)
Bug Fixes
- Translation Quality — Fixed edge cases where some strings weren't extracted or translated correctly, giving you consistent results across all frameworks
- Download Reliability — Fixed PDF and binary file downloads through the proxy, especially for private GitHub repositories
- Login & Permissions — Fixed session conflicts when switching between multiple accounts, and resolved 403 errors that could incorrectly block access to your projects
- Dashboard Stability — Fixed 404 and 403 errors on project and subscription pages, profile display issues, and cases where failure messages weren't showing properly
- API Proxy & Routing — Fixed WebSocket connections and provider token validation to work reliably on Railway deployments
- Code Quality — Over 200 code health improvements under the hood for a faster, more stable Babelize
[v2.0.3] - 2026-07-17
Features
- Vue.js Support — Babelize now works with Vue Single File Components (.vue files), including automatic extraction, injection, and vue-i18n setup
- Date & Currency Localization — Intl-based formatting for dates, currencies, and numbers is now detected and localised automatically
- More MCP & CLI Tools — 23 new MCP tools and 4 new CLI commands for deeper IDE and terminal integration
- API Key Limits — Set usage limits on API keys with real-time tracking in the dashboard
Bug Fixes
- Translator Reliability — 16+ fixes for translation quality including wrong-language detection, fallback to HuggingFace when needed, and prevention of gibberish translations
- CLI Authentication — Fixed login hanging on macOS, token refresh issues, and added a timeout guard so you never get stuck
- Dashboard Fixes — Fixed API usage not tracking, API keys not showing, project access checks, OAuth errors, and several other dashboard quirks
- Performance — Translations now run faster with batch processing and configurable threading for the translation engine
[v2.0.2] - 2026-07-01
Features
- Static Site Support — Translate HTML, CSS, and JavaScript projects through the same Babelize engine
- ZIP Upload — Upload entire projects as ZIP files instead of importing files one by one
- Email Overhaul — Redesigned email notifications that reliably deliver translation completions, invitations, and account alerts
- Admin Monitoring — New dashboard for real-time system health, user activity, and performance insights
Bug Fixes
- Translator Stability — Fixed six critical issues that could crash the translation server
- OAuth & Login — Fixed token expiry, refresh loops, and cascading failures in the API key auth system
- Dashboard Consistency — Fixed missing provider icons, stale sync buttons, and theme flickering
- Onboarding Flow — Smoother signup with deduplicated API calls and corrected chart colors
[v2.0.1] - 2026-06-27
Features
- Notifications — Real-time notifications for translation completions, repo updates, and system alerts
- API Usage Graphs — New dashboard charts showing your API request consumption
- Admin Panel — Enhanced admin dashboard with user management and role controls
- Project Archiving — Archive old projects to keep your workspace clean
- GitHub PR Creation — CLI can now create pull requests directly from translation runs
- Billing Integration — Dodo Payments support with yearly subscription options
- User Settings — New settings page with security, preferences, and API key management
Bug Fixes
- Double Header UI — Fixed layout duplication causing nested headers across the dashboard
- Security — Fixed IDOR vulnerability, CSRF in API key generation, and resolved 107 dependency vulnerabilities
- Translator Engine — Fixed NLLB engine crashes and tokenizer misconfiguration
- CLI — Fixed OAuth callback routing and auth flow reliability
- Glossary — Fixed type duplication, pagination, and CSV import bugs
- Docs — Fixed redirect links and stale documentation references
[v2.0.0] - 2026-05-15
Features
- MCP Server — Released
@babelize/mcpso Cursor, Claude Desktop, and opencode can scan, translate, and query projects directly from your IDE - Glossary — Define "Never Translate" and "Always Translate As" terms with CSV import/export
- Translation Memory — Reuse approved translations across runs for consistency and lower costs
- Brand Voice — Configure a custom brand voice for translations that match your tone
- RTL Support — Full support for right-to-left languages including Arabic
- Pricing Overhaul — New plans (Free, Starter, Growth, Studio) with expanded credits
- BYOK — Bring your own API key to skip credit consumption entirely
- Notifications — Real-time system-wide notifications for syncs, updates, and engine status
Bug Fixes
- Fixed silent failures when closing the translation dialog
- Fixed checkout flow using hardcoded IDs instead of database-driven plan IDs
- Fixed null pointer crashes across multiple controllers
- Fixed RLS bypass vulnerabilities with scoped database clients
- Fixed WebSocket stale connections
- Fixed rate limiter and circuit breaker edge cases
- Fixed subscription expiry worker and invitation bugs
- Stabilized CI test failures caused by test isolation issues
[v1.3.0] - 2026-02-25
- Project Translation Sync — Automatic synchronisation to keep translations up to date across runs, no more manual reconciliation
[v1.2.0] - 2026-02-22
- Self-Service Billing — Upgrade your plan and manage subscriptions within the dashboard via Razorpay
- Performance — Translation engine up to 40% faster for large repositories
- UI Refinements — Consistent spacing, alignment, and iconography across the dashboard
[v1.1.0] - 2026-02-15
- Two-Factor Authentication — Mandatory 2FA for all accounts
- GitHub OAuth — Streamlined login with fewer redirects
[v1.0.0] - 2026-02-01
Official Launch
Babelize launches to general availability — a production-grade localisation platform for modern development teams.
- 50+ Languages — AI-powered translation with configurable quality tiers
- GitHub Integration — Automatic syncing, PR creation, and webhook-driven workflows
- Resource Bundles — Export translations as structured
.jsonlocale files, one per language - Team Collaboration — Role-based access controls, shared projects, and user management
Last updated: 2026-10-16
Incident Response
How Babelize handles security incidents: severity levels, the response process, how and when customers are notified, and how to report an issue.
FAQ
Answers to common Babelize questions: supported frameworks and languages, pricing and AI credits, file formats, GitHub setup, BYOK, and glossaries.