OTA localization updates without making every copy fix a release.

ReRune SDKs deliver approved text across Flutter, Android, iOS, React, React Native, and Angular. OTA staging adds an opt-in preview path for enabled drafts while production clients keep receiving published content.

ReRune dashboard showing localization workspace activity and project status
ReRune projects list showing real localization projects in a workspace
ReRune project keys view for managing software translation keys
ReRune OTA demo mobile app landing screen with live localization status
ReRune OTA demo mobile app story screen showing runtime translation content

Common challenge

App-store release cycles are too slow for every copy fix, translation refinement, or newly supported language.

Best fit

Flutter, Android, iOS, React, React Native, and Angular products that need reviewed text delivered safely at runtime.

How ReRune helps

ReRune treats OTA as one delivery option inside the localization platform, not a detached runtime patching tool.

Update lifecycle

What happens between publish and the text a user sees.

ReRune OTA localization adds a runtime overlay to the application's existing localization layer. The public SDKs keep their framework APIs and bundled resources while synchronizing approved locale payloads.

Preview enabled drafts before publishing

Project staging and SDK staging are separate opt-ins. A staging client synchronizes complete draft snapshots into an isolated cache; production clients continue on published manifests and caches.

Fetch a versioned manifest

A supported SDK uses its publishable OTA ID to request the ReRune manifest, compare the published locale versions with local state, and fetch locale payloads that changed.

Commit updates to a platform cache

Previously applied locale data can be restored on a later startup. When no matching cache or network update is available, the app continues from its bundled localization resources.

Fall back per missing message

Remote values override matching bundled keys. Missing remote values continue through the published main-language fallback and then the application's native or framework fallback instead of blanking the UI.

Keep code changes in app releases

OTA changes text the installed SDK already knows how to render. New code paths, compiled resource identifiers, placeholder signatures, native system strings, and store metadata can still require a normal release.

OTA demo14 sec

From dashboard to app in 14 seconds.

Edit approved copy, publish it, and refresh the app without a new store release.

  1. Edit

    Update approved copy.

  2. Publish

    Create the OTA update.

  3. Refresh

    Load it in the app.

OTA demo14 sec
OTA live preview5 min 37 sec

Preview translations in your app before publishing.

Enable OTA staging for a project, opt a test build into staging mode, and sync enabled drafts, including unfinished and never-published keys, without changing what production apps receive.

  1. Enable project staging

    Turn on the preview path once for the project.

  2. Connect a test app

    Start or switch the SDK into staging mode.

  3. Review the next sync

    Check draft copy in context, then publish when it is ready.

  4. Production stays published

    Other SDK requests keep receiving the last published translations.

Staging preview downloads use the normal OTA quota.

OTA live preview5 min 37 sec

Publication rollback

Roll back published app text.

Preview an earlier publication and restore it as the live version for apps using ReRune.

  1. Find the earlier publication

    Open the translation key’s publication history and inspect the saved snapshot before restoring it.

  2. Restore live delivery

    Make the selected snapshot live again. ReRune records the rollback in publication history and leaves the current editor draft unchanged.

  3. Fetch the restored text

    Apps receive the restored text on their next successful update check. The video shows this with a Flutter app.

This restores published localization content. App code and layout changes still follow your normal release process.

Publication rollback40 sec

Workflow

From app copy to release-ready localization.

ReRune connects translation management to the delivery path developers already use: dashboard work, AI assistance, CLI/API sync, and OTA updates where a supported SDK is installed.

Install the SDK

Connect the supported app runtime to a ReRune publish ID while keeping native or framework localization behavior in place.

Publish approved text

Approve translation changes in the workspace, then publish runtime updates without turning every text fix into a full store release.

Refresh visible copy

Let supported SDK hooks check for updates and refresh text when new approved localization payloads are available.

Keep fallbacks intact

When runtime updates are unavailable, the app keeps reading bundled resources so localization failures do not break the product.

Agent-assisted setup

Run one command. Your coding agent integrates ReRune.

Run the onboarding command from the root of your Git repository. The wizard detects the app and compatible coding agents already installed, then launches the agent you choose to move static UI text into localization, connect ReRune when cloud setup is selected, and validate the result.

Run inside your Git repository

$ curl -fsSL https://rerune.io/onboard.sh | sh

The script runs locally. ReRune does not receive your source code or list of installed agents.

  1. Run the onboarding command

    Start it from the repository root. It stays in the terminal and detects the app, existing localization, and supported coding agents already installed.

  2. Confirm the detected setup

    Review the source locale, Git branch, and whether to connect ReRune cloud and add supported OTA delivery. Nothing changes until you confirm.

  3. The agent completes the integration

    The selected agent migrates user-facing strings into the app's localization system, connects ReRune when cloud setup is selected, adds supported OTA setup when requested, and runs the relevant validation.

