A community-driven port of Microsoft's CodePush Standalone, designed for cost-effective and scalable over-the-air updates using Cloudflare Workers.
No Servers Needed! You can now use CodePush Standalone without managing any infrastructure, nor needing an understanding of it!
Status: Alpha - Under Development 🧪 - Core functionality is 100% compatible ✅ with the official CodePush, but further testing and improvements are ongoing.
Important Note: This project is not affiliated with, maintained, or endorsed by Microsoft or the CodePush team. It's a community initiative aimed at providing a more accessible and affordable alternative.
This project addresses a crucial need for a reliable and cost-effective solution following Microsoft's planned shutdown of AppCenter CodePush in March 2025, without requiring migration to other solutions like EAS.
The official CodePush Standalone server:
- Is not readily deployable as a true standalone solution.
- Requires a complex setup with Azure infrastructure.
- Has a difficult-to-maintain codebase with a less-than-ideal TypeScript implementation.
This project provides a seamless, drop-in replacement 🔌 using Cloudflare Workers, resolving these issues.
This project significantly reduces operational costs by utilizing Cloudflare's infrastructure. Here's a detailed breakdown of the estimated monthly costs:
Service | Azure (Original) | Cloudflare Workers (This Project) |
---|---|---|
Compute | ||
Azure App Service | $13.14 (Basic B1) | $0 (Free Tier Handles 3M Requests) |
Caching | ||
Azure Cache for Redis | $16.43 (Basic C0) | $0 (Using Cloudflare D1 as a cache, this is fast enough) |
Storage | ||
Azure Blob Storage | ~$2.88 (min usage, incl Queue & Table) | $0 (10GB Free, 1M Class A/10M Class B with R2) |
Azure Key Vault | $0.03 (10,000 operations) | $0 (integrated on R2) |
Total Estimated | ~$32.48 | $0 (Free Tier) |
Traditional deployments of the official CodePush Standalone on Azure require an estimated ~$32.48 per month, while this project can handle up to 1 million monthly API requests entirely for free within Cloudflare's generous free tier and using it's R2 storage and D1 database.
Note: Network bandwidth cost is not included in the comparison. By using Cloudflare's infrastructure, network bandwidth cost is almost free for most use cases.
- ✨ Global, Serverless, Effortless: Deliver updates globally with low latency, powered by Cloudflare's edge network, all without managing any servers.
- ☁️ Integrated Cloudflare Infrastructure: Utilizes Cloudflare's D1 (SQLite-compatible) for data and R2 (S3-compatible) for package storage, eliminating the need for external services.
- 💰 Cost-Efficient: Operates within Cloudflare's cost-optimized serverless environment, minimizing operational overhead.
- 🚀 Simple Deployment: Deploy directly to Cloudflare Workers with a streamlined process.
- ✅ 100% API Compatible: Functions seamlessly with existing applications using the official CodePush API.
- ⚙️ Fully Compatible API: Implements the complete CodePush API.
- 💾 Cloudflare Storage: Leverages D1 (SQLite) and R2 (S3) for data and package storage.
- 🌐 Edge Delivery: Utilizes Cloudflare's edge network for fast updates.
- ⚡️ Seamless Deployment: Deploy your CodePush server to Cloudflare Workers with a streamlined and simplified process, reducing the setup time and effort
- Auth: Handles user authentication and session management. (Admin API)
- Github Auth: Supports authentication using GitHub OAuth.
- Acquisition: Provides update checks and download reports. (Client SDK API)
- Update Check: Handles update checks, version matching, and diff delivery.
- Metrics: Records deployment and download metrics and reports.
- Management: Handles app, deployment and release management. (Admin CLI API)
- App Management: Handles app creation, modification, deletion, and transfer.
- Deployment Management: Handles deployment creation, modification, and deletion.
- Release Management: Handles package publishing, promoting, and rollback.
- Collaborator Management: Handles collaborators addition, removal and listings.
- Metrics Management: Retrieves and displays deployment metrics
- Test with real-world scenarios and edge cases.
- Test with code-push-standalone CLI.
To be implemented. Not a high proirity at the moment because I'm focusing on the server side, and the CLI is ready to use.
While the official CodePush Standalone CLI can be used, a custom CLI is planned for far future releases.
Base Guide:
apps/server
: CodePush Standalone Server (Cloudflare Workers)apps/web
: Admin UI for managing apps, deployments, and releases (optional, Cloudflare Pages)
Note: Detailed instructions and commands for each step are TBD and will be added soon. Here's a high-level overview:
-
Clone the Repository:
git clone https://github.com/your-repo/code-push-cloudflare-workers.git cd code-push-cloudflare-workers
-
Install Dependencies:
corepack enable pnpm install
-
Configure Cloudflare:
- Install the
wrangler
CLI. - Authenticate with your Cloudflare account.
- Create a D1 database and an R2 bucket.
- Update
wrangler.toml
with your Cloudflare credentials and other environment variables in theapps/server
directory.
- Install the
-
Apply Database Migrations:
cd apps/server pnpm apply
or for production enviroment
pnpm apply:production
-
Deploy the Backend:
cd apps/server pnpm wrangler publish
-
Run the Admin UI:
cd apps/web pnpm dev
Licensed under the Apache License 2.0. See LICENSE for details.