-
Notifications
You must be signed in to change notification settings - Fork 41
Open
Description
Problem Statement
When using TestFlight, re-uploading an .ipa or .app binary with the same version (CFBundleShortVersionString) and build number (CFBundleVersion) is not allowed. However, workflows that cache native app builds and only inject a new JS bundle (using resign or similar commands), currently do not offer an easy or automatic way to increment the build number. As a result, teams leveraging build caching cannot efficiently upload iterative builds to TestFlight without manual intervention or a full native rebuild.
Current Behavior
- Most workflows with
rockallow re-signing with a new JS bundle, but do not provide a mechanism to update the iOS build number. - TestFlight blocks uploading the IPA unless the version/build pair is unique.
- Manually patching Info.plist (CFBundleVersion) before resigning is error-prone and not integrated into the toolchain.
Proposal
Add support in rock to automatically, or via explicit CLI option, set or increment the iOS build number (CFBundleVersion) during the cached resign/inject process. This will allow users to:
- Seamlessly reuse cached native builds and upload new releases to TestFlight.
- Avoid unnecessary full native rebuilds just to change the build number.
- Integrate a build number update as part of the resign and JS bundle injection pipeline.
Possible Solutions
- Add a flag to
rock ios resignor related commands, e.g.--build-number <value>and--version <value>. - Option for automated build number increment (e.g., from CI run number, timestamp, or git commit count).
- Patch CFBundleVersion in Info.plist before resigning, including in all embedded extensions if present.
- Document best practices for this workflow in the README.
Impact
- Enables much faster JS updates and iteration cycles.
- Reduces required compute/build time in CI/CD pipelines for apps with frequent JS-only changes.
- Makes
rocka better fit for teams working on high-velocity React Native projects with TestFlight delivery.
References
- Apple docs: Specifying the Version Number
- Discussion/example of patching Info.plist and resigning: https://github.com/calabash/ipa-build
Happy to discuss further or help prototype a PR!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels