⚒ App Center CodePush retired — teams migrate in an afternoon

Your hotfix, on devices, before the meeting ends.

PatchForge delivers signed JavaScript & asset updates straight to your React Native users — KB-sized diffs, staged rollouts, one-click rollback. No store review in the loop.

free tier · no card required · 5-minute SDK setup

RSA-4096
every bundle signed, verified on-device
1 → 100%
staged rollouts, device-stable buckets
KB not MB
differential patches for returning devices
0
store review cycles for a JS fix

The pipeline

What actually ships to a device

Upload a full bundle once. Every returning device gets a tiny signed diff — verified before a single byte of new code runs.

Store build · v1.4.0
Full store bundle

The IPA/APK baseline your users installed.

~20–30 MB
OTA release · v1.4.0.87
Your fix

− Checkout.tsx+ Checkout.tsx+ assets/banner.png

changed files only
PatchForge worker
Forge the release

Hash → sign → diff against recent releases. Automatic on upload.

sha256 + RSA-4096
Channel · Production
Staged delivery

Devices bucket deterministically into your rollout percentage.

patch · KB-scale
Client device
Verify & apply

Checksum ✓ signature ✓ — the patch applies and activates on restart.

✓ verified install

Sizes illustrative — a typical RN bundle vs. a single-fix diff. Devices too far behind simply get the full (still signed) bundle.

Ship from CI

One command from merge to devices

A CLI and GitHub Action that publish, sign, and deploy in a single idempotent step — re-running a pipeline never double-publishes.

  • Personal access tokens, scoped per app
  • Auto-incrementing bundle versions
  • Works with any CI — it's just one command
ci — publish
$ npx @zimbstech/patchforge-cli release \    --app my-app --channel Production \    --bundle ./build/index.android.bundle# uploading → signing → patching✓ v1.4.0.87 deployed to Production at 10%
Installs
4,812
Crash-free
99.8%
Failures
3
Action
dial to 100% ▸

Stay in control

Roll out at your pace. Roll back in one click.

Start at 1%, watch installs and crash-free rate live, then dial up. If anything looks wrong, one click re-activates the previous release — devices pick it up on their next check.

  • Device-stable bucketing — nobody flip-flops
  • Per-release health score
  • Rollback needs no store submission

Built for production

Everything between "merged" and "running on devices"

Channels & staged rollouts

Production, staging, or any channel you define. Roll out to 1%, watch the numbers, then dial to 100 — devices bucket deterministically, so nobody flip-flops between versions.

Instant rollback

One click in the dashboard re-activates the previous release on a channel. Devices pick it up on their next check — no store submission, no waiting.

Differential patches

Devices that are one or two releases behind download a binary diff, not the whole bundle. Full download only when a patch would be larger.

Signed & checksummed

RSA-4096 signatures and sha256 checksums verified on-device before a byte of new code runs. A tampered or truncated bundle never activates.

CI/CD in one step

A GitHub Action and a CLI that publish a release from any pipeline with a personal access token. Idempotent — re-running a job never double-publishes.

Release health, live

Downloads, installs, failures, and crash-free rate per release — with a health score that tells you whether to keep rolling out or roll back.

Store-compliant by construction

OTA updates ship interpreted JavaScript and assets only — never native binaries. The pipeline enforces the boundary Apple and Google allow, so your app stays in good standing.

Read the compliance notice →

FAQ

The questions engineers actually ask

Is this allowed on the App Store / Play?

Yes — OTA may ship interpreted JS & assets, never native code. The pipeline enforces that boundary; read the compliance notice.

What happens to devices mid-rollout?

Each device hashes into a stable bucket, so a 20% rollout is the same 20% on every check until you change it.

How big are updates?

Returning devices get a binary diff — usually KB-scale. If the diff would be larger than the bundle, they get the full one.

What if a bad bundle ships?

Roll back from the dashboard in one click; the previous release re-activates on the next device check. Bundles are checksummed and signature-verified before running.

Migrating from CodePush?

Same mental model — deployments→channels, keys→appKey. Swap the SDK, point CI at our CLI. Most teams finish in an afternoon.

What does bandwidth cost?

Nothing. Plans meter monthly active devices — delivery to devices is never billed.

Forge your first patch tonight

Free tier, no card. Install the SDK, upload a bundle, watch a device update itself.