Some lessons learned from React Native Development
I’ve recently been writing some react native so I wanted to enumerate an opinionated list of things I’ve learned. I’d not done any mobile development before this, so consider this a reasonable approximation of how an experienced engineer would get their heads around that ecosystem.
- Use SDK/ Managed Services
- Be prepared to debug a lot of platform issues
- Accept that SDK/ Managed services have bugs and be prepared to work around them
- Deployment is an art in itself
Use SDK/Managed services
We used AWS Amplify and Expo these were successful SDK to pick and accelerated our development time. Expo also allows you to test the app without deploying to testflight etc. This was tremendously helpful and sped up a lot of our development speed. So if in doubt look around and find a managed service that does 80% of what you want done. Often this will be the case.
One mistake I made was developing for iOS without having an iphone to test on. Despite the effectiveness of testing on a simulator it’s still not good enough. So be prepared to test rigorously on both platforms. One issue we ran into was differences in keyboard layout and fonts on both platforms. React Native does a great job but sometimes you run into the leaky abstraction issue.
Accept Managed Services aren’t perfect
Occasionally we’d run into a bug, or a confusion that would be either due to a misunderstanding of the managed service or a bug in the managed service. Sometimes the solution is to move to something else, or write your own code for that particular functionality.
Deployment is an art in itself
While the Expo documentation is extensive. I still ran into issues where I needed to speak to experts, for example the different keys on different platforms, understanding the compliance documentation and various other things. You need to go through the process as soon as possible. I wish I deployed an early Google Playstore version of the app earlier in the project
So that’s all. I’ll be writing more about react native in the future.