Over-the-air (OTA) translation updates
Sending corrected or newly translated strings to installed apps without a store release, with bundled copy kept as the safe fallback.
What it is
Over-the-air translation updates let an installed app download newer message catalogs without waiting for a new binary release. The app still ships with bundled translations, then checks a versioned endpoint for compatible string-only updates and caches the last known good set.
Reach for OTA updates when translation turnaround is faster than an app store review cycle, or when copy must be corrected quickly across already installed versions. Lokalise OTA and Phrase Strings OTA sell this as a product with an SDK per platform. Treat each catalog as immutable data with a version, integrity check, compatibility range, and rollback path.
Gotcha: new copy can depend on placeholders, plural branches, or message keys that an older binary does not understand. Never replace the bundled fallback until a downloaded catalog passes schema, signature, locale, and app-version checks, and never use the channel to deliver executable code. That last line is not only hygiene: App Store Review Guideline 2.5.2 draws the boundary at downloaded code, which is why a strings-only channel stays inside the rules.
Ask AI for it
Implement string-only OTA translation updates from a versioned HTTPS endpoint. Bundle a complete fallback catalog in the app, request a manifest with an ETag, verify each catalog's Ed25519 signature with Web Crypto crypto.subtle.verify where it is available and libsodium's crypto_sign_verify_detached on runtimes without it, validate its locale, schema version, and minimum and maximum app versions, then atomically cache it as the last known good catalog. On any fetch or validation failure, use the cached or bundled catalog. Include rollback support and reject JavaScript, HTML, and unknown ICU placeholders.