Coding agent integrations

11 integrations: 4 available now, 7 planned.

  • Claude CodeReady
  • CodexReady
  • OpenCodeReady
  • PiReady
  • GitHub Copilot CLIPlanned
  • GoosePlanned
  • Qwen CodePlanned
  • Cursor AgentPlanned
  • Kiro CLIPlanned
  • Cline CLIPlanned
  • Factory DroidPlanned

Coverage

App-first does not mean mobile-only.

Start where localization creates release friction, then keep web, mobile, and cross-platform products in one shared workspace as your surface area grows.

Developer delivery

Sync through the CLI. Publish through OTA SDKs.

Use the ReRune CLI locally or in CI/CD to manage project translations, then deliver approved runtime updates through the SDK built for your app.

Companion CLI

Install the ReRune CLI

Use the ReRune CLI to sync, validate, and manage translations right from your terminal. Run syncs in CI/CD or locally whenever you need to push a new language.

Homebrew (macOS/Linux):

brew install BasalBit/tap/rerune
  • Downloadable builds for macOS, Linux, and Windows
  • Uses the API keys you generate in the dashboard
  • Fits scripted CI/CD workflows through CLI and API access
rerune

Connect the project

Create the project config and connect the repository to its ReRune workspace.

rerune pull

Pull approved updates

Bring current dashboard translations into the app or its build workflow.

rerune push

Push local changes

Send local translation updates back to ReRune for the team to manage and publish.

ReRune for Flutter

Add OTA localization updates and runtime variants on top of generated Flutter localizations without changing how widgets read translated strings.

Explore Flutter localization
  • Layers server-published translations over AppLocalizations
  • Works across mobile, web, and desktop from one setup
  • Generate the ReRune config; prepare API-exported ARBs when needed
  • Check for updates on start or trigger refresh manually at runtime
  • Select Main or a named translation variant at setup or runtime
  • Preview enabled drafts in an isolated staging mode before publishing
AndroidiOSWebmacOSLinuxWindows
Quick StartView on pub.dev

setup

dependencies:
  rerune: ^1.3.0

flutter gen-l10n
dart run rerune

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await ReRune.setup(
    otaPublishId: 'your-ota-publish-id',
    localizations: reRuneAppLocalizationsConfig,
    variant: ReRuneVariant.named('customer_acme'),
  );

  runApp(const MyApp());
}

MaterialApp(
  localizationsDelegates: ReRune.localizationsDelegates,
  supportedLocales: ReRune.supportedLocales,
);

Why it feels lightweight

Keep your generated Flutter localization APIs. If exported ARBs contain offset:0, SDK 1.3.0 can prepare compatible copies before generation. Keep source ARBs in lib/l10n, set arb-dir to lib/l10n/flutter, and run dart run rerune prepare-arb before flutter gen-l10n and dart run rerune.

Main runtime APIs

Use ReRune.checkForUpdates(), listen to ReRune.onFetchedTextsApplied, or wrap screens with ReRuneBuilder when you want update-aware UI.

Questions

Questions teams ask before choosing a localization platform.

Contact the ReRune team

Share an idea, report a problem, or ask for help with ReRune.

Which ReRune platforms support OTA localization updates?

ReRune supports OTA workflows and runtime variant selection for Flutter, Android, iOS, React, React Native, and Angular. Angular integrates with ngx-translate or Transloco.

Are OTA updates a replacement for normal localization files?

No. OTA updates add a runtime delivery layer for approved text. Bundled files and native or framework localization remain important for fallback and baseline behavior.

Can ReRune add a language without a new app release?

The public Flutter, Android, iOS, React, React Native, and Angular SDKs can expose dashboard-published languages at runtime after their locale payloads are fetched. Platform language listings, store metadata, and SDK-specific application configuration can still require a release.

What localization changes still require an app release?

New code paths and localization structures the installed app does not know about still require a release. Examples include new Android resource IDs, new Flutter keys or placeholder signatures, native system text, and app-store language metadata.

Can I preview draft translations in a running app before publishing?

Yes. Enable OTA staging for the project and opt a development or QA client into staging mode. The client receives saved, enabled draft snapshots on its next sync from a cache kept separate from published content. Production clients stay on the published path by default.

One workspace

Start with one product workflow and expand from there.

Create projects, manage keys, use AI assistance with context, sync through CLI/API, and publish approved runtime updates when your app uses a supported ReRune SDK.