The typical "Arabic version" of a product is an English layout passed through dir="rtl" and a translation file. The result reads like a photocopied mirror: technically reversed, culturally wrong, typographically broken.
Roughly seventy percent of the users we build for read Arabic first. These are the lessons that separated the products they tolerate from the ones they love.
Typography carries different weight
Arabic script sits visually denser and rounder than Latin at the same point size, with no italics and a different bolding tradition. A type scale tuned for a Latin display face collapses in Arabic — letter-spacing that adds elegance to English headlines literally breaks connected Arabic letterforms.
We maintain separate type scales per script: tighter tracking never applies to Arabic, display sizes drop half a step, and line heights rise to respect ascenders and diacritics.
Not everything flips
Direction-of-time flips: progress bars, steppers, carousels, back arrows. But media controls do not — play buttons point right worldwide. Phone numbers, code snippets and brand names stay LTR inside RTL text, which is where naive implementations shatter.
The discipline is logical properties everywhere — start/end, never left/right — plus explicit dir islands for the exceptions. Our linters flag any physical direction property in review.
Design Arabic first, then translate the layout
The single biggest change: we now design key screens in Arabic before English. Arabic strings run twenty to forty percent longer, and designing for them first produces layouts that breathe in both languages instead of truncating in one.
If your Arabic users are your majority, "Arabic support" is the wrong frame. English is the second language.