How I stopped rebuilding the same Expo AI app foundation every time

typescript dev.to

Every time I started a new Expo AI app, I ran into the same problem.

I wanted to build the product… but I spent the first week rebuilding the foundation instead.

Auth. Navigation. Chat UI. Theme. Paywall. Styling config.
Again and again.

The real bottleneck wasn’t the idea
The idea was usually clear.
The slow part was everything around it:

Setting up Expo Router the right way
Wiring Supabase auth with persistent sessions
Building a chat UI that supports streaming responses
Adding light/dark mode that actually saves
Creating a paywall that can later connect to real in-app purchases
That setup can easily take 40+ hours — before you ship a single real feature.

What I decided to do
I stopped treating boilerplate as disposable.

I packaged the stack I kept rebuilding into a reusable starter called ShipNative.

It’s a TypeScript Expo kit with:

Expo Router (file-based routing + auth redirects)
NativeWind v4 for styling
Supabase authentication with Secure Store
Gemini-powered AI chat with streaming UI
RevenueCat-ready paywall (monthly/annual + restore)
Demo mode so you can explore without API keys
Persisted light/dark theme
A .cursorrules file for cleaner AI-assisted development
Why demo mode matters
I didn’t want a starter that only works after you configure five services.

With demo mode, you can open the app and immediately test:

login/register screens
AI chat streaming behavior
paywall upgrade/restore flow
Then add your Supabase, Gemini, and RevenueCat keys when you’re ready for production.

Who it’s for
ShipNative is for builders who want to move faster:

indie hackers launching AI mobile apps
freelancers who don’t want to bill clients for setup week
developers who want a clean architecture they can customize
It’s not a no-code builder, and it’s not a finished consumer app.
It’s the foundation — so you can focus on your product.

Quick start
npm install
cp .env.example .env
npx expo start
If you want the full kit
I published it here:

Product: https://mariamtariq72.gumroad.com/l/shipnative
Landing page: https://shipnative-landing.vercel.app
Quick question
What slows you down most when starting a new Expo app?

Auth, navigation, AI chat UI, paywall/IAP, or styling setup?

I’d love to hear what you’re stuck on — I’m improving the starter based on real feedback.

Source: dev.to

arrow_back Back to Tutorials