Core concepts
OTA is built around two resources: distributions and releases.Distributions
A distribution defines which Phrase Strings projects, locales, and platforms are bundled for OTA delivery. Each distribution has its own credentials — a distribution ID and an environment secret — that the SDK uses to authenticate against the Phrase CDN. Multiple distributions are possible, but the recommended setup is one distribution per project. When a distribution targets both iOS and Android, string placeholders between the two formats are automatically converted. A distribution can optionally be restricted to only serve reviewed translations — keys that have not passed review are omitted from releases published under that distribution.Distribution settings only take effect on releases published after the change. If you update a distribution (e.g. its fallback languages or reviewed-only setting), publish a new release for connected SDKs to pick it up.
Language fallbacks
A distribution offers three independent fallback options, applied when a requested translation is unavailable or doesn’t exist:- Use language fallback — serve the fallback languages configured in the project’s language settings instead of the requested language.
- Fallback languages exclude regions (recommended) — if a requested regional language isn’t found, the region is dropped and the base language is served instead (e.g.
de-DE→de). - Fallback languages use the default locale (recommended) — if the requested language isn’t found at all, the project’s default locale is served instead (e.g.
en-AU→en-US).
Releases
A release is a point-in-time snapshot of the translations in a distribution. Publishing a release exports the current project state and makes it available to any device or instance running an SDK configured with that distribution’s credentials. Releases support semantic version constraints: you can target a release to a range of app versions (e.g.>= 2.0.0 < 3.0.0), so users on older versions are not served translations that reference keys added in a newer release.
Environments
Every distribution has two environment secrets: development and production. The SDK receives releases for whichever environment its secret belongs to. A newly created release is available to the development environment immediately. It reaches the production environment only once you publish it (using the API endpoint, or Publish in the dashboard).Release triggers
Release triggers automate release publishing on a cron schedule. Configure a trigger on a distribution to create and publish new releases automatically at a set frequency, without manual intervention.Resilience
OTA SDKs are designed so that a slow network or an unavailable OTA service never breaks your app. When the SDK cannot reach the Phrase CDN, it resolves translations through a layered fallback chain:- On-device cache — the last release successfully fetched is stored locally. As long as a device has fetched at least one release, it continues to display those translations indefinitely, regardless of connectivity.
- Bundled translations — if the device has never successfully fetched a release (e.g. on first launch with no network), the SDK falls back to the translation files shipped inside the app binary.
Usage limits
OTA usage is subject to limits based on the number of requests and Monthly Active Users (MAU). The exact allowances depend on your Phrase subscription — see the pricing page for your plan’s details.Data sent with each request
Each SDK request to the Phrase CDN includes: the device identifier, app version, cached translation file timestamp, SDK version, requested locale, file format, client type, distribution ID, and environment secret. No other device or user data is transmitted.Reports
Each distribution provides usage reports, refreshed twice a day, covering:- Active users
- Overall requests
- Requests per language
- Requests per platform
- Device languages not covered by the distribution
Supported SDKs
iOS
PhraseSDK for Swift and Objective-C apps. Supports SPM, CocoaPods, and Carthage.
Android
Kotlin and Java SDK with Jetpack Compose and Android Views support.
Flutter
Cross-platform SDK for iOS, Android, and desktop.
React Native
SDK for React Native apps on iOS and Android.
i18next
JavaScript plugin for React, Vue, Angular, Node.js, React Native, and any i18next-based app.
Ruby on Rails
Ruby gem that replaces the Rails i18n backend with Phrase OTA.
Network requirements
The SDKs communicate with the following domains. Add them to your allowlist if your network restricts outbound connections:API reference
Manage distributions and releases programmatically.Distributions
Create and manage OTA distributions.
Releases
Publish translation snapshots to connected SDKs.
Release Triggers
Automate release publishing.