Articles from Mo Khazali
React Strict DOM: The Future of Universal Apps with React Native
Mo Khazali10 min read
A couple of weeks, Meta announced the release of react-strict-dom. I can't stress just how a big a deal this is. Fundamentally, this will change the way we use React Native (and React on web, for that matter). It provides…
Continue reading →The Unfortunate Demise of App Center - An Obituary
Mo Khazali8 min read
Today is a sad day for the React Native ecosystem. Microsoft very quietly announced that App Center is being "retired" in just over a year's time (at the end of March 2025). Over the years of building React Native apps,
Continue reading →Visualising your bundle size in Expo Router apps
Mo Khazali5 min read
TLDRRun npx expo export -p web --dump-sourcemap in your project. This will create a dist directory with your exported project along with the sourcemaps. Run npx source-map-explorer dist/**/*.js to get the graphic representation of your sourcemaps.Before the days of Hermes, a…
Continue reading →Nightly End-to-End & Performance Tests with Flashlight
Mo Khazali7 min read
Several years ago, I was working on a web project that had quite a number of critical web flows that needed to be regularly tested to make sure that there weren't any regressions from functionality or performance across the app.
Continue reading →What's the point of StyleSheets in React Native?
Mo Khazali5 min read
Over the years, I've heard whispers of the mystic powers of StyleSheet.create, and how not using StyleSheet would negatively affect performance. The other day, curiosity got the better of me, and I went down a rabbit-hole of looking into…
Continue reading →Using RCTView & RCTText in React Native for Performance Gains
Mo Khazali6 min read
I recently published an article and thread comparing iOS rendering performance across SwiftUI, React Native, and Flutter. The results showed that SwiftUI (unsurprisingly) performs the best, followed by React Native and Flutter respectively. I got some interesting feedback and suggestions from…
Continue reading →Microfrontends in Mobile with React Native
Mo Khazali10 min read
Introduction This article is meant to be an exploration of the state of creating Microfrontends (MFEs) for native mobile apps in 2023. It covers the history of MFEs, giving a brief intro, and then looks into how React Native's architecture can…
Continue reading →Comparing iOS rendering performance: SwiftUI vs. React Native vs. Flutter
Mo Khazali7 min read
When SwiftUI first came out, I remember reading about complaints around its performance. Some animations were janky (compared to UIKit) and app layouts were getting recalculated far too much, resulting in unnecessary computation power being used. People reported it being…
Continue reading →Firebase Dynamic Links are being shut down: Time to go Universal with Expo Router?
Mo Khazali4 min read
Google has a reputation for killing or discontinuing its products and services. There's literally a website called Killed By Google, which has a list of all the services that have been discontinued over the years. Recently, Google has been hinting…
Continue reading →Building Whitelabel Mobile Apps: A Comprehensive Guide of Technical Considerations
Mo Khazali9 min read
Introduction Imagine this scenario: You've just joined as a lead engineer at Burrito Ring, an international chain of average tasting TexMex fast food. Your first project is to develop a mobile app that allows users to view the menu, check allergens,
Continue reading →The State of Building Native Mobile and Web Apps from a Single Codebase with React Native in 2023
Mo Khazali10 min read
This article is a write-up based on a talk I've given called "Building Universal Apps in React Native". It was first delivered at iJS Conference London in April 2023. This article is not meant to go into detail about all…
Continue reading →Effective Strategies for Testing React Native Apps: Striking a Balance Between Testing UI and Business Logic
Mo Khazali9 min read
Testing in software development is a contentious topic, with advocates on both ends of the spectrum. On one hand, there are those who argue against writing any tests at all, while on the other hand, there are companies that insist…
Continue reading →Handling Supabase Password Reset in React Native
Mo Khazali9 min read
When working on a project that used Supabase for its authentication, we faced many issues in the password reset flow. Our app was using React Native on the front end, and Supabase on the backend. The official documentation had a…
Continue reading →From Responsive on Mobile to Mobile-First
Mo Khazali5 min read
It’s no secret that web development has changed massively with the rise of smartphones. Back in the day, websites were typically targeting desktop resolutions, and many websites required you to use a computer to have a pleasant experience.Here’s a little…
Continue reading →One Hook Per Screen: a simple architecture for scalable React Native apps
Mo Khazali7 min read
“Architecture is the decisions that you wish you could get right early in a project” Ralph JohnsonWhen I built my first site, the web felt like a simpler place. I would create an html file for my markup, a css file…
Continue reading →Stop Building Auth: a case for using prebuilt authentication in React Native
Mo Khazali9 min read
Authentication is simultaneously one the most and least important parts of your application. By default, most mobile apps will remember the user’s credentials (since phones are normally personal devices). This means that the user might spend a couple of minutes…
Continue reading →Preview Branches for React Native with Expo
Mo Khazali6 min read
A Github Action to automatically generate preview branches using EAS (Expo Application Services) as part of a CI/CD workflow, creating live deployments that allow the reviewer to functionally check any changes in the app before the feature is merged into…
Continue reading →Optimising screen load times for legacy low-end devices in React Native
Mo Khazali9 min read
You’ve developed your React Native application and you’re ready to release it out to the public. All is going well, until you start testing on real phones. While your app is perfectly smooth and snappy on your shiny new iPhone…
Continue reading →Hasura: GraphQL Without the Baggage.
Mo Khazali14 min read
Spoiler Alert: Star Wars references below. Proceed at your own risk... The introduction of GraphQL back in 2015 garnered a lot of hype in the development sphere - allowing clients to describe exactly what data they require (preventing over-fetching unneeded information)…
Continue reading →