Araby Bot
Arabic RTL handled correctly — every widget, every edge case.
4.8★ user rating in the first week — Arabic RTL handled flawlessly end to end.

The Challenge
Arabic RTL support in Flutter Web is more complex than setting a text direction flag. Every input field, every animation, every layout component, and every streaming text renderer needs to be individually validated for right-to-left layout. The AI response streaming added a second layer: Arabic text had to appear correctly RTL even as tokens arrived character by character — partial grapheme clusters must never appear on screen mid-render.
The Solution
I built RTL support into the layout system from day one rather than patching it in after the fact. The MaterialApp-level textDirection is set to RTL for Arabic locale, so the entire widget tree inherits directionality without per-widget overrides. Every input field was tested for cursor positioning and selection handles. Every animation was checked for left/right mirroring. The streaming response renderer uses a grapheme cluster buffer — it holds incomplete characters until a full codepoint is received before rendering, so the user never sees a broken Arabic letter mid-stream.
Key Engineering Decisions
Root-level RTL inheritance
Setting Directionality at the MaterialApp level means every widget inherits RTL without explicit overrides. Custom widgets are built assuming RTL and use semantic start/end padding instead of left/right.
Grapheme-cluster-safe streaming
Arabic characters are multi-byte Unicode grapheme clusters. The streaming renderer buffers bytes until a complete cluster is formed before appending to the visible text, preventing broken character display mid-stream.
Auth-gated conversation history
Chat history is stored in Firestore under the authenticated user's UID. Conversations persist across sessions and devices — the user picks up exactly where they left off.
HTML renderer for web
Flutter Web's HTML renderer (not CanvasKit) was chosen for better text selection behaviour on desktop browsers — critical for a chat interface where users frequently copy AI responses.
Tech Stack
Outcomes & Results
What the Client Said
Arabic-first AI chatbot — Flutter Web“Building a consumer product for Arabic speakers is hard — RTL layout, streaming responses, mobile keyboard quirks. Ahmed handled every edge case without being asked twice. The typography, the scroll behaviour, the loading states — everything was considered. Our Arabic users rated it 4.8 in the first week.”
Mona AdelCo-founder & CPOEgypt
Live Links
Ready to build?
Need something similar built?
I'm available for new projects. Discovery calls are free and I typically respond within 24 hours. You'll work directly with me — from the first call to launch.