BuildingNative iOS and native Android OTA — join the early-access list
SECURITY MODEL

Signed, verified, and reversible by default

Shipping code over the air shouldn't mean trusting it blindly. Every Birdify bundle is cryptographically signed, verified on the device before it runs, and revertible in one command — and no native code is ever downloaded.

EVERY RELEASE
Signed bundles
APP-STORE SAFE
No native code

Verified on the device

Bundles are signed with your project key at publish time and delivered over TLS 1.3. Before applying an update, the SDK re-computes its SHA-256 checksum and checks the signature — anything that doesn't match is dropped, and the app keeps the last good bundle.

TLS 1.3ED25519 SIGNATURESHA-256
fetch bundle → patch #3 (4.2 MB)verify sha256 … ok 9f2c…a71bverify signature … ok key birdify:shop_appapply on next launch ✓

Fail-open rollback

A patch that fails to boot auto-reverts on device, and one command pulls it from the whole fleet. Broken updates never strand your users.

How rollback works

Access & delivery

Publishing is scoped per project and gated by API keys you control. Bundles are served from edge storage over encrypted transport — and you can self-host so they never leave your infrastructure.

Encrypted transportTLS 1.3
Per-project keysSCOPED
Self-hostingSUPPORTED

Signed at publish time

Every release and patch is signed the moment it's cut. Verify any artifact yourself — the same check the SDK runs on device before it applies an update.

›_birdify verify
$ birdify verify patch#3 checksum 9f2c…a71b signer birdify:shop_app signature valid ✓ native code none safe to apply ✓

Read the full security model

The docs walk through signing, on-device verification, the rollback state machine, and how to run Birdify self-hosted — with the exact commands.

Security FAQs

No. Birdify only pushes managed bundles — Dart for Flutter and the JS bundle for React Native, and a Server-Driven-UI description for the native iOS and native Android runtimes in development. No compiled native binaries are ever downloaded or executed, which is exactly what keeps over-the-air updates within App Store and Play Store policy.

Every release and patch is signed with your project's private key at publish time. Before a bundle is applied, the SDK verifies the signature and a SHA-256 checksum on the device. If either check fails — a tampered or truncated bundle — it is rejected and the app keeps running the last known-good version.

Patches are fail-open. A patch that throws on boot or fails its health check is automatically reverted on-device to the last good bundle, and you can pull it fleet-wide with `birdify rollback`. Users never get stuck on a broken build.

Yes. Birdify is self-hostable — you can run the update server in your own environment so signed bundles are served from infrastructure you control and never leave your network.

Birdify is in private beta. We're building on the practices formal audits expect — signed artifacts, least-privilege access, encrypted transport — and third-party attestation (SOC 2) is on the roadmap rather than something we claim today. If you have specific compliance needs, reach out at security@birdify.dev.

Signed bundles
No native code
Fail-open rollback
Self-hostable

Ship updates your users get instantly.

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

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