How the Tinder iOS App reduced the size of our localizations by 95% using Emerge
Article Summary
Tinder ships their iOS app to 190+ countries in 50+ languages. That localization overhead was costing them 51MB of install size.
The Tinder iOS team tackled a sneaky performance problem: Apple's 4KB minimum file size for code signing meant hundreds of tiny localization files were bloating their app. They combined Bazel build optimizations with Emerge's SmallStrings compression tool to dramatically reduce their footprint.
Key Takeaways
- Reduced download size by 10.7MB and install size by 51.3MB
- Collapsed 50+ localization files per target into single compressed files
- Used Bazel aspects to traverse build graph and merge strings automatically
- Applied LZFSE compression to keys and values separately
- Zero impact to developers: changes hidden behind code generation
Tinder cut localization size by 95% (51MB install, 10.7MB download) by merging files and compressing with SmallStrings, all transparent to developers.
About This Article
Tinder's iOS app had over 50 localization files per target across 190 countries. Apple's 4KB code signing minimum meant each file took up at least 4KB of space, even if the actual content was much smaller. Translator comments and whitespace added to the bloat.
Tinder built a custom Bazel rule called namespaced_strings that merged multiple localization files into single files per language. They then used Emerge's SmallStrings tool to compress the keys and values into LZFSE format, which gets decompressed at runtime.
This two-step approach cut download size by 10.7MB and install size by 51.3MB. The merging phase alone saved 30.1MB of install size, and the SmallStrings compression added another 21.2MB in savings.