rerune 0.6.0 copy "rerune: ^0.6.0" to clipboard
rerune: ^0.6.0 copied to clipboard

OTA localization updates for Flutter apps with build_runner code generation.

rerune #

OTA localization updates for Flutter apps.

ReRune layers server-provided translations on top of your generated AppLocalizations values, without changing how you call localization getters in widgets.

Requirements #

  • Flutter >=3.22.0
  • Dart >=3.4.0

Install #

dependencies:
  rerune: ^0.6.0

dev_dependencies:
  # Optional: needed only if you use the build_runner path below.
  build_runner: ^2.4.13

1) Generate Flutter localizations #

flutter gen-l10n

2) Generate ReRune localization config #

Fast path (ReRune-only generation):

dart run rerune

Alternative (build_runner pipeline):

dart run build_runner build --delete-conflicting-outputs

Both commands generate identical *.rerune.g.dart artifacts. Parity is protected by dedicated drift-guard tests in CI.

With default Flutter l10n naming, ReRune generates:

  • lib/.../app_localizations.rerune.g.dart
  • reRuneAppLocalizationsConfig

No manual anchor class or annotation file is needed.

3) Wire ReRune.setup(...) in main() #

import 'package:rerune/rerune.dart';

import 'l10n/gen/app_localizations.rerune.g.dart';

void main() {
  ReRune.setup(
    otaPublishId: 'your-ota-publish-id',
    localizations: reRuneAppLocalizationsConfig, // Generated by rerune/build_runner
    updatePolicy: const ReRuneUpdatePolicy(checkOnStart: true),
  );

  runApp(const MyApp());
}

4) Use ReRune delegates/locales in your app #

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

Runtime APIs #

  • Check manually: await ReRune.checkForUpdates()
  • Listen to applied updates: ReRune.onFetchedTextsApplied.listen(...)
  • Rebuild subtree on applied updates: ReRuneBuilder(builder: ...)

Advanced And Custom Integrations #

Custom Flutter l10n class/file names #

If your app does not use app_localizations.dart / AppLocalizations, add a build.yaml in the app root:

targets:
  $default:
    builders:
      rerune|re_rune_localizations_overlay:
        generate_for:
          - lib/**/my_localizations.dart
        options:
          localizations_file_name: my_localizations.dart
          localizations_class_name: MyLocalizations

Then run:

flutter gen-l10n
dart run rerune

# or

dart run build_runner build --delete-conflicting-outputs

This generates my_localizations.rerune.g.dart and reRuneMyLocalizationsConfig.

Use it in startup:

import 'package:rerune/rerune.dart';

import 'l10n/gen/my_localizations.rerune.g.dart';

void main() {
  ReRune.setup(
    otaPublishId: 'your-ota-publish-id',
    localizations: reRuneMyLocalizationsConfig,
  );

  runApp(const MyApp());
}

Disable automatic startup fetch #

ReRune.setup(
  otaPublishId: 'your-ota-publish-id',
  localizations: reRuneAppLocalizationsConfig, // Generated by rerune/build_runner
  updatePolicy: const ReRuneUpdatePolicy(checkOnStart: false),
);

Trigger updates from UI actions #

final result = await ReRune.checkForUpdates();
if (result.hasErrors) {
  // show error state
}

Provide your own cache store #

If you need custom storage behavior, implement ReRuneCacheStore and pass it to ReRune.setup(cacheStore: ...).

Troubleshooting #

  • Target of URI hasn't been generated: run flutter gen-l10n, then dart run rerune (or dart run build_runner build --delete-conflicting-outputs).
  • Undefined name reRune...Config: generated .rerune.g.dart file is missing, stale, or imported from a wrong path.
  • Changed l10n keys/signatures: rerun both generators.

License #

This package is proprietary software.

  • Copyright (c) 2026 BasalBit GmbH. All rights reserved.
  • Commercial license terms: https://rerune.io/terms
  • Issue tracker: https://rerune.io/issue-tracker
0
likes
0
points
30
downloads

Publisher

unverified uploader

Weekly Downloads

OTA localization updates for Flutter apps with build_runner code generation.

Homepage
View/report issues

License

unknown (license)

Dependencies

analyzer, build, crypto, flutter, glob, http, intl, path_provider, shared_preferences, source_gen, yaml

More

Packages that depend on rerune