Boolean Build

Choosing an Expo / React Native starter template: a buyer's checklist

Most starter templates are judged by their screenshots. That is the worst way to judge them. A template is a starting point — what matters is whether the code you inherit is real, whether it builds, and whether the licence lets you ship. Here's what to check before you pay, in the order that saves you the most time.

1. Run it before you read a line of code

A template's own quality gates are the fastest signal you'll get. In the project root:

npm install
npm run check      # or: npx tsc --noEmit && npx eslint . && npm test

If that's not green on a fresh clone, the template is not "production-ready" no matter what the listing says. If there is no check script and no test runner, you've just learned that nobody has ever verified the thing you're about to build on.

2. Are the screens real, or placeholders?

Count the screens and open three of them at random. Look for the tells: a screen that returns null, a <Text>Coming soon</Text>, a wall of TODOs, or a component that renders nothing when its data is empty. A template with twenty "screens" and eighteen of them empty is a navigation demo, not a starting point.

Better: check whether the template enforces this. A gate test that fails the build when a screen is a stub is worth more than any screenshot, because it keeps being true after you start editing.

3. Do the tests test behaviour, or just themselves?

Open the test files. Real tests render a screen, press something, and assert what changed. Fake tests assert that a constant equals a literal — they pass forever and prove nothing.

One specific thing to look for: does the template cover its own acceptance criteria? The best kits ship a contract (what the app must do) plus tests that prove each clause — so when you change something, the build tells you what you broke.

4. Is there a release path, or just a dev server?

Everyone can run npm start. The value is in the part after: how do the built artifacts get made? Does the template include the commands to archive for TestFlight and to build and upload an AAB for Play, or does it stop at "use EAS" and leave you to work it out?

Check for the boring details that cost days: how it bumps versionCode / buildNumber, where the signing config lives, and whether the store checks (icon geometry, screenshot sizes, manifest flags) are automated.

5. What happens when you close and reopen the app?

State and persistence are where starter kits quietly fall apart. Set something, kill the app, relaunch — is it still there? Is storage behind an interface you can swap (MMKV today, something else tomorrow), or is it a call to a database in every screen?

6. Read the licence before you fall in love with the code

Three questions, in this order:

Also check that the template's own dependencies are licensed for what you're doing, and that it bundles no third-party art, fonts, or audio you'd have to licence separately. A template that ships stock music "for the demo" is a legal question you didn't budget for.

7. Can you rename it in one sitting?

A template you can't rename isn't a template; it's someone else's app. Look for a place where the app name, bundle identifier, package name, and deep-link scheme live together (usually app.json), and a README section that walks the rebrand. If the old vendor's name is baked into a dozen files, you'll be hunting it for an afternoon.

8. Dependency hygiene

Check the SDK versions at the top of package.json. If it's an Expo SDK that's two majors old, you're inheriting a migration before you've written a feature. If dependencies are floating on * or unpinned ranges, your "green" clone today may not be green next month. New Architecture support is worth a look, too — it's where Expo is going.

9. The 10-minute evaluation

# 1. Does it build green?
npm install && npm run check

# 2. Are the screens real? (should be small numbers)
grep -rl "TODO" src/ | wc -l
grep -rn "return null" src/ | wc -l

# 3. Is there a release path?
ls scripts/ 2>/dev/null; grep -n "gradlew\|xcodebuild\|eas" package.json

# 4. What's the licence?
head -20 LICENSE*

Ten minutes here saves a week there.

If you'd rather start from one that already passes

This is the checklist we build against, so it's the one we'd apply to ourselves: the free Expo + TypeScript starter is the base, and the production kits add the gates, the tests, the release scripts, and a commercial licence. Either way — run step 1 above on whatever you're considering. It'll tell you more than any listing.