create-expo-interview-starter
v0.0.6
Published
This repository is a practical starter for building React Native apps with Expo. It is meant to be cloned, read quickly, and used as the base for common interview or freelance tasks.
Readme
Expo Starter Kit
This repository is a practical starter for building React Native apps with Expo. It is meant to be cloned, read quickly, and used as the base for common interview or freelance tasks.
Create a fresh project
Use the starter command:
npx --yes create-expo-interview-starter MyApp
cd MyAppThis command works when the package is published to npm. It creates the fresh Expo app from the starter package directly, so you do not need GitHub, a zip file, or copy-paste during the round.
Publish once
- Log in to npm with
npm login. - Make sure the package name is available.
- Run
npm publish. - On another machine, use
npx --yes create-expo-interview-starter MyApp.
Recommended folder structure
src/
App.tsx
components/
ui/
AppButton.tsx
AppCard.tsx
AppText.tsx
Screen.tsx
config/
env.ts
localization/
i18n.ts
translation/
en.ts
gu.ts
navigation/
index.tsx
screens/
app-screens/
Home/
index.tsx
theme/
ThemeProvider.tsx
theme.tsWhat this starter includes
- Expo entry setup with
expo/AppEntry expo-fontloading for bundled fonts- Theme provider with light and dark palettes
- Translation setup with English and Gujarati
- Small reusable UI kit for button, card, text, and screen wrappers
- Environment helper for
EXPO_PUBLIC_variables - One default home screen that shows the patterns in one place
What to keep in every practical project
- Start with one screen and one flow.
- Keep state local unless the task truly needs shared state.
- Add loading, empty, and error states early.
- Use small reusable components only when something repeats.
- Keep the UI polished and simple before you add extra libraries.
Essential configs
app.jsonfor app name, slug, bundle IDs, and Expo settingsbabel.config.jsforbabel-preset-expometro.config.jsfor Expo Metro config.env.examplewithEXPO_PUBLIC_variables.gitignoreupdated for.env,.expo,.expo-shared, andweb-build
Main UI building blocks
AppTextfor consistent typographyAppButtonfor primary actionsAppCardfor cards and sectionsScreenfor safe area, scroll, and background handling
Theme setup
ThemeProvidermanages dark and light modestheme.tsstores shared spacing, radius, typography, and colorsuseAppTheme()exposes the active theme and atoggleTheme()action
Language setup
i18n.tsinitializesi18next- The app detects the device language first
- Language choice is cached in
AsyncStorage - Translation files live in
src/localization/translation
Environment setup
Copy the example file:
cp .env.example .envUse client-safe variables with EXPO_PUBLIC_:
EXPO_PUBLIC_API_BASE_URL=https://api.example.com
EXPO_PUBLIC_APP_ENV=developmentRead them through src/config/env.ts.
Useful scripts
yarn startto launch Expoyarn start:clearto clear the Metro cacheyarn androidto run a dev build on Androidyarn iosto run a dev build on iOSyarn webto open the web buildyarn prebuildto generate native folders when neededyarn doctorto verify the Expo environmentyarn lintto check code styleyarn typecheckto verify TypeScriptyarn android:cleanto clean Android buildsyarn ios:podsto install iOS pods after prebuild
How to start writing a feature
- Read the requirement and identify the main screen.
- Sketch the flow with static data first.
- Add local state and handlers.
- Connect API or storage only after the UI works.
- Add loading, empty, and error states.
- Refine spacing, typography, and edge cases.
Notes
- This starter uses Expo prebuild and dev builds, so it works like a modern native app workflow.
- It intentionally leaves out
react-native-reanimatedfrom the base install to avoid dependency conflicts; add it only when a task truly needs advanced animations or drawer-style gestures. - When adding new Expo-compatible packages, prefer
npx expo install package-name. - If you want the Expo default app-router style instead of React Navigation, you can swap the navigation layer later without changing the theme, translation, or component structure.
