If you've ever started a React Native project on Monday and looked up on Friday to realize you've written zero product code, only auth, DB migrations, and EAS config, this post is for you.
Applighter customers ship in days, not months. Not because they're faster developers, but because the patterns below are already in the repo when they clone it.
The setup tax
Every React Native project pays it:
| Task | Days |
|---|---|
| Auth (email + OAuth) | 3–5 |
| DB schema + RLS | 2–4 |
| Stripe + entitlements | 3–5 |
| AI streaming | 4–7 |
| EAS build/submit | 1 |
| Design system | 2–3 |
| Push | 2 |
| Total | ~4 weeks |
Before line one of your product code.
Pattern 1: one theming primitive
// app/apps/lib/theme.ts
export function applyProductTheme(brandHex: string) {
const hsl = hexToHsl(brandHex)
// propagates to background, foreground, primary, secondary,
// muted, accent, destructive — all HSL-derived
return buildPalette(hsl)
}
One color in, full palette out. Rebrand an app in 20 minutes, not a weekend of grep-and-replace.
Pattern 2: hybrid data provider
// app/apps/lib/data/provider.ts
export async function getProductData(slug: string) {
try {
const data = await fetchFromSupabase(slug)
if (data) return data
} catch {}
return staticFallback[slug] // ships in the bundle
}
Cloned repo runs on the simulator without env vars. First-run latency: 60 seconds, not 90 minutes.
Pattern 3: RLS pre-baked
-- supabase/migrations/20260112085737_create_transactions_table.sql
alter table transactions enable row level security;
create policy "users read own transactions"
on transactions for select
using (auth.uid() = user_id);
Every table ships with the policy. You audit, you don't design.
Reference: Supabase RLS docs.
Pattern 4: Stripe → grant → download
// app/api/webhook/stripe/route.ts
if (event.type === "checkout.session.completed") {
const { isBundle, targets } = await resolveGrantTargets(supabase, productId)
await grantProducts(supabase, {
userId,
productId,
licenseType,
source: "stripe_purchase",
}, targets)
await sendReceiptEmail({ userId, downloadUrl })
}
Bundles expand into individual grants. Guest checkouts validated by session_id. Single/Multiple/Enterprise license types. It's the code you'd write on day 4 of a Stripe integration, except it's already there.
Pattern 5: EAS ready
// eas.json
{
"build": {
"development": { "developmentClient": true, "distribution": "internal" },
"preview": { "distribution": "internal" },
"production": { "autoIncrement": true }
},
"submit": { "production": {} }
}
/ship slash command → eas build --profile production && eas submit. See Expo EAS docs.
Pattern 6: agent-legible codebase
Every template ships with a .claude/ directory of slash commands. /add-screen, /swap-backend, /audit-security. They work because the codebase is:
- Small files, obvious responsibilities
- NativeWind classes (Tailwind semantics)
- Typed data providers
- Colocated components with their tests
An agent (Claude Code, Cursor) can extend it without wandering. That's a real speed multiplier in 2026.
Comparison
| From scratch | Free boilerplate | Applighter | |
|---|---|---|---|
| Time to TestFlight | 4–6 weeks | 2–3 weeks | 3–5 days |
| Backend | You build | Not included | Supabase, wired |
| Payments | You build | Not included | Stripe + grants |
| RLS | You design | N/A | Pre-baked |
| Updates | You maintain | Repo-dependent | Lifetime |
| Cost | ~$8–20k dev time | Free + hidden time | $79 one-time |
What ships in days vs. weeks
Bimodal distribution across ~500 customers:
- 3–5 days: rebrand-and-launch on an existing template (weather, fitness, e-learning)
- 2–4 weeks: novel AI product built on template infrastructure (voice notes, PDF chat, calorie tracker)
Both compress the ground-up equivalent by ~4x.
When not to use a template
- Building something the data model doesn't stretch to fit (games, real-time collab)
- Learning React Native for its own sake
- Need a stack we don't ship (Firebase, Convex, bare RN)
FAQ
Do I need Supabase experience? No. Templates run with the DB seeded.
Can I skip the theming layer? Yes. Default colors ship out of the box.
What if a new Expo SDK breaks it? Updates are pushed to your dashboard. Pull and diff.
Refunds? 7-day money-back. Policy is on the site.
Try one
Browse the full template catalog. $79 one-time, full source, lifetime updates. Ship this week.
Top comments (0)