February 6, 2026
I built a free React Native boilerplate this week (here's why most are garbage)
Most React Native boilerplates either cost $200+ or include bloat you'll never use. I spent this week building mobileboilerplate.io — 100% free, actually opinionated, and focused on shipping fast.
I spent this week building mobileboilerplate.io — a 100% free React Native + Expo boilerplate.
Here's why: I was tired of choosing between $200 paid boilerplates or "free" ones that include 47 features I'd immediately rip out.
Every boilerplate is either trying to be everything to everyone, or it's a premium product that costs more than a month of hosting.
So I built one that's actually opinionated and free.
What I learned building it
The hardest part wasn't the code — it was deciding what NOT to include.
Every boilerplate falls into the same trap: "Let's add auth + payments + notifications + analytics + dark mode + i18n + admin panel + kitchen sink."
Then you clone it and spend 3 hours deleting half of it.
I made a rule: If I wouldn't use it in the first week of building an app, it doesn't go in.
That meant:
- Auth? Yes, but just the skeleton — email/password only
- Payments? No. You don't need Stripe on day one
- Push notifications? No. Ship the core feature first
- Dark mode? No. Solve real problems first
- Admin panel? Definitely not
The boilerplate should get you to your first user, not your 10,000th.
Second learning: Expo Router changed everything.
File-based routing in React Native is genuinely great now. No more manually registering every screen in a navigation file.
But here's what nobody tells you: Expo Router's documentation assumes you already know how layouts work. I spent 4 hours debugging why my auth screens were showing the tab bar.
The fix? One line: export { unstable_settings }; in the auth layout.
That's the stuff I'm documenting in the boilerplate — the things that cost you half a day.
Third: Most boilerplates over-engineer the folder structure.
I've seen /src/components/atoms/buttons/primary/variants/large/index.tsx in production code.
Ridiculous.
I kept it flat: /components, /screens, /lib, /hooks. That's it.
You can always add folders later. You can't easily unfold a complicated structure.
What you can steal
Here's the exact stack I landed on after testing 6 different approaches:
Core:
- Expo SDK 52 (latest)
- Expo Router for navigation
- TypeScript (strict mode)
- NativeWind for styling (Tailwind for React Native)
Why NativeWind specifically:
Every other styling solution in React Native is either verbose (StyleSheet) or has DX issues (Styled Components crashes on hot reload).
NativeWind just works. You write className="bg-blue-500" and it renders correctly on iOS, Android, and Web.
The folder structure:
/app → Expo Router pages (file-based routing)
/components → Reusable UI components
/lib → API calls, utilities, constants
/hooks → Custom React hooks
/assets → Images, fonts, icons
That's it. No /atoms, no /molecules, no /organisms. Just components.
Auth flow:
I included a basic auth skeleton with:
- Sign up / Sign in screens
- Protected routes (redirect to login if not authed)
- Auth context provider
- Logout functionality
But zero backend. You plug in your own API.
Why? Because everyone's auth backend is different. I'm not making assumptions about Supabase vs Firebase vs your own API.
The boilerplate shows you where to call your auth endpoints. You fill in the blanks.
The one thing I'd do differently
I almost added Zustand for state management.
Then I remembered: most apps don't need global state on day one.
React Context + useState is enough until you have actual performance problems.
I left it out. You can add it in 10 minutes if you need it.
Boilerplates should be minimal viable setups, not showcases of every library the creator likes.
Get it here
mobileboilerplate.io — 100% free, clone and go.
The goal: You should be building your actual product within 30 minutes of cloning, not spending 2 days ripping out features you don't need.
If you use it, let me know what you build.
Happy building, – Kristoffer, BuildWithAI
PS: I'm running a $3,000 hackathon. Build and ship an app in 30 days: Join here.