Flutter or native for an Arabic-first app? What actually differs in RTL
Updated · KBLabs
For most business apps in Arabic and English, choose Flutter: one codebase for iOS and Android, one team, and right-to-left support built into the framework. Choose native when the product lives on deep platform features. Either way, RTL quality comes from how the app is built, not from the framework.
Why Flutter is our default
Most of what we ship — Arabvesta, Taskeen, Sealife Connect, Fahem!, Retro-Z — is Flutter. One codebase means one team, one set of tests and the same behaviour on both platforms, which matters more than usual when every screen exists twice: once in Arabic, once in English. Arabvesta, built this way, passed App Store review on its first submission.
Flutter handles text direction at the framework level: when the locale is Arabic, layouts mirror and text flows right to left — provided the code uses direction-aware building blocks (start and end, not left and right) from the first screen. Retrofitting that later is where most “translated-feeling” apps come from.
When native is the better call
- The product depends on platform features that Flutter reaches only through plugins or custom bridges: home-screen widgets, watch apps, complex background work.
- Heavy camera, AR or media pipelines where every millisecond of native performance counts.
- An existing native codebase and team that would have to be replaced.
Even then, the choice is rarely all-or-nothing: a Flutter app can call native Swift or Kotlin for the one feature that needs it.
What RTL actually involves
| Detail | What goes wrong | What “done properly” looks like |
|---|---|---|
| Layout mirroring | Paddings and alignments hard-coded as left/right | Direction-aware spacing from day one; every screen reviewed in both languages |
| Icons | Everything flipped, including icons that shouldn’t be | Back arrows and progress mirror; media controls, clocks and logos don’t |
| Mixed text | Phone numbers, prices and English names jump around inside Arabic sentences | Explicit direction for embedded numbers and Latin text |
| Numerals | Western and Arabic-Indic digits mixed on one screen | One rule per market, applied everywhere, including dates |
| Typography | A Latin font with Arabic fallback; cramped line height | A real Arabic typeface paired with the Latin one, with Arabic-specific line height |
| Copy | Arabic translated from English | Arabic written for the reader, often first |
How we work on bilingual apps
- Both languages exist from the first design, not at the end.
- Arabic copy is written, not machine-translated.
- Every release is tested in both directions on real devices.
- Store listings, screenshots and notifications are localised too — the first thing a user sees is usually the store page, not the app.