Tools & Frameworks
Learn why we chose the technologies and libraries to use for this boilerplate.
React Native
React Native brings the React programming paradigm to platforms like Android and iOS. This allows us to write our code in JavaScript (React), and have it render to native platform UI, meaning your app uses the same native platform APIs other apps do.
Expo
Expo is a framework and platform for universal React applications. We use it to build and deploy our mobile application across both iOS and Android platforms.
In addition, we make use of the Expo SDK to access a ton of native functionality without needing to know any iOS/Swift/XCode/Kotlin.
You can not use Expo Go with this project. This is because Expo Go is meant to be a prototyping playground, and we are using some features that are not supported by Expo Go. Instead, we build a custom development build.
EAS (Expo Application Services)
EAS is a suite of cloud services, provided by Expo, that make releasing apps streamlined and simple. We use it to build our applications (although you can also do it locally), handle signing our apps for release, submitting it to the App Store and Play Stores, updating your app over-the-air, and much more.
NativeWind & Tailwind CSS
NativeWind is a universal styling system for React Native, powered by Tailwind CSS. It allows us to style our UI using Tailwind on web, iOS, and Android.
Tailwind CSS is a utility-first CSS framework that we use through NativeWind to create a consistent design system for our application. It allows us to develop the UI quickly, without writing custom CSS.
Backend
Supabase is a backend-as-a-service, and powers our backend. It provides a full, managed Postgres database, authentication, storage, realtime data sync, edge functions, and more. We primarily use it for the database and API gateway.
Paywalls & Payments
Superwall allows us to easily create paywalls, integrate them within our application to gate features, A/B test different paywalls to see how they perform without needing updates, and also handles the payments. They also handle in-app purchases as well.
Here's what Blake Anderson, founder of 3 consumer apps totaling over $3,000,000 ARR, has to say about Superwall: https://x.com/blakeandersonw/status/1856736318924992934
This project also has the flexibility to use RevenueCat to handle in-app purchases, if desired.
Error Monitoring
Sentry is used for error tracking and performance monitoring. It is the most popular and powerful way to let you know when users run into errors & issues in your app, what the errors are, and how to debug them.
Analytics
PostHog is used for their product analytics, feature flags, experiments, session replay, etc. to let us understand user behavior with event-based analytics, cohorts, and conversion funnels.
💎 Other Libraries Used
- Yarn 3 for package management
- Lucide Icons: When searching for an icon pack, use an SVG-based icon library with proper tree shaking, not a font-based library.