From 952d58f37cce47d780ef28e08876515d949bb987 Mon Sep 17 00:00:00 2001 From: "kirill.n" Date: Sat, 1 Aug 2026 13:51:55 +0100 Subject: [PATCH 1/3] REV-83: update readme with lates sdk and serice changes --- README.md | 512 ++++++++++++++++++++++++------------------------------ 1 file changed, 226 insertions(+), 286 deletions(-) diff --git a/README.md b/README.md index e3fa7c564..99f3d47f1 100644 --- a/README.md +++ b/README.md @@ -1,407 +1,347 @@ -#### [Sign up With Revopush](https://app.revopush.org/register) to use CodePush SDK +# Revopush React Native SDK -# React Native SDK for Revopush (CodePush compatible service) +![NPM Downloads](https://img.shields.io/npm/dm/%40revopush%2Freact-native-code-push) -This plugin provides client-side integration for the [CodePush service](https://revopush.org/), allowing you to easily add a dynamic update experience to your React Native app(s). +### Next-generation OTA updates for React Native and Expo - +[Revopush](https://revopush.org/) delivers JavaScript and asset updates directly to your users without waiting for a new App Store or Google Play release. Revopush 2.x replaces full-bundle downloads with automatic byte-level diffs, while keeping the familiar CodePush API and workflows. -* [How does it work?](#how-does-it-work) -* [Supported React Native Platforms](#supported-react-native-platforms) -* [Supported Components](#supported-components) -* [Getting Started](#getting-started) - * [iOS Setup](docs/setup-ios.md) - * [Android Setup](docs/setup-android.md) -* [Plugin Usage](#plugin-usage) -* [Releasing Updates](#releasing-updates) -* [Migrate from Appcenter to Revopush](#migrate-from-appcenter) -* [Continuous Integration / Delivery](#continuous-integration--delivery) -* [Multi-Deployment Testing](#multi-deployment-testing) - * [Android](docs/multi-deployment-testing-android.md) - * [iOS](docs/multi-deployment-testing-ios.md) -* [Dynamic Deployment Assignment](#dynamic-deployment-assignment) -* [API Reference](#api-reference) - * [JavaScript API](docs/api-js.md) - * [Objective-C API Reference (iOS)](docs/api-ios.md) - * [Java API Reference (Android)](docs/api-android.md) -* [Store Guideline Compliance](#store-guideline-compliance) -* [Debugging / Troubleshooting](#debugging--troubleshooting) -* [TypeScript Consumption](#typescript-consumption) +| **100x smaller payloads** | **Diffs from the first OTA** | **CodePush compatible** | +|---|---|---| +| Download only what changed. Actual savings depend on the update. | Create a native base release and the first OTA on top of it can already be a diff. | Migrate existing apps without rebuilding your release workflow from scratch. | - +[Dashboard](https://app.revopush.org) · [Documentation](https://docs.revopush.org/) · [How binary diff updates work](https://revopush.org/react-native-ota-payloads-binary-diffs) -## How does it work? +## Proven at global scale -A React Native app is composed of JavaScript files and any accompanying [images](https://reactnative.dev/docs/image), which are bundled together by the [metro bundler](https://github.com/facebook/metro) and distributed as part of a platform-specific binary (i.e. an `.ipa` or `.apk` file). Once the app is released, updating either the JavaScript code (e.g. making bug fixes, adding new features) or image assets, requires you to recompile and redistribute the entire binary, which of course, includes any review time associated with the store(s) you are publishing to. +| **1B+ requests processed** | **300M+ SDK installations** | **99.9% historical SLA** | **SOC 2 compliant** | +|---|---|---|---| +| Production traffic handled by the Revopush platform. | A mature delivery footprint across real-world applications. | A consistent track record of service availability. | Independently assessed security controls for production workloads. | -The CodePush plugin helps get product improvements in front of your end users instantly, by keeping your JavaScript and images synchronized with updates you release to the CodePush server. This way, your app gets the benefits of an offline mobile experience, as well as the "web-like" agility of side-loading updates as soon as they are available. It's a win-win! +Revopush runs on a geo-distributed architecture designed to deliver releases with low latency in every region, so teams can ship updates quickly to users anywhere in the world. -In order to ensure that your end users always have a functioning version of your app, the CodePush plugin maintains a copy of the previous update, so that in the event that you accidentally push an update which includes a crash, it can automatically roll back. This way, you can rest assured that your newfound release agility won't result in users becoming blocked before you have a chance to roll back on the server. It's a win-win-win! +## Contents -*Note: Any product changes which touch native code (e.g. modifying your `AppDelegate.m`/`MainActivity.java` file, adding a new plugin) cannot be distributed via CodePush, and therefore, must be updated via the appropriate store(s).* +- [Proven at global scale](#proven-at-global-scale) +- [What is Revopush?](#what-is-revopush) +- [How it works](#how-it-works) +- [Supported versions](#supported-versions) +- [Getting Started](#getting-started) + - [Set up with an AI agent](#set-up-with-an-ai-agent) + - [Manual React Native setup](#manual-react-native-setup) +- [Expo Support](#expo-support) +- [Plugin Usage](#plugin-usage) +- [Releasing Updates](#releasing-updates) +- [Advanced Workflows](#advanced-workflows) +- [API Reference](#api-reference) +- [Store Guideline Compliance](#store-guideline-compliance) +- [Troubleshooting](#troubleshooting) -## Supported React Native platforms +## What is Revopush? -- iOS (7+) -- Android (4.1+) on TLS 1.2 compatible devices +Revopush is a hosted OTA platform for React Native and Expo. It combines a dashboard, CLI, global delivery service, and client SDK so teams can publish, target, monitor, promote, and roll back JavaScript and asset updates. -We try our best to maintain backwards compatibility of our plugin with previous versions of React Native, but due to the nature of the platform, and the existence of breaking changes between releases, it is possible that you need to use a specific version of the CodePush plugin in order to support the exact version of React Native you are using. The following table outlines which CodePush plugin versions officially support the respective React Native versions: +- Compatible with the CodePush JavaScript API and established deployment workflows +- Supports modern React Native, including the New Architecture +- Supports Expo projects through the official config plugin +- Includes rollback controls for reverting a problematic release +- Provides extended analytics by individual release and across the entire application +- Supports multiple deployments, gradual rollouts, code signing, and CI/CD integrations -| React Native version(s) | Supporting CodePush version(s) | -|-------------------------|------------------------------------------------------------------------------------------------------| -| *(Requires [react-native-maps](https://github.com/lelandrichardson/react-native-maps) `>=O.3.2`)* | `image` | -| `ProgressViewIOS` | `progressImage`, `trackImage` | -| `TabBarIOS.Item` | `icon`, `selectedIcon` | -| `ToolbarAndroid`
*(React Native 0.21.0+)* | `actions[].icon`, `logo`, `overflowIcon` | -| `Video` | `source` | +## Supported versions -The following list represents the set of components (and props) that don't currently support their assets being updated via CodePush, due to their dependency on static images and videos (i.e. using the `{ uri: "foo" }` syntax): +Use the Revopush 2.x SDK for all new integrations: -| Component | Prop(s) | -|-------------|----------------------------------------------------------------------| -| `SliderIOS` | `maximumTrackImage`, `minimumTrackImage`, `thumbImage`, `trackImage` | -| `Video` | `source` | - -As new core components are released, which support referencing assets, we'll update this list to ensure users know what exactly they can expect to update using CodePush. - -*Note: CodePush only works with Video components when using `require` in the source prop. For example:* - -```javascript -