Releases: microsoft/react-native-code-push
v1.12.2-beta
This is simply a patch release that addresses a few user-reported issues. It available now on NPM and can be acquired by running npm i react-native-code-push@latest
.
Bug Fixes (General)
- Fixed an issue where the
Promise
returned bysync
wouldn't get resolved/rejected if the update dialog was being used and an exception happened while downloading an update (rare but possible).
Bug Fixes (iOS)
- Fixed an issue where the
downloadProgressCallback
option passed tosync
wasn't getting triggered (thanks @mikedouglas!). Android wasn't affected by this issue. - Improved our
Podspec
by marking theSSZipArchive
headers as private, and adding theCore
subspec that allows you to link to CodePush without the additionalSSZipArchive
dependency (thanks @nevir!)
v1.12.1-beta
This release simply fixes an issue when trying to install the CodePush plugin via CocoaPods.
v1.12.0-beta
This release includes a few bug fixes as well as a really cool feature contribution from @dbasedow. It is now available on NPM and can be installed via npm i --save react-native-code-push@latest
.
New Features
- Restarts can be disallowed during critical end user workflows The Javascript API exposes a new
disallowRestart
method which allows a component to ensure that no programmatic update restarts can occur while it is mounted (resulting in a "quick flash" that some users may think is a crash). This can help prevent end user interruptions during periods where it would be unacceptable (e.g. an on boarding process), but without preventing the app to discover and download available updates as soon as possible (via a call toallowRestart
). Check out the docs for more details.
Bug Fixes
- Our podspec includes a new
NoZip
subspec to allow apps that already includeSSZipArchive
to link with CodePush, without receiving duplicate symbol errors - A bug was fixed with install metrics reporting when an update is successfully installed after a previous update had been rolled back.
- Our
package.json
file now indicates where our*.d.ts
file is located, so that supporting editors (e.g. VS Code) can provide auto-completion support for our API out-of-the-box.
v1.11.0-beta
This release includes support for React Native app's targeting Windows (UWP), fixes support for iOS7 and improves the reliability of the install metrics reporting. It is now available on NPM and can be installed via npm i --save react-native-code-push@latest
.
New features (Windows)
- Windows (UWP) support – Adds initial pass at supporting the Windows platform. Code as well as asset updates are fully supported but we still need to add metrics support, hashing of the stored binary contents as well as recent perf improvements generated by throttling of download progress events.
Bug Fixes (General)
- Retry install metrics after failure - Improves the install metrics mechanism in order to make sure that telemetry isn't lost due to poor network conditions.
Bug Fixes (iOS)
- Fix support for iOS7 – Changes our implementation to provide iOS7 workarounds for Obj-C APIs only supported on iOS8+.
v1.10.6-beta
This release primarily includes performance improvements to the update download process (for both iOS and Android), and also fixes a critical user-reported bug on iOS. It is now available on NPM and can be installed via npm i --save react-native-code-push
.
Performance Improvements
- The download progress events that are triggered when calling either
sync
orRemotePackage.download
are no longer dispatched to the JS thread unless the app actually specified adownloadProgressCallback
. Additionally, even if an app subscribed to download progress events, we now throttle them along with the device's vsync, so that the CodePush plugin doesn't overwhelm the JS thread with more events than it can actually render, and ensures that we impose a small impact as little an impact on the app's frame rate as possible.
Bug Fixes (iOS)
- CodePush updates are now explicitly excluded from iTunes and/or iCloud backups, which ensures that they don't impact the end users storage capacity, and also prevents any App Store rejections based on their storage guidelines.
v1.10.5-beta
This is just a quick bug fix release that addresses a regression with the client-side rollback feature on Android devices.
v1.10.4-beta
This is just a quick bug fix release that addresses an issue that could occur when an update is downloaded while the app is in the foreground, but finished installing after it has been put into the background.
v1.10.3-beta
This is just a quick bug fix release that also improves upon the existing getCurrentPackage
method. It is now available on NPM and can be updated immediately by running npm i --save react-native-code-push@latest
.
New Features
-
Metadata about the currently running update can now be reliably retrieved The existing
getCurrentPackage
method allowed programmatically retrieving the metadata for CodePush updates (e.g. what is its label? is it mandatory?), but unfortunately, it would always return the "latest" locally available update, which could either be the running update or a pending update. Therefore, there wasn't a reliable way to get the metadata for the update that is currently running, that disregarded any pending updates To address this, we are deprecating thegetCurrentPackage
method and replacing it with a newgetUpdateMetadata
method that allows explicitly specifying whether you want the metadata for the running, pending or latest (using the same behavior asgetCurrentPackage
) update. Check out the docs for more details.import codePush, { UpdateState } from "react-native-code-push"; // Reliably get the running update metadata // Both of these calls are equivalent codePush.getUpdateMetadata(); codePush.getUpdateMetadata(UpdateState.RUNNING); // Check if there is a pending update, and if so, get its metadata codePush.getUpdateMetadata(UpdateState.PENDING); // Provides the same behavior as the existing getCurrentPackage method. // The return object still contains the isPending property to determine // if the latest update is pending or not. codePush.getUpdateMetadata(UpdateState.LATEST);
-
The
notifyApplicationReady
method has been aliased asnotifyAppReady
to be more consistent with the use of "App" instead of "Application" in most React Native APIs (e.g.AppRegistry
,AppState
). To prevent a breaking change,notifyApplicationReady
isn't removed, but our docs will prescribe the new alias moving forward.
Bug Fixes (iOS)
- We resolved a bug where CodePush updates on disk weren't correctly being cleared after bumping the app version when using React Native packager as opposed to specifying
[CodePush bundleURL]
as your JS bundle location.
v1.10.2-beta
This is just a quick bug fix release that addresses a few commonly reported issues. It is now available on NPM and can be updated immediately by running npm i --save react-native-code-push@latest
.
Bug Fixes
- Fixed an issue with programmatic restarts (e.g. calling
CodePush.restartApp
, specifying anyInstallMode
value other thanON_NEXT_RESTART
when callingsync
) on pre-KitKat Android devices. - Removed the pre-release version tag from our podspec (
-beta
), which was causing issues for apps being submitted to iTunes Connect. We could have just documented this workaround, but it seemed like a better solution for our users to just remove it on our end, since our NPM packages and GitHub releases already include the-beta
semantics.
v1.10.1-beta
This release primarily improves some of the fundamentals of CodePush for Android and deepens our integration with RNPM (we hope to do more more in the future!). It is now available on NPM and can be updated immediately by running npm i --save react-native-code-push@latest
.
New Features (Android)
-
App restarts are now much smoother for the end user Previously, when an app was restarted in order to apply a CodePush update, we would stop and re-start the
Activity
that represented the current React Native app. While this method worked, it had the effect of being a fairly obtrusive user experience. This release improves the restart by doing a reload of the React Native bridge, which is able to re-use the existingActivity
and simply results in a quick "flash" when reloading the new JS bundle file. This experience mirrors what we already have on iOS and should be a lot nicer for your users. -
RNPM-based installs now generate the CodePush package code correctly When you run
rpm link react-native-code-push
, it will update yourMainActivity
class with the right constructor call to theCodePush
class (instead of generatingnew CodePush()
which isn't a valid signature), which further simplifies the installation experience. -
RNPM-based installs now prompt you for your CodePush deployment key If you're using RNPM >=1.6.0 (we recommend it!), when you run
rpm link react-native-code-push
, you will be prompted for your Android deployment key, which will be used to auto-populate yourMainActivity
file. You can choose to ignore this for now and specify it later using our configuration instructions. We hope to add support for iOS as soon as RNPM allows automating the creation ofInfo.plist
entries.