FAQs
Answers to common questions about DeployPulse and CodePush.
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.urlat DeployPulse and push releases withdpctl 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.
Email support@deploypulse.io with bug reports or feature requests. We appreciate the feedback.