fix(e2e): Pin json gem < 3.0 for RN < 0.72 iOS builds - #6678
Merged
Conversation
json 3.0.0 (released 2026-09-07) removed the `quirks_mode` option. RN < 0.72 runs its iOS codegen while CocoaPods evaluates the Podfile (`use_react_native!`) and that codegen still passes `quirks_mode: true` to the json gem. The rn-diff-purge Gemfile pins cocoapods but not json, so a fresh `bundle install` now resolves json 3.0.0 and `pod install` fails with: [!] Invalid `Podfile` file: unknown keyword: quirks_mode. Pin json below 3.0 for these older RN versions before `bundle install`. Newer RN codegen dropped the option and is unaffected. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
Semver Impact of This PR⚪ None (no version bump detected) 📋 Changelog PreviewThis is how your changes will appear in the changelog.
🤖 This preview updates automatically when you update the PR. |
antonis
marked this pull request as ready for review
September 7, 2026 08:14
alwx
approved these changes
Sep 7, 2026
Contributor
iOS (legacy) Performance metrics 🚀
|
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| ecf47a2+dirty | 3835.20 ms | 1222.43 ms | -2612.77 ms |
| 3817909+dirty | 1183.90 ms | 1187.50 ms | 3.60 ms |
| 5ee78d6+dirty | 3847.52 ms | 1224.27 ms | -2623.25 ms |
| 890d145+dirty | 1223.59 ms | 1231.37 ms | 7.78 ms |
| e763471+dirty | 3841.16 ms | 1218.06 ms | -2623.09 ms |
| 3d31fcf+dirty | 3838.09 ms | 1223.46 ms | -2614.63 ms |
| 9210ae6+dirty | 3815.93 ms | 1214.14 ms | -2601.79 ms |
| 26843eb+dirty | 3861.60 ms | 1238.77 ms | -2622.82 ms |
| 7a89652+dirty | 3861.46 ms | 1229.61 ms | -2631.85 ms |
| 9ad4522+dirty | 3850.40 ms | 1222.40 ms | -2628.00 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| ecf47a2+dirty | 4.98 MiB | 6.46 MiB | 1.49 MiB |
| 3817909+dirty | 3.38 MiB | 4.73 MiB | 1.35 MiB |
| 5ee78d6+dirty | 5.15 MiB | 6.69 MiB | 1.53 MiB |
| 890d145+dirty | 3.38 MiB | 4.77 MiB | 1.38 MiB |
| e763471+dirty | 4.98 MiB | 6.51 MiB | 1.53 MiB |
| 3d31fcf+dirty | 4.98 MiB | 6.56 MiB | 1.58 MiB |
| 9210ae6+dirty | 5.15 MiB | 6.68 MiB | 1.53 MiB |
| 26843eb+dirty | 4.98 MiB | 6.53 MiB | 1.55 MiB |
| 7a89652+dirty | 5.15 MiB | 6.70 MiB | 1.55 MiB |
| 9ad4522+dirty | 4.98 MiB | 6.56 MiB | 1.58 MiB |
Contributor
Android (legacy) Performance metrics 🚀
|
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 57e0069+dirty | 413.82 ms | 453.47 ms | 39.65 ms |
| 6acdf1d+dirty | 513.58 ms | 608.31 ms | 94.72 ms |
| 0bd8916+dirty | 412.77 ms | 451.31 ms | 38.54 ms |
| 7d6fd3a+dirty | 403.02 ms | 422.56 ms | 19.54 ms |
| a2585ce+dirty | 426.36 ms | 483.26 ms | 56.90 ms |
| a216cb9+dirty | 458.66 ms | 531.47 ms | 72.81 ms |
| 20fbd51+dirty | 487.89 ms | 535.60 ms | 47.71 ms |
| 88735e9+dirty | 429.04 ms | 484.17 ms | 55.13 ms |
| eb93136+dirty | 416.18 ms | 467.32 ms | 51.14 ms |
| 0a9e622+dirty | 420.73 ms | 464.83 ms | 44.10 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 57e0069+dirty | 49.74 MiB | 54.85 MiB | 5.11 MiB |
| 6acdf1d+dirty | 49.74 MiB | 55.09 MiB | 5.34 MiB |
| 0bd8916+dirty | 48.30 MiB | 53.57 MiB | 5.26 MiB |
| 7d6fd3a+dirty | 43.75 MiB | 48.14 MiB | 4.39 MiB |
| a2585ce+dirty | 49.74 MiB | 55.36 MiB | 5.61 MiB |
| a216cb9+dirty | 49.74 MiB | 55.08 MiB | 5.34 MiB |
| 20fbd51+dirty | 49.74 MiB | 54.81 MiB | 5.07 MiB |
| 88735e9+dirty | 49.74 MiB | 54.82 MiB | 5.07 MiB |
| eb93136+dirty | 48.30 MiB | 53.58 MiB | 5.28 MiB |
| 0a9e622+dirty | 49.74 MiB | 55.09 MiB | 5.34 MiB |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📢 Type of change
📜 Description
The RN 0.71.19 iOS E2E build (
Setup Plain RN 0.71.19 App) started failing atbundle exec pod install:RN < 0.72 runs its iOS codegen while CocoaPods evaluates the Podfile (
use_react_native!), and that codegen still passesquirks_mode: trueto thejsongem. The cloned rn-diff-purge Gemfile pinscocoapodsandactivesupportbut notjson, so a freshbundle installfloats to the latest json.This change appends
gem 'json', '< 3.0'to the app's Gemfile beforebundle install, guarded to iOS + RN < 0.72. Newer RN (0.87.1) codegen dropped thequirks_modeusage and is unaffected — which is why only the 0.71.19 iOS job was red.💡 Motivation and Context
💚 How did you test it?
📝 Checklist
sendDefaultPIIis enabled.🔮 Next steps