Skip to content

Mobile Development Guide

This guide provides a complete overview of mobile development for the PersiaNation project, covering everything from initial setup to production releases.

The mobile development documentation is organized into several key areas:

  • Mobile App Installation: Initial setup and development environment
  • Development workflow and local testing
  • Environment configuration and prerequisites
  • Mobile App Release & CI/CD: Complete release process
  • Over-the-Air (OTA) updates with Expo
  • App store submission and management
  • Version management and release planning
Terminal window
# Start development server
pnpm start
# Run on specific platforms
pnpm android
pnpm ios
# Testing
pnpm test
pnpm test:e2e
pnpm lint
pnpm type-check
# Building
eas build --profile development
eas build --profile staging
eas build --profile production
Terminal window
# OTA Updates
eas update --branch staging-branch --message "Bug fixes"
eas update --branch production-branch --message "New features"
# Store Submission
eas submit --platform ios --profile production
eas submit --platform android --profile production
# Release Management
gh release create v1.2.3 --title "Release v1.2.3"
  • Framework: React Native with Expo
  • Language: TypeScript
  • State Management: Context API / Redux Toolkit
  • Navigation: React Navigation
  • Styling: NativeWind (Tailwind CSS for React Native)
  • Testing: Jest, Detox (E2E)
PersiaNation/
├── src/
│ ├── app/ # App screens and navigation
│ ├── components/ # Reusable UI components
│ ├── lib/ # Utilities and configurations
│ ├── api/ # API client and services
│ └── types/ # TypeScript type definitions
├── assets/ # Images, fonts, and static assets
├── .github/workflows/ # CI/CD automation
├── app.config.ts # Expo configuration
├── eas.json # EAS Build configuration
└── package.json # Dependencies and scripts
EnvironmentPurposeDistributionChannel
DevelopmentLocal developmentInternaldevelopment
StagingPre-production testingInternalstaging
ProductionLive app releasesStoreproduction
Terminal window
# Create feature branch
git checkout -b feature/new-authentication
# Start development server
pnpm start
# Make changes and test locally
pnpm test
pnpm lint
# Commit changes
git add .
git commit -m "feat: add biometric authentication"
git push origin feature/new-authentication
Terminal window
# Run full test suite
pnpm test:all
# Build for staging
eas build --profile staging --platform all
# Deploy OTA update for testing
eas update --branch staging-branch --message "Feature testing"
Terminal window
# Update version
npm version minor
# Create release tag
git tag v1.2.0
git push origin v1.2.0
# Automated process will:
# - Build production app
# - Submit to app stores
# - Deploy OTA update
# - Create GitHub release
  1. Quality Checks (on every push/PR)

    • TypeScript type checking
    • ESLint code quality
    • Unit and integration tests
    • E2E testing on Android
  2. Preview Builds (on hotfix branches)

    • Quick EAS updates for testing
    • PR preview links
    • Staging channel deployment
  3. Release Automation (on git tags)

    • Production builds
    • App store submission
    • GitHub release creation
    • OTA update deployment
  • Build Status: EAS Dashboard
  • App Performance: Expo Analytics
  • Crash Reporting: App Store Connect / Google Play
  • User Analytics: Custom analytics integration
  • TypeScript: Strict type checking enabled
  • ESLint: Comprehensive linting rules
  • Prettier: Consistent code formatting
  • Husky: Pre-commit hooks for quality checks
  • Unit Tests: Component and utility testing
  • Integration Tests: API and navigation flows
  • E2E Tests: Critical user journeys
  • Manual Testing: Device-specific validation
  • Bundle Size: Monitor and optimize app size
  • Memory Usage: Profile and fix memory leaks
  • Startup Time: Optimize app launch performance
  • Network: Efficient API calls and caching
  • Environment Variables: Secure credential management
  • API Security: Proper authentication and authorization
  • Data Protection: Secure local storage
  • Code Obfuscation: Production build security
Terminal window
# Clear Metro cache
pnpm start --clear
# Reset Metro bundler
npx react-native start --reset-cache
Terminal window
# Clear EAS cache
eas build --clear-cache
# Check build logs
eas build:list --limit 5
eas build:view <build-id>
Terminal window
# Check channel configuration
eas channel:list
# Verify update deployment
eas update:list --branch production-branch
# Rollback if needed
eas update:rollback --branch production-branch
  • Expo DevTools: Built-in debugging tools
  • React Native Debugger: Advanced debugging
  • Flipper: Mobile app debugging platform
  • EAS Dashboard: Build and update monitoring
  • Team Documentation: Project-specific guides and procedures
  • Code Reviews: Peer feedback and knowledge sharing
  • Team Meetings: Regular sync and problem-solving sessions
  • Expo Support: For platform-specific issues
  • Community Forums: For general React Native questions
  • Stack Overflow: For technical problem-solving

For specific implementation details, refer to the linked documentation sections above. Each guide provides comprehensive information for its respective area of mobile development.