// Frequently asked

FAQs

Answers to common questions about DeployPulse and CodePush.

DeployPulse supports React Native apps on both iOS and Android. We also support Expo apps - both Expo CNG (bare workflow using the CodePush SDK) and the Expo Updates v1 protocol (managed and bare workflow using expo-updates). Flutter and other frameworks are not currently supported.

CodePush was developed by Microsoft. In 2024, Microsoft announced that CodePush would be deprecated and open-sourced the technology. DeployPulse launched as a managed hosted replacement, using the same CodePush protocol to push updates to your React Native apps. DeployPulse is not affiliated with Microsoft in any way.

You can push via OTA:

  • JavaScript bundle changes
  • Static assets - images, fonts, audio, video
  • Bug fixes, UI changes, and new features implemented entirely in JavaScript

You cannot push via OTA:

  • Native code or native module changes
  • New device permissions
  • Changes that fundamentally alter the app's core purpose
  • Anything requiring a binary rebuild or new SDK version

See the Apple App Store Review Guidelines and Google Play Developer Policy for the authoritative platform rules.

Apple's App Store Review Guidelines §2.5.2 permit apps to download and execute interpreted code (JavaScript) provided:

  • The update does not change the primary purpose of the app
  • The update does not introduce features inconsistent with the app's approved purpose
  • The update does not bypass iOS security features such as code signing or the app sandbox

You cannot push new native code, new entitlements, or changes that would require App Store re-review. DeployPulse's RS256 code signing support helps satisfy Apple's signing requirements for OTA updates.

Google Play's Device and Network Abuse policy permits apps to update interpreted code (JavaScript and assets) at runtime. It does not permit:

  • Replacing or updating the APK/AAB outside of Google Play
  • Downloading native libraries (.so files) not included in the original package
  • Delivering functionality that itself violates Google Play policies

React Native JavaScript bundle updates fall within the permitted interpreted code category and are safe to push via DeployPulse.

Yes. DeployPulse supports Expo in two ways:

  • Expo CNG (bare workflow) - apps using the react-native-code-push SDK work exactly like standard React Native apps with no extra configuration.
  • Expo Updates v1 protocol - managed and bare workflow apps using the expo-updates package are supported natively. Point your updates.url at DeployPulse and push releases with dpctl release-expo - no CodePush SDK required.

See our Expo setup guide for full instructions.

Code signing is optional but strongly recommended, particularly on iOS where Apple's guidelines encourage it for interpreted code updates.

DeployPulse supports RS256 JWT code signing:

  • Generate an RSA key pair with dpctl app set-public-key
  • The CLI signs each release bundle at upload time using your private key
  • DeployPulse verifies the signature server-side before accepting the release
  • The CodePush SDK verifies the signature on-device before applying the update

See our code signing guide for setup instructions.

DeployPulse has two safeguards:

  • Auto-rollback - monitors the error rate on every new release. If it exceeds a configurable threshold (e.g. 5%) within a configurable time window, DeployPulse automatically rolls back to the previous stable release and notifies you by email. Configured per deployment in the dashboard.
  • Manual rollback - roll back any release at any time from the Deployments page in the dashboard or via dpctl rollback <app> <deployment>.

Gradual rollouts (e.g. 10% of users first) are also supported and are a good way to catch issues before they reach your full user base.

Install the CodePush SDK in your React Native app, then use the DeployPulse CLI to push updates. See our quickstart guide for full setup instructions.

We currently limit deployments to 100 per year on our starter plan. If you need more, please reach out to us.

Deployments stay indefinitely. You can remove them at any time. We guarantee retention for at least 1 year; after that, we may remove unused deployments with prior notice.

Cancel anytime in your account under Settings → Billing.

Email support@deploypulse.io with bug reports or feature requests. We appreciate the feedback.