Articles from Mo Khazali
Building Whitelabel Mobile Apps: A Comprehensive Guide of Technical Considerations
May 25, 2023Mo 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, and order food within the restaurant. After six…
Continue reading →The State of Building Native Mobile and Web Apps from a Single Codebase with React Native in 2023
May 03, 2023Mo Khazali9 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 of the components to build a universal app, rather it aims to break down the…
Continue reading →Effective Strategies for Testing React Native Apps: Striking a Balance Between Testing UI and Business Logic
April 20, 2023Mo Khazali7 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 on 100% test coverage. I remember I went on a project where there was…
Continue reading →Handling Supabase Password Reset in React Native
March 29, 2023Mo 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 section describing how to implement the password reset flow using the…
Continue reading →From Responsive on Mobile to Mobile-First
March 16, 2023Mo Khazali4 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 flashback: when Apple was launching…
Continue reading →One Hook Per Screen: a simple architecture for scalable React Native apps
February 13, 2023Mo Khazali7 min read
“Architecture is the decisions that you wish you could get right early in a project” Ralph Johnson When I built my first site, the web felt like a simpler place. I would create an html file for my markup, a css file to have all of my styles, and js files if I had any interactivity or logic. This…
Continue reading →Stop Building Auth: a case for using prebuilt authentication in React Native
January 31, 2023Mo 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 signing up, or a few seconds logging…
Continue reading →Preview Branches for React Native with Expo
January 09, 2023Mo Khazali5 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 staging. React Native developers often get…
Continue reading →Optimising screen load times for legacy low-end devices in React Native
December 19, 2022Mo 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 14 Pro, others give you a different story… An Android user reports that…
Continue reading →Hasura: GraphQL Without the Baggage.
August 04, 2021Mo Khazali12 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) and unifying multiple…
Continue reading →