Turns mobile product, revenue, crash, acquisition, store, and repo signals into actionable proposal drafts.
Coding
React Native Update
Wire Pushy or Cresc OTA updates into React Native and verify them in release builds.
What it does
Integrate react-native-update OTA into React Native CLI, Expo prebuild, HarmonyOS, or brownfield apps using Pushy in China or Cresc globally. The workflow detects the project shape, applies minimal native and provider wiring, runs an integration doctor, and produces exact diffs plus release-build verification and troubleshooting checks.
When to use it
- Adding OTA updates to a React Native app
- Diagnosing broken release-build update checks
- Wiring Expo prebuild or HarmonyOS projects
- Configuring brownfield and custom-host integrations
The skill document
React Native Update / Pushy / Cresc
Overview
Use this skill to get a project from "not integrated" to "hot update works in release builds". Prioritize copy-paste-safe steps, smallest viable changes, and explicit verification checkpoints.
Service routing
- Use Pushy for the China service:
pushyCLI,new Pushy(...), Pushy dashboard. - Use Cresc for the global service:
crescCLI,new Cresc(...), Cresc dashboard. - Keep CLI, dashboard, app records,
update.json, and JS client class on the same service. Do not mixpushy createAppwithnew Cresc(...), or the reverse. - If the service is unknown, infer from user wording, existing imports, registry/domain, or docs locale. If still unknown, implement the neutral structure and call out the one line the user must choose:
PushyvsCresc.
Workflow
- Detect app root, package manager, React Native/Expo versions, service, and target platforms (
ios,android,harmony). - Read
references/integration-playbook.mdbefore giving or applying steps. - Install
react-native-updateand ensurereact-native-update-cliis available. - Configure native bundle loading for the detected platform and app shape:
- iOS
RCTPushy.bundleURL()or Expo auto integration. - Android
UpdateContext.getBundleUrl(...)throughReactHost,ReactNativeHost, or custom instance manager. - Harmony package/provider/bundle-provider wiring.
- Brownfield runtime hook instead of changing host inheritance.
- iOS
- Add a single
PushyorCrescclient outside the root component and wrap the real app tree withUpdateProvider. - Run
scripts/integration_doctor.shand fix actionable misses. - Finish with release-build verification, baseline upload, and hot-update publish checks when the user wants an end-to-end integration.
Guardrails
- Keep user code changes minimal and localized.
- Do not promise apply-update behavior in debug mode.
debug: truecan help check/download in development, but applying patches requires a release build. - Warn about
expo-updatesconflict in Expo projects. - Prefer
useUpdate()methods and state over directclientcalls. Only call the client directly for a clearly necessary low-level integration escape hatch, and explain why. - Treat
checkUpdate()as a trigger, not as the source of truth. Do not branch on its return value; readupdateInfo/lastErrorfromuseUpdate()inuseEffector render state. - Preserve existing app architecture; adapt snippets to current project style.
- If native files differ heavily (monorepo/mixed native), provide targeted patch guidance instead of broad rewrites.
- Treat JS/assets as OTA-safe. Native code, native config, native assets, pods, Gradle settings, HAR/AAR/XCFramework contents, and manifests require a new native release and baseline upload.
Outputs to provide
- Minimal integration diff with exact files and snippets.
- Verification checklist: release build, baseline upload, check update, download, switch now/later, rollback behavior.
- Troubleshooting hints for common failures.
- Scenario examples when requested: class component root, custom UI,
metaInforollout gates, QR/deep-link testing, brownfield integration, canary rollout.
Resources
- Read
references/integration-playbook.mdbefore giving steps. - Use
scripts/integration_doctor.shfor quick project diagnosis.
Questions people ask
- Which OTA service should I configure?
- Use Pushy for the China service and Cresc for the global service. The CLI, dashboard, app records, update.json, and JavaScript client class must all use the same service.
- Can an update be applied while the app is in debug mode?
- No. Debug mode can help check for and download updates, but applying patches requires a release build.
- What changes can be delivered over the air?
- JavaScript and assets are OTA-safe. Native code, native configuration or assets, pods, Gradle settings, manifests, and packaged native libraries require a new native release and baseline upload.
Related skills
Build and review React code while diagnosing state, hook, rendering, hydration, and performance issues.
Diagnose, ship, and harden native iOS apps across lifecycle, entitlements, permissions, StoreKit, and review.
Install goal-linked tracking, diagnose product behavior, and choose one defensible next growth action.
Diagnose CSS mechanics and produce targeted fixes or complete stylesheets for the chosen stack.
Diagnose, fix, test, and release native Android apps across build, device, runtime, and Play layers.