Skip to content

s-kvng/expo-forge-starter

Repository files navigation

Expo Forge Starter

TypeScript-first Expo + Expo Router + Uniwind + HeroUI Native starter focused on speed, clarity, and good defaults. Ships with multi-theme support, an opinionated project structure, utility helpers, and ready-made screens.

Branches: The default branch is Expo Go-compatible. The main branch includes additional batteries — auth with Clerk(coming soon), backend with Convex(coming soon), and more.

Tech Stack

Category Tool
Framework Expo (SDK 55) + React Native 0.83
Routing Expo Router (file-based, typed routes)
UI Components HeroUI Native
Styling Uniwind (Tailwind CSS v4) + Tailwind Variants
State Zustand with persist middleware
Keyboard react-native-keyboard-controller
Bottom Sheets @gorhom/bottom-sheet
Fonts Poppins + Inter via expo-font
Tabs Native Tabs (expo-router/unstable-native-tabs) with web fallback
Storage expo-sqlite/kv-store (native) / localStorage (web)

Features

  • Multi-theme system — Base light/dark plus color themes (lavender, mint, sky) with light/dark variants each, all using OKLCH color tokens
  • HeroUI Native components — Pre-configured provider with toast support and keyboard avoidance
  • Native tab bar — Platform-native tabs on iOS/Android with SF Symbols and Material icons, web fallback
  • Theme switchinguseAppTheme() hook with setTheme() and toggleTheme() via Uniwind.setTheme()
  • Unified storage — Single adapter for Zustand persistence across native and web
  • Bottom sheets@gorhom/bottom-sheet with blur backdrop support (expo-blur)
  • cn() utility — Tailwind class merging via clsx + tailwind-merge
  • Custom AppText — Drop-in text component with Poppins font family
  • React Compiler — Enabled via reactCompiler: true experiment
  • Typed routes — Full type safety for navigation

Project Structure

src/
  app/             Route pages & layouts (theme/ has its own Stack layout)
  components/      UI components (shared/, ui/, icons/, examples/)
  constants/       Theme colors, fonts, spacing, tab config
  context/         React contexts (AppThemeContext for multi-theme)
  providers/       Provider composition (RootProvider)
  hooks/           Custom hooks (color scheme, large header options)
  helpers/         Helper functions & hooks (accessibility, OTA updates, strings)
  lib/             Utilities (cn(), unified storage adapter)
  store/           Zustand store (auth, theme, profile, preferences)
  services/        API & integrations
  themes/          CSS theme files (lavender, mint, sky, alpha)
  interfaces/      TypeScript interfaces by domain
  types/           Type definitions
  global.css       Tailwind/Uniwind/HeroUI Native theme config

Get Started

  1. Clone the repo

    git clone https://github.com/s-kvng/expo-forge-starter.git
    cd expo-forge-starter
  2. Install dependencies

    bun install   # or: npm install / yarn / pnpm
  3. Start the dev server

    bun expo start

    From there you can open the app in:

  4. Start editing — Routes live in src/app/. The project uses file-based routing.

Scripts

Command Description
bun expo start Start the dev server
bun expo start --ios Start on iOS simulator
bun expo start --android Start on Android emulator
bun expo start --web Start on web
bun expo lint Run ESLint
bun run reset-project Reset to a blank project

Learn More

Community

Inspired By ❤️

This starter was built on the shoulders of:

About

This is an expo starter template with with some good defaults. Just think of it like expo with batteries

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Contributors