Development Scripts
Start Development Server
Launch the Expo development server:- Press
ito open iOS simulator - Press
ato open Android emulator - Scan the QR code with Expo Go on a physical device
Run on Platforms
iOS
- Production Build
- Development Mode
Android
- Production Build
- Development Mode
Build Scripts
Prebuild
Generate native iOS and Android projects:expo prebuild --clean which:
- Deletes existing
ios/andandroid/directories - Regenerates native projects from
app.jsonconfiguration - Applies all Expo config plugins
Run this after:
- Adding new native dependencies
- Modifying
app.jsonplugins - Changing native permissions
EAS Build - iOS
- Production
- Development
- Platform:
ios - Profile:
production - Non-interactive mode
- Auto-submit to App Store
eas build --platform ios --profile production --non-interactive --auto-submitEAS Build - Android
- Development
- Preview APK
- Platform:
android - Profile:
development - Development client enabled
eas build --platform android --profile developmentEAS Build Profiles are configured in
eas.json:development- Dev client, internal distributionpreview- Testing builds, internal distributionproduction- Production builds, auto-increment version
Submission Scripts
Submit builds to app stores using EAS Submit:iOS App Store
Android Play Store
Code Quality Scripts
Linting
Run ESLint to check for code issues:- Extends
eslint-config-expo - Prettier integration
- Unused imports detection
- TypeScript support
Type Checking
Run TypeScript compiler to check types:tsc --noEmit to validate TypeScript without emitting files.
Common issues:
- Missing type imports
- Incorrect prop types
- Untyped function parameters
Code Formatting
- Check Formatting
- Format Files
./**/*.{js,jsx,mjs,cjs,ts,tsx,json}Find Dead Code
- Unused exports
- Unused dependencies
- Unreachable code
- Duplicate exports
knip.json
Testing
Run Jest unit tests:jest-expo preset
UI Testing
Maestro Tests
Run end-to-end UI tests with Maestro:.maestro/ directory.
Prerequisites:
- Install Maestro CLI:
brew tap mobile-dev-inc/tap && brew install maestro - Build app for simulator/emulator
- Ensure device is running
Build Utilities
Theme Generation
Build background theme metadata:scripts/build-background-themes.js to:
- Extract colors from background images
- Generate theme metadata
- Create palette definitions
- Output to
scripts/background-themes-metadata.json
Screenshot Utilities
Resize and optimize app screenshots:scripts/resize-screenshots.js to:
- Resize screenshots for App Store
- Optimize image sizes
- Generate required dimensions
Automation Scripts
FreedomStore Release
Create a pull request to FreedomStore:scripts/create-freedomstore-pr.sh which:
- Clones FreedomStore repository
- Updates Sovran metadata
- Creates a pull request
- Automates release process
Lifecycle Hooks
Post-Install
Automatically runs afteryarn install or npm install:
patches/ directory:
coco-cashu-core+1.1.2-rc.47.patchcashu-kym+0.4.1.patch
Patches are created with
npx patch-package <package-name> after modifying node_modules.Script Execution Order
For a typical development workflow:Production Build Workflow
iOS Production Release
Android Production Release
Troubleshooting
Clear Cache
If you encounter build issues:Build Errors
If EAS builds fail:Type Errors
If type checking fails:CI/CD Integration
GitHub Actions Workflow
The repository includes a CI workflow (.github/workflows/ci.yml) that runs:
Environment Variables
EAS Build Environment
Configure per-profile environments ineas.json:
Local Development
No.env file is needed for basic development. Sensitive values are stored in:
expo-secure-store- Runtime secretseas.json- Build secrets (use EAS Secrets for sensitive data)
Next Steps
Getting Started
Set up your development environment
Project Structure
Understand the codebase organization
Tech Stack
Learn about the technologies used
Contributing
Contribution guidelines and workflow