React Native SDK
React Native SDK release notes
Release notes for @codemagic/react-native-patch. The server version each SDK
version requires, and the notes for the other surfaces, are on the
Release Notes page.
npm install @codemagic/react-native-patch@latest
Reference: SDK reference · GitHub releases
0.5.0
23rd September 2026 · Requires server 0.5.0 or newer
Patch.wrap
Patch.wrap wraps your root component and runs an update check after it
mounts:
import * as Patch from "@codemagic/react-native-patch";
export default Patch.wrap(App);
The app renders without waiting for the check. Set
checkFrequency: CheckFrequency.ON_APP_RESUME to also check whenever the app
returns to the foreground. Other options are passed through to sync(), and
install behavior is unchanged. Mounting the wrapped root marks the running
update as healthy. If your app needs to finish an async startup step first,
call sync() after that step instead of using Patch.wrap.
CodemagicPatchMaxLaunchAttempts
Added the optional CodemagicPatchMaxLaunchAttempts setting (Info.plist on
iOS, strings.xml on Android). It sets how many launches a pending update may
make without notifyAppReady() before it is rolled back. The default is still
3. In Expo projects, set it with the config plugin's maxLaunchAttempts option.
- Lifecycle names (requires server 0.5.0):
Installedis nowReady(the update is prepared for the next launch), andSuccessis nowApplied(the update is running and confirmed bynotifyAppReady()). Servers 0.4.x and earlier drop these events, so upgrade the server before shipping an app build with this SDK. - Development warning: In development builds, a failed
sync()now logs a warning with the reason, even when nothing reads its result, as withPatch.wrap. Release builds do not log it. A wrong deployment key or server path returns "no update" and does not trigger the warning. - Duplicate Applied events: Concurrent
notifyAppReady()calls no longer report the same update as applied more than once. - React Native 0.87: Fixed type errors in strict TypeScript apps.
See the SDK reference and SDK release.
0.4.0
14th September 2026
isNextVersionReady()
Added isNextVersionReady(), which reports whether a different OTA package is
installed and waiting for the next reload. Use it to show an “Update ready”
prompt while the current bundle keeps running. It does not report a staged
return to the embedded bundle.
- Embedded revert fix: Returning to the embedded bundle now honors the selected install mode, including next suspend, resume, or restart.
See the SDK reference and SDK release.
0.3.0
7th September 2026
Failure details
Failed installs now include diagnostic details that the dashboard displays:
HTTP status, the origin or platform error message, and on Android 11+ the
previous process exit reason. Previously the dashboard showed only a network
count. See the server notes for the dashboard
side.
- Three launches before rollback: A pending package now gets three
consecutive launches to call
notifyAppReady()before the SDK rolls back and reportsFailed. This reduces false crash rollbacks caused by OS process kills, while a broken bundle is still rolled back. See Analytics and metrics.
See the SDK release.
0.2.0
22nd August 2026
getRunningBundleUpdateMetadata()
getRunningBundleUpdateMetadata() returns label, packageHash, and
releaseNotes for the OTA release active in the current process, or null
when the app is still on the embedded store binary. Use it for an in-app
"About this build" screen or for QA.
import { getRunningBundleUpdateMetadata } from "@codemagic/react-native-patch";
const running = await getRunningBundleUpdateMetadata();
if (running) {
console.log(running.label, running.packageHash, running.releaseNotes);
}
The value does not change until the next reload. See SDK reference and the SDK release.