← Back to blog
react-nativehealthcaremobiletelehealth

Building Telehealth Apps with React Native: Lessons from Estenarh

·3 min read

Building a telehealth app is not the same as building a typical CRUD mobile application. When someone is connecting with a doctor for a mental health consultation, the stakes are different. Latency matters. Privacy matters. The experience has to feel seamless, or people won't trust it with something as personal as their mental health.

Over the past year, I worked on Estenarh — a telehealth platform connecting patients with licensed psychologists, psychiatrists, and medical professionals across the Middle East. Here's what I learned building it.

The Challenge

Estenarh needed to solve several problems simultaneously:

  • Instant consultations — match a user with a practitioner in under 5 minutes
  • Multi-language support — full Arabic and English with RTL layout switching
  • Secure payments — multiple gateways for a Saudi market (HyperPay, Moyasar, Tabby, Tamara)
  • Real-time communication — chat via Socket.io alongside video consultations
  • Two separate apps — one for patients, one for consultants, sharing a common codebase where possible

RTL and Internationalization

Arabic RTL support in React Native is more than just flipping the layout. Every component needs to be aware of text direction. We used react-native-i18n with a custom setup that handled:

  • Dynamic locale switching without app restart
  • RTL-aware icons and navigation gestures
  • Date formatting that respects the user's calendar preference
  • Proper text alignment in mixed-language content

The key insight: design for RTL from day one. Retrofitting RTL into an LTR-first app is painful. We built every component with bidirectional support from the start.

Payment Gateway Integration

The Saudi market doesn't run on Stripe alone. We integrated four payment providers:

  • HyperPay — the primary gateway for card payments
  • Moyasar — Apple Pay and local payment methods
  • Tabby — buy now, pay later (installments)
  • Tamara — another installment option popular in KSA

Each gateway has its own SDK, its own quirks, and its own certification process. The abstraction we built was a unified payment service that exposed a single interface to the UI layer, hiding the complexity of each provider behind it.

Real-time Features with Socket.io

The chat system needed to handle:

  • Typing indicators
  • Read receipts
  • Message delivery status
  • Reconnection handling for unstable mobile networks

We built the Socket.io connection as a service that the chat hook consumed. The service handled reconnection logic, message queuing during offline periods, and optimistic UI updates. The component layer never knew about Socket.io directly — it just received messages and sent them through the hook.

What I'd Do Differently

  1. Start with a monorepo — sharing code between the patient and consultant apps would have been cleaner with a proper monorepo setup from the beginning
  2. Invest in E2E testing earlier — with real-time features and multiple payment gateways, manual testing became a bottleneck
  3. Build a component library first — we ended up with slight inconsistencies between the two apps that a shared design system would have prevented

The Result

Estenarh now serves 50K+ users across iOS and Android, with consultations happening daily across multiple medical specialties. The platform is licensed by the Saudi Ministry of Health, and the apps maintain strong ratings on both stores.

Building for healthcare taught me that reliability isn't a feature — it's the baseline. Every architectural decision should optimize for trust, because that's what you're really shipping.

Enjoyed this post? Give it a sparkle!

Comments

Loading comments...