For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /docs/intro.md.

Cresc - Professional Over-the-Air Update Solution

Cresc (npm package: react-native-update npm version) is a professional Over-the-Air (OTA) update service for React Native teams shipping globally. It is designed to keep release workflows lean, stable, and cost-efficient from small apps to large production fleets.

Recommended integration path

If you use an AI coding tool that supports Skills, start with Install & Use Skills. Install the react-native-update Skill first, then let AI adapt the integration to your existing React Native or Expo project. The manual docs remain the fallback for brownfield apps, monorepos, and projects that need line-by-line review.

🚀 Why Choose Cresc?

Ultimate Update Experience

  • 🎯 Ultra-small update packages: Incremental updates based on bsdiff/hdiff keep a typical release to tens to hundreds of KB, and an exclusive Hermes-bytecode optimization takes a one-line hotfix all the way down to 3.4 KB — 99.8% less bandwidth than a full update (see benchmark below).
  • ⚡️ Lightning Fast Distribution: Global CDN delivery and incremental patch transport keep updates fast and reliable with a 99.9%+ success rate.
  • 🛡️ Secure and Reliable: Built-in crash rollback mechanism automatically reverts failing patches, guaranteeing stability.
  • 🌐 Full Platform Support: Flawless support for iOS and Android.
  • 🔍 Deep React Native Integration:
    • Expo - Seamless integration
    • New Architecture - Immediate support
    • Hermes - Full bytecode translation
  • 📖 Open Source Ecosystem: The client SDK, CLI tools, and admin UI are fully open source on GitHub. Transparent and auditable logic means you can host your own servers without vendor lock-in.
  • 🐞 Free built-in crash reporting: JavaScript errors from your OTA versions are collected, grouped by fingerprint, and symbolicated back to your original source with the source map archived at publish time — the Sentry-style workflow, included free on every plan with no extra service, event quota, or SDK to install. See JS Error Monitoring.
  • 📊 Full Release Visibility: The dashboard ships with built-in analytics, percentage-based staged rollouts, and release health monitoring — see every release's adoption and stability at a glance, no extra data pipeline needed.
  • 🔒 Data Security: Intercept and handle data analytics yourself. You retain full control.
  • 💬 Professional Support: Dedicated technical support to troubleshoot issues and keep your app stable.
  • 🏆 Proven Track Record: Running reliably since 2016, powering numerous well-known apps and enterprises.

📊 Benchmarked: a diff algorithm purpose-built for Hermes

Hermes bytecode resists generic binary diffing in two independent ways. Cresc removes both, and the gains stack:

  • Hermes re-sorts its string table on every compile, so a one-line JS edit renumbers most string IDs and two nearly identical bytecode files end up differing almost everywhere. Cresc compiles each release against an earlier bytecode of the same app, pinning those IDs so that only real changes ever reach the diff.
  • Hermes bytecode is also full of offset tables, where inserting a few bytes shifts every offset after it. Cresc applies an exclusive HBC (Hermes bytecode) structure-aware reversible transform that removes this amplification at the source.

Measured on a real React Native 0.86 app (~4.4 MB bytecode; the benchmark code and data are fully open and reproducible):

Release scenarioFull updateClassic incremental (bsdiff)Cresc incremental (Hermes-optimized)
One-line text change1.9 MB93.7 KB3.4 KB (28× smaller)
Small feature (~60 LOC)1.9 MB411.6 KB50.2 KB (8.2× smaller)
Medium feature (~300 LOC)1.9 MB551.6 KB97.8 KB (5.6× smaller)
  • A one-line hotfix ships in 3.4 KB99.8% less than a full update, and 28× smaller than a classic bsdiff incremental update
  • The smaller the change, the bigger the win — exactly the high-frequency hotfix scenario OTA is for
  • Nothing to change in your app: both optimizations run at build time, so apps already in the store benefit from their next release onwards
  • Fail-safe by design: each build is verified against an unoptimized one and any mismatch falls back automatically; new Hermes versions are supported with zero client-side changes

💰 Unbeatable Value: Up to 80%+ Savings vs Expo Updates

Compared to other alternatives, Cresc is far more cost-efficient, faster, and predictable:

FeatureCrescExpo Updates (EAS Update)CodePush (Discontinued)
Entry PriceFree plan or $19/mo (10K checks/day)$19/mo (capped at 3K update MAUs)Free (No longer available)
Production Scale$99/mo (1,000,000 checks/day)$199/mo + usage feesDiscontinued
Overage Fees$0 (Predictable flat tiers)$0.005/extra user + $0.10/GiB bandwidthN/A
CDN BandwidthGlobal edge CDN includedMetered edge bandwidth overagesDiscontinued
Average Download Size~42 KB (HDiff delta patches)Multi-MB (Full bundle)Multi-MB
Crash ReportingIncluded free (Source-mapped JS stacks)Separate paid service (e.g. Sentry)None
Rollback SafetyAutomated rollback on boot crashManual rolloutsManual
Warning

Migrating from CodePush or Expo Updates: CodePush officially reached end-of-life on March 31, 2025, and Expo EAS Update imposes costly per-update-MAU and bandwidth overages. Whether you are replacing sunset CodePush or slashing your Expo update bills, Cresc provides a seamless drop-in migration with true delta updates and transparent pricing! See our CodePush & Expo Updates Alternative guide.

With Cresc, your team gains:

  • 90%+ reduction in CDN bandwidth costs
  • 10x faster iteration speeds (bypass app store review times)
  • Minute-level emergency bug fixes
  • 99%+ user update adoption rates
  • Flexibility in development cycles

Simple to Use

// Integrate in 3 lines of code
import { UpdateProvider, Cresc } from "react-native-update";

const crescClient = new Cresc({ appKey });

<UpdateProvider client={crescClient}>
  <App />
</UpdateProvider>

Built-in policies available out of the box:

  • 🔕 Silent Updates - Background downloads, completely transparent to users
  • 💬 Prompted Updates - Friendly system alerts for available patches
  • ⚙️ Custom Strategies - Fully API-driven flow control

🚦 Get Started

Recommended onboarding flow:

  1. Install & Use Skills - Recommended AI-first integration path
  2. Installation & Config - Prepare dependencies and native config
  3. Code Integration - Review or fine-tune the generated wrapper code
  4. Publish Updates - Ship new OTA versions from your CLI
Info

Not sure if this fits your project? Check our FAQ, start a thread in GitHub Discussions, or email us at [email protected].

Start using Cresc today, and bring a professional OTA update workflow to your React Native app!

Understand each release after shipping

Use Analytics to explore update outcomes, version funnels, activation timing, regional traffic and failure reasons. Follow each OTA release from delivery to adoption.