| name | new-expo |
| description | This skill should be used when the user asks to "create a mobile app", "set up an Expo project", "scaffold a React Native app", "new expo app", "build an iOS app", "build an android app", or mentions "expo", "react native", "mobile app", "mobile application" in the context of starting a new project. Note — this template is coming soon and the repo is not yet published. |
Expo Template Setup
Coming soon. The niskan516/expo-template repository is not yet published. This skill documents the planned setup flow. Inform the user that this template is not yet available and offer to proceed once the repo is published.
Scaffold a new mobile application from the niskan516/expo-template repository.
Prerequisites
git installed
bun installed (package manager)
- EAS CLI installed (
bun add -g eas-cli)
- Xcode (for iOS development on macOS)
- Android Studio (for Android development)
Step 1: Collect Information
Ask the user for all of the following:
| Input | Format | Example | Used In |
|---|
| App name | Display name | My App | app.config.ts name |
| App slug | URL-safe identifier | my-app | app.config.ts slug, package.json |
| URL scheme | No hyphens, for deep linking | myapp | app.config.ts scheme |
| Bundle ID | Reverse domain | com.example.myapp | app.config.ts |
| EAS project ID | UUID from EAS | xxxxxxxx-xxxx-... | app.config.ts |
| Expo owner username | String | myusername | app.config.ts, CI workflows |
| Apple Team ID | 10-char string | ABCDE12345 | eas.json |
| App Store Connect ID | Numeric string | 1234567890 | eas.json |
If invoked from the new-project router skill, project name and target directory are already provided. Use project name as the app slug.
Step 2: Clone
This template is a standalone repo:
TARGET_DIR="<target-directory>/<app-slug>"
git clone --depth 1 https://github.com/niskan516/expo-template.git "$TARGET_DIR"
Step 3: Customize
Primary Approach — Interactive Setup Script
cd "$TARGET_DIR"
bun run setup
This runs an interactive script that handles all replacements. Provide the collected values when prompted.
Fallback — Manual Replacements
If bun run setup is unavailable or fails, perform these replacements manually:
app.config.ts
| Find | Replace With |
|---|
expo-template (name) | <app-name> |
expo-template (slug) | <app-slug> |
expotemplate (scheme) | <url-scheme> |
com.example.expotemplate | <bundle-id> |
__EAS_PROJECT_ID__ | <eas-project-id> |
__EXPO_OWNER__ | <expo-owner> |
eas.json
| Find | Replace With |
|---|
__ASC_APP_ID__ | <app-store-connect-id> |
__APPLE_TEAM_ID__ | <apple-team-id> |
package.json
| Find | Replace With |
|---|
expo-template | <app-slug> |
.github/workflows/*.yml
| Find | Replace With |
|---|
__EXPO_OWNER__ | <expo-owner> |
expo-template | <app-slug> |
Step 4: Initialize
cd "$TARGET_DIR"
rm -rf .git
git init
bun install
git add -A
git commit -m "Initial commit from expo template"
Step 5: Verify
bun run start
Confirm the Expo dev server starts without errors. Press q to quit after verification.
Post-Setup Reminders
After scaffolding, remind the user to:
- Set
EXPO_TOKEN in GitHub Secrets for CI/CD workflows
- Run
eas build:configure if not already configured
- Test on device/simulator:
bun run ios or bun run android
Tech Stack Summary
The scaffolded project includes:
| Category | Technology |
|---|
| Framework | Expo SDK 54, React 19, React Native 0.81 |
| Router | Expo Router 6 |
| State | Zustand 5, TanStack Query 5 |
| Styling | Unistyles 3 |
| Storage | MMKV |
| HTTP | ky |
| Validation | Zod 4 |
| i18n | Lingui 5 |
| Linting | Biome 2 |
| Testing | Jest 29 |
| CI/CD | EAS Build |