Self-hosted OTA (Over-The-Air) update server for Expo and React Native applications.
Skip the app store review process and deliver updates to your users instantly.
OTAShip is a complete solution for managing OTA updates, consisting of:
| Component | Description |
|---|---|
| backend | Go server handling update distribution, analytics, and CDN integration |
| admin-dashboard | Next.js web dashboard for managing updates and projects |
| otaship-cli | Command-line tool for publishing updates |
| expo-client | Example Expo app demonstrating OTA integration |
- Instant Updates — Push JavaScript bundle updates without app store review
- Multi-Project — Manage multiple Expo apps from a single server
- Gradual Rollouts — Release updates to a percentage of users
- Multiple Channels — Separate production, staging, and beta releases
- Analytics — Track download counts and update adoption
- CDN Support — Cloudinary integration for global asset delivery
- Code Signing — Optional RSA-SHA256 manifest signing
cd backend
cp .env.example .env
# Configure MongoDB and Cloudinary credentials
go run .Or deploy to Render with one click:
cd admin-dashboard
npm install
cp .env.example .env.local
# Set NEXT_PUBLIC_API_URL to your backend URL
npm run devUpdate app.json:
{
"expo": {
"slug": "my-app",
"runtimeVersion": "1",
"updates": {
"url": "https://your-server.com/api/my-app/manifest",
"enabled": true
}
}
}cd my-expo-app
otaship init
otaship┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Expo Client │────▶│ OTAShip API │────▶│ Cloudinary │
│ (Mobile App) │ │ (Go + Gin) │ │ (CDN) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MongoDB │ │ Admin Dashboard│ │ OTAShip CLI │
│ (Metadata) │ │ (Next.js) │ │ (Go Binary) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Backend Setup — Server configuration and API reference
- CLI Usage — Publishing updates from command line
- Dashboard Guide — Managing projects and updates
- Go 1.21+
- Node.js 18+
- MongoDB Atlas (or local MongoDB)
- Cloudinary account (optional, for CDN)
MIT