Cross-platform Expo starter for Platform Blocks — one codebase that ships native iOS and Android apps and a statically rendered, SEO-ready website. Website-style pages with shared header navigation, per-route meta tags, and flash-free dark mode.
Click Use this template on GitHub to create your own repository from it, or scaffold directly:
npx create-expo-app@latest my-app --template https://github.com/platform-blocks/universal-templatenpm install
npx expo startPress i for iOS simulator, a for Android emulator, or w for web.
Build the website:
npx expo export --platform webEvery route in app/ becomes its own prerendered HTML file in dist/ — deployable to any static host (GitHub Pages, Netlify, Vercel, ...).
@platform-blocks/uiwith all required peer dependencies installed- Website-style pages — a landing page and about page with a shared
SiteHeader, navigable natively on mobile and as real URLs on the web - Per-route SEO —
expo-router/headsets each page's title and meta description in the static export - Flash-free dark mode — a pre-hydration script in
app/+html.tsxapplies the visitor's saved theme before first paint; theThemeTogglecycles light → dark → auto and persists - Jest (
jest-expo) with an example component test, ESLint, TypeScript strict, EAS build profiles stubbed
| Script | What it does |
|---|---|
npm start |
Start the Expo dev server |
npm test |
Run the Jest test suite |
npm run lint |
Lint with ESLint |
npm run typecheck |
Type-check with tsc --noEmit |
- Getting started — installation, provider, first component
- Components — every component with live demos
- expo-template — app-style starter with tab navigation
- expo-min-template — the minimal starter
MIT