I built a habit app called SnapHabit [1] that helps you build habits with your friends/family through group habits and through social accountability.
I wanted to learn React Native/mobile development while trying to address the fact that for many of us, social distancing and lockdown have isolated us and destroyed our everyday habits.
The most interesting thing I've seen is that people really enjoy writing about and reading each other's mundane updates. The app has a notes feature which automatically sends out updates to everyone you've shared a habit with. But because the update is tied to the habit, people seem more comfortable writing more personal updates; it doesn't feel like bragging, annoying since it's not traditional social media where you're writing for an audience.
Some other observations and learnings I picked up while building it:
- I love React Hooks. IMO, React is a lot more natural to reason about and to learn with hooks compared to class components. The entire app only uses hooks.
- I used Expo and it's been mostly great. They take care of builds and OTA updates are super useful for iteration and moving fast! Cons: Expo updates too slowly; some bundled modules have been stuck on very buggy builds for a while and you can't do anything until Expo updates its modules.
- Sending too many network requests will slow down your app because of React Bridge! I used Firestore which encourages making all requests on device via the client SDK. But React Native handles network requests natively so everything needs to be passed back and forth through the bridge, causing a lot of slowness if you have too many/large requests, so the Firestore way doesn't seem to work well in React Native. Instead, off load requests to a server so that you're making a single (or small number) of network requests.
- Don't use React context for your app data! Changes to the context cause everything that's subscribing to it to re-render. I was using context for each day update, meaning every update caused all the other day-s to re-render. Redux is still a great solution and redux-toolkit has really helped reduce boilerplate and the friction to get set up.
Good on you for jumping in the deep end to lean React Native and thanks for the advice. I just downloaded your app to take a look at it and it’s really well done. I’m actually going to play around with it for my own personal goals for a bit.
Remote: Yes, if work authorization in Sweden
Willing to relocate: Yes, looking for Visa sponsorship to work in Sweden (US Citizen)
Résumé: Senior Technical Program Manager + Product Manager experience at FAANG
Email: [email protected]
ONLY INTERSTED IN SWEDISH OPPORTUNITIES :)