NewNative iOS (SwiftUI) OTA is live
Private beta

Ship app updates instantly.
Skip the App Store.

Over-the-air code push for Flutter, React Native, and native iOS. Push code and UI changes to installed devices in seconds — no rebuild, no store review.

›_birdify — Flutter
$ birdify flutter create shop_app
  linked · shop_app on birdify cloud
$ birdify release
  → bundling ▓▓▓▓▓▓▓▓░░ 4.2 MB
$ birdify patch
✓ patch #3 live · 1,240 devices on next launch
$curl -fsSL https://birdify.dev/install.sh | sh

One CLI for every mobile stack

FlutterReact NativeSwiftUIExpoiOSAndroid

From week-long reviews to shipping in seconds.

Stop letting store review gate your releases. Birdify moves code and UI updates over the air, so you fix and iterate at the speed you build.

Before

  • Submit a build and wait days for App Store review
  • A one-line hotfix means a full resubmit
  • Users stay stuck on the old version for weeks
  • Staged rollouts and reverts are manual and slow

After

  • Run birdify patch — changes ship in seconds
  • Fixes apply on the next launch, no rebuild
  • Roll back a bad update instantly, fleet-wide
  • Every bundle is signed, verified, and fail-open
Get started

Set it up your way.

Wire it up by hand in a few minutes, or paste one line into your coding agent and let it do the whole thing.

Do it yourself

  1. 1Install the CLI and sign in from your terminal.
  2. 2Scaffold or link your app: birdify <framework> create.
  3. 3Cut a release, then birdify patch to ship over the air.

Let your agent do it

Recommended

Paste one line into Claude Code, Cursor, or Copilot — it installs Birdify, scaffolds your app, and wires the release + patch flow for you.

›_agent setup
# Paste into your coding agent
Set up Birdify OTA in this repo: install with curl -fsSL https://birdify.dev/install.sh | sh,
then follow birdify.dev/agent-quickstart to release + patch.
The workflow

The commands that ship your app.

Five commands, one flow: create, release, patch, rollback, status. The same workflow across Flutter, React Native, and native iOS.

›_birdify create
$ birdify flutter create shop_app
 scaffolded shop_app (iOS + Android)
 Birdify SDK wired · # ready to release
Built for production

Everything you need to ship safely.

Signed bundles, instant rollback, and per-device rollout tracking — the guardrails that make shipping over the air boring, in the best way.

patch #3withheld
patch #2live · restored

Instant rollback, fail-open

Pull a bad update fleet-wide in one command. Any patch that fails to boot auto-reverts to the last good bundle — users never get a broken app.

Sent1,240
Downloaded1,205
Installed1,190

Per-device rollout tracking

Watch every update roll out — sent, downloaded, and installed — right from birdify status. Know exactly how much of your fleet is on the latest bundle.

bundle.sig
sha256 · 9f2c…a71b
verified

Signed & verified bundles

Every bundle is cryptographically signed and checksum-verified on device before it's ever applied. No downloaded native code — App-Store-safe by design.

Flutter React Native Native iOS Expo

One workflow, three stacks

The same commands work across Flutter, React Native (Expo & bare), and native iOS SwiftUI. Learn it once; ship everywhere.

Use cases

Three frameworks, one workflow.

Whatever you build with, Birdify moves your updates over the air the same way — create, release, patch.

Flutter

Ship Dart changes over the air on iOS and Android. Birdify diffs the compiled bundle and reconstructs it on device — hotfixes and UI tweaks land on the next launch.

See the docs

React Native

Push whole JS bundles to Expo and bare apps — architecture-independent, self-hostable, and CodePush-style. Swap the bundle on next launch with device tracking built in.

See the docs

Native iOS

Write plain SwiftUI. Birdify transpiles the whole app to a Server-Driven-UI bundle rendered as real SwiftUI, so you ship UI and logic changes without a store release.

See the docs
FAQs

Frequently asked questions.

Everything you need to know about shipping over the air with Birdify.

Is shipping updates outside the App Store allowed?

Yes. Birdify moves interpreted code and UI data — not new native machine code — which is exactly what Apple (Guideline 2.5.2) and Google permit for over-the-air updates. Adding new native code or SDKs still needs a normal store release.

How do rollbacks work?

Run birdify rollback to withhold a bad update — devices revert to the last good bundle on their next launch. It's also fail-open: any patch that fails to boot auto-reverts, so a broken update can never brick the app.

What can't ship as a patch?

Anything that adds new native code — a new SDK, a new Swift/Kotlin dependency, or new permissions — needs a fresh store release. Code, logic, and UI changes ship as patches.

How do I track a rollout?

birdify status shows per-device counts — sent, downloaded, and installed — so you always know how much of your fleet is on the latest bundle. Stage rollouts and pause anytime.

Which frameworks does Birdify support?

Flutter (iOS + Android), React Native (both Expo and bare apps), and native iOS built with SwiftUI. The same create → release → patch workflow works across all of them.

Is it secure?

Every bundle is cryptographically signed and checksum-verified on device before it's applied. No downloaded native machine code ever runs, which is what keeps it App-Store-safe.

How does native iOS OTA work without native code?

You write plain SwiftUI. Birdify transpiles the whole app into a Server-Driven-UI bundle that renders as real SwiftUI on device, with logic running in an in-app JavaScriptCore VM — Apple's blessed interpreter.

Is Birdify available now?

Birdify is in private beta. Install the CLI to explore, and request beta access to get an account provisioned for shipping to real devices.

Ship updates your users get instantly.

Install the CLI and start shipping over the air across Flutter, React Native, and native iOS. No rebuilds, no store review, no waiting.

$curl -fsSL https://birdify.dev/install.sh | sh
Want a hosted account in the private beta?