chore(deps): weekly bump#796
Conversation
📝 WalkthroughWalkthroughThis PR upgrades the React Native framework and its ecosystem tooling from 0.82.1 to 0.85.3 across the monorepo. It updates both root and example ChangesDependency and Configuration Upgrade
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
/gemini review |
|
Auto-review found blockers. Push a fix or wait for human review; next daily run will re-evaluate.
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
example/package.json (1)
18-18: 💤 Low valueConsider aligning React versions across workspace.
The example app uses React 19.1.1 while the root package uses 19.0.0. While this patch difference may not cause issues in a workspace setup, aligning versions can prevent potential inconsistencies and simplify dependency management.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@example/package.json` at line 18, The project has mismatched React versions between workspaces (example package.json lists "react": "19.1.1" while root uses "19.0.0"); update the example/package.json React dependency to match the workspace root version (or bump the root to 19.1.1 if you intend to standardize on that) so that the "react" entry in example/package.json and the root package.json specify the same semantically identical version string; locate and edit the "react" field in example/package.json to align it with the root dependency.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@package.json`:
- Around line 99-100: Update the React dependency in package.json from "react":
"19.0.0" to a compatible version >=19.2.3 (prefer using a caret like "^19.2.3")
so it matches React Native 0.85.3's peerDependency; modify the "react" entry in
package.json accordingly and run your package manager (npm/yarn/pnpm) to
reinstall and update lockfile.
---
Nitpick comments:
In `@example/package.json`:
- Line 18: The project has mismatched React versions between workspaces (example
package.json lists "react": "19.1.1" while root uses "19.0.0"); update the
example/package.json React dependency to match the workspace root version (or
bump the root to 19.1.1 if you intend to standardize on that) so that the
"react" entry in example/package.json and the root package.json specify the same
semantically identical version string; locate and edit the "react" field in
example/package.json to align it with the root dependency.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: cc1b52ba-7a37-4292-97d9-dd64396aedf7
⛔ Files ignored due to path filters (23)
nitrogen/generated/android/NitroSoundOnLoad.cppis excluded by!**/generated/**nitrogen/generated/android/c++/JAVEncoderAudioQualityIOSType.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JAVEncodingOption.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JAVLinearPCMBitDepthKeyIOSType.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JAVModeIOSOption.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JAudioEncoderAndroidType.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JAudioQualityType.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JAudioSet.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JAudioSourceAndroidType.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JFunc_void_PlayBackType.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JFunc_void_PlaybackEndType.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JFunc_void_RecordBackType.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JHybridSoundSpec.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JOutputFormatAndroidType.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JPlayBackType.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JPlaybackEndType.hppis excluded by!**/generated/**nitrogen/generated/android/c++/JRecordBackType.hppis excluded by!**/generated/**nitrogen/generated/android/kotlin/com/margelo/nitro/sound/AudioSet.ktis excluded by!**/generated/**nitrogen/generated/android/kotlin/com/margelo/nitro/sound/PlayBackType.ktis excluded by!**/generated/**nitrogen/generated/android/kotlin/com/margelo/nitro/sound/PlaybackEndType.ktis excluded by!**/generated/**nitrogen/generated/android/kotlin/com/margelo/nitro/sound/RecordBackType.ktis excluded by!**/generated/**nitrogen/generated/ios/NitroSound+autolinking.rbis excluded by!**/generated/**yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (2)
example/package.jsonpackage.json
| "react": "19.0.0", | ||
| "react-native": "0.79.2", | ||
| "react-native": "0.85.3", |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
Does React Native 0.85.3 support React 19?
💡 Result:
Yes, React Native 0.85.3 supports React 19. The package.json for React Native specifies "react": "^19.2.3" as a peerDependency [1][2][3], indicating compatibility with React 19 versions starting from 19.2.3. This aligns with earlier releases like 0.83 explicitly including React 19.2 [4], and the progression through 0.85 RCs and stable versions maintaining the same peer dependency range [5][6]. React Native 0.85.3 is a patch release with no changes to dependencies listed [5], so it inherits this support. Official docs and release notes confirm 0.85.x is active and current as of 2026-05-10 [7][8][9].
Citations:
- 1: facebook/react-native@3e2367c
- 2: facebook/react-native@eae2c5f
- 3: facebook/react-native@bbaabe6
- 4: https://reactnative.dev/blog/2025/12/10/react-native-0.83
- 5: https://github.com/facebook/react-native/releases/tag/v0.85.3
- 6: https://github.com/facebook/react-native/releases/tag/v0.85.0
- 7: https://reactnative.dev/blog/2026/04/07/react-native-0.85
- 8: https://reactnative.dev/versions
- 9: https://reactnative.dev/docs/releases
Update React to version 19.2.3 or later for React Native 0.85.3 compatibility.
React Native 0.85.3 requires React 19.2.3+ (specified as "react": "^19.2.3" in its peerDependencies). The current version 19.0.0 is incompatible and will cause runtime errors or hook failures. Upgrade to React >=19.2.3.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@package.json` around lines 99 - 100, Update the React dependency in
package.json from "react": "19.0.0" to a compatible version >=19.2.3 (prefer
using a caret like "^19.2.3") so it matches React Native 0.85.3's
peerDependency; modify the "react" entry in package.json accordingly and run
your package manager (npm/yarn/pnpm) to reinstall and update lockfile.
There was a problem hiding this comment.
Code Review
This pull request upgrades React Native to version 0.85.3 and Nitro modules to 0.35.6, alongside updating various dependencies and build configurations. Key changes include syntax adjustments in generated C++ files and the addition of manual equals and hashCode overrides in generated Kotlin data classes. Feedback indicates that these manual overrides are redundant for Kotlin data classes and introduce performance overhead through unnecessary object allocation and boxing; it is recommended to update the generator to rely on default language behavior.
| override fun equals(other: Any?): Boolean { | ||
| if (this === other) return true | ||
| if (other !is AudioSet) return false | ||
| return Objects.deepEquals(this.AVEncoderAudioQualityKeyIOS, other.AVEncoderAudioQualityKeyIOS) | ||
| && Objects.deepEquals(this.AVModeIOS, other.AVModeIOS) | ||
| && Objects.deepEquals(this.AVEncodingOptionIOS, other.AVEncodingOptionIOS) | ||
| && Objects.deepEquals(this.AVFormatIDKeyIOS, other.AVFormatIDKeyIOS) | ||
| && Objects.deepEquals(this.AVNumberOfChannelsKeyIOS, other.AVNumberOfChannelsKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMBitDepthKeyIOS, other.AVLinearPCMBitDepthKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMIsBigEndianKeyIOS, other.AVLinearPCMIsBigEndianKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMIsFloatKeyIOS, other.AVLinearPCMIsFloatKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMIsNonInterleavedIOS, other.AVLinearPCMIsNonInterleavedIOS) | ||
| && Objects.deepEquals(this.AVSampleRateKeyIOS, other.AVSampleRateKeyIOS) | ||
| && Objects.deepEquals(this.AudioSourceAndroid, other.AudioSourceAndroid) | ||
| && Objects.deepEquals(this.OutputFormatAndroid, other.OutputFormatAndroid) | ||
| && Objects.deepEquals(this.AudioEncoderAndroid, other.AudioEncoderAndroid) | ||
| && Objects.deepEquals(this.AudioQuality, other.AudioQuality) | ||
| && Objects.deepEquals(this.AudioChannels, other.AudioChannels) | ||
| && Objects.deepEquals(this.AudioSamplingRate, other.AudioSamplingRate) | ||
| && Objects.deepEquals(this.AudioEncodingBitRate, other.AudioEncodingBitRate) | ||
| && Objects.deepEquals(this.IncludeBase64, other.IncludeBase64) | ||
| } | ||
|
|
||
| override fun hashCode(): Int { | ||
| return arrayOf( | ||
| AVEncoderAudioQualityKeyIOS, | ||
| AVModeIOS, | ||
| AVEncodingOptionIOS, | ||
| AVFormatIDKeyIOS, | ||
| AVNumberOfChannelsKeyIOS, | ||
| AVLinearPCMBitDepthKeyIOS, | ||
| AVLinearPCMIsBigEndianKeyIOS, | ||
| AVLinearPCMIsFloatKeyIOS, | ||
| AVLinearPCMIsNonInterleavedIOS, | ||
| AVSampleRateKeyIOS, | ||
| AudioSourceAndroid, | ||
| OutputFormatAndroid, | ||
| AudioEncoderAndroid, | ||
| AudioQuality, | ||
| AudioChannels, | ||
| AudioSamplingRate, | ||
| AudioEncodingBitRate, | ||
| IncludeBase64 | ||
| ).contentDeepHashCode() | ||
| } |
There was a problem hiding this comment.
The manual overrides for equals and hashCode in this data class are sub-optimal for performance and likely redundant.
- Redundancy: Kotlin
data classautomatically generatesequalsandhashCodebased on primary constructor properties. Unless these properties are arrays (which requirecontentDeepEquals/HashCode), the manual implementation is unnecessary. - Performance: The
hashCodeimplementation creates a newArray<Any?>and boxes all primitive fields (likeAudioChannelsorIncludeBase64) on every call. This is inefficient and increases GC pressure. - Idiomatic Kotlin: Using
java.util.Objects.deepEqualsis less idiomatic than the standard==operator, which correctly handles nulls and value equality for standard types.
Since this is generated code, consider updating the nitrogen generator to either rely on default data class behavior or use a more efficient implementation (e.g., java.util.Objects.hash() or a manual field-by-field hash computation). This issue also affects PlayBackType.kt, PlaybackEndType.kt, and RecordBackType.kt.
There was a problem hiding this comment.
Code Review
This pull request updates the project to React Native 0.85.3 and Nitro modules 0.35.6, alongside various dependency updates and modifications to generated C++, Kotlin, and iOS autolinking code. The review identifies a version mismatch for the react dependency between the root and example package.json files, which may cause runtime issues. Additionally, the manual equals and hashCode overrides in the generated Kotlin data classes are flagged as redundant and inefficient compared to standard compiler-generated implementations.
| @@ -17,8 +17,8 @@ | |||
| "@react-native-community/slider": "^5.2.0", | |||
| "react": "19.1.1", | |||
There was a problem hiding this comment.
There is a version mismatch for react between the root package.json (19.0.0) and the example/package.json (19.1.1). In React Native projects, having multiple versions of React in the same dependency tree can lead to runtime issues like the 'Invalid hook call' error. It is recommended to synchronize these versions to ensure a single React instance is used throughout the project.
| override fun equals(other: Any?): Boolean { | ||
| if (this === other) return true | ||
| if (other !is AudioSet) return false | ||
| return Objects.deepEquals(this.AVEncoderAudioQualityKeyIOS, other.AVEncoderAudioQualityKeyIOS) | ||
| && Objects.deepEquals(this.AVModeIOS, other.AVModeIOS) | ||
| && Objects.deepEquals(this.AVEncodingOptionIOS, other.AVEncodingOptionIOS) | ||
| && Objects.deepEquals(this.AVFormatIDKeyIOS, other.AVFormatIDKeyIOS) | ||
| && Objects.deepEquals(this.AVNumberOfChannelsKeyIOS, other.AVNumberOfChannelsKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMBitDepthKeyIOS, other.AVLinearPCMBitDepthKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMIsBigEndianKeyIOS, other.AVLinearPCMIsBigEndianKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMIsFloatKeyIOS, other.AVLinearPCMIsFloatKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMIsNonInterleavedIOS, other.AVLinearPCMIsNonInterleavedIOS) | ||
| && Objects.deepEquals(this.AVSampleRateKeyIOS, other.AVSampleRateKeyIOS) | ||
| && Objects.deepEquals(this.AudioSourceAndroid, other.AudioSourceAndroid) | ||
| && Objects.deepEquals(this.OutputFormatAndroid, other.OutputFormatAndroid) | ||
| && Objects.deepEquals(this.AudioEncoderAndroid, other.AudioEncoderAndroid) | ||
| && Objects.deepEquals(this.AudioQuality, other.AudioQuality) | ||
| && Objects.deepEquals(this.AudioChannels, other.AudioChannels) | ||
| && Objects.deepEquals(this.AudioSamplingRate, other.AudioSamplingRate) | ||
| && Objects.deepEquals(this.AudioEncodingBitRate, other.AudioEncodingBitRate) | ||
| && Objects.deepEquals(this.IncludeBase64, other.IncludeBase64) | ||
| } | ||
|
|
||
| override fun hashCode(): Int { | ||
| return arrayOf( | ||
| AVEncoderAudioQualityKeyIOS, | ||
| AVModeIOS, | ||
| AVEncodingOptionIOS, | ||
| AVFormatIDKeyIOS, | ||
| AVNumberOfChannelsKeyIOS, | ||
| AVLinearPCMBitDepthKeyIOS, | ||
| AVLinearPCMIsBigEndianKeyIOS, | ||
| AVLinearPCMIsFloatKeyIOS, | ||
| AVLinearPCMIsNonInterleavedIOS, | ||
| AVSampleRateKeyIOS, | ||
| AudioSourceAndroid, | ||
| OutputFormatAndroid, | ||
| AudioEncoderAndroid, | ||
| AudioQuality, | ||
| AudioChannels, | ||
| AudioSamplingRate, | ||
| AudioEncodingBitRate, | ||
| IncludeBase64 | ||
| ).contentDeepHashCode() | ||
| } |
There was a problem hiding this comment.
The manual overrides for equals and hashCode in this data class appear redundant and less efficient than the compiler-generated versions. Since the properties are standard types (primitives, strings, etc.) and not arrays, Kotlin's default data class implementation already provides correct equality and hashing logic. The current hashCode implementation is particularly suboptimal as it allocates a new Array on every call. If this is a change in the nitrogen generator, it is recommended to only generate these overrides when the class contains Array properties that require deep equality checks.
There was a problem hiding this comment.
Code Review
This pull request updates React Native to version 0.85.3 and Nitro modules to 0.35.6 across the main package and example project. It includes refinements to C++ constant declarations and an iOS build configuration change to disable auto-generated ObjC headers. Feedback was provided concerning the manual equals and hashCode overrides in generated Kotlin data classes, highlighting that these implementations are less efficient than the default compiler-generated versions due to unnecessary object allocations and deep comparison overhead.
| override fun equals(other: Any?): Boolean { | ||
| if (this === other) return true | ||
| if (other !is AudioSet) return false | ||
| return Objects.deepEquals(this.AVEncoderAudioQualityKeyIOS, other.AVEncoderAudioQualityKeyIOS) | ||
| && Objects.deepEquals(this.AVModeIOS, other.AVModeIOS) | ||
| && Objects.deepEquals(this.AVEncodingOptionIOS, other.AVEncodingOptionIOS) | ||
| && Objects.deepEquals(this.AVFormatIDKeyIOS, other.AVFormatIDKeyIOS) | ||
| && Objects.deepEquals(this.AVNumberOfChannelsKeyIOS, other.AVNumberOfChannelsKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMBitDepthKeyIOS, other.AVLinearPCMBitDepthKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMIsBigEndianKeyIOS, other.AVLinearPCMIsBigEndianKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMIsFloatKeyIOS, other.AVLinearPCMIsFloatKeyIOS) | ||
| && Objects.deepEquals(this.AVLinearPCMIsNonInterleavedIOS, other.AVLinearPCMIsNonInterleavedIOS) | ||
| && Objects.deepEquals(this.AVSampleRateKeyIOS, other.AVSampleRateKeyIOS) | ||
| && Objects.deepEquals(this.AudioSourceAndroid, other.AudioSourceAndroid) | ||
| && Objects.deepEquals(this.OutputFormatAndroid, other.OutputFormatAndroid) | ||
| && Objects.deepEquals(this.AudioEncoderAndroid, other.AudioEncoderAndroid) | ||
| && Objects.deepEquals(this.AudioQuality, other.AudioQuality) | ||
| && Objects.deepEquals(this.AudioChannels, other.AudioChannels) | ||
| && Objects.deepEquals(this.AudioSamplingRate, other.AudioSamplingRate) | ||
| && Objects.deepEquals(this.AudioEncodingBitRate, other.AudioEncodingBitRate) | ||
| && Objects.deepEquals(this.IncludeBase64, other.IncludeBase64) | ||
| } | ||
|
|
||
| override fun hashCode(): Int { | ||
| return arrayOf( | ||
| AVEncoderAudioQualityKeyIOS, | ||
| AVModeIOS, | ||
| AVEncodingOptionIOS, | ||
| AVFormatIDKeyIOS, | ||
| AVNumberOfChannelsKeyIOS, | ||
| AVLinearPCMBitDepthKeyIOS, | ||
| AVLinearPCMIsBigEndianKeyIOS, | ||
| AVLinearPCMIsFloatKeyIOS, | ||
| AVLinearPCMIsNonInterleavedIOS, | ||
| AVSampleRateKeyIOS, | ||
| AudioSourceAndroid, | ||
| OutputFormatAndroid, | ||
| AudioEncoderAndroid, | ||
| AudioQuality, | ||
| AudioChannels, | ||
| AudioSamplingRate, | ||
| AudioEncodingBitRate, | ||
| IncludeBase64 | ||
| ).contentDeepHashCode() | ||
| } |
There was a problem hiding this comment.
The manual overrides for equals and hashCode are inefficient. Objects.deepEquals is significantly slower than standard equality checks for non-array types because it performs multiple internal type checks. Furthermore, arrayOf(...).contentDeepHashCode() allocates a new array on every invocation of hashCode. For a data class, unless these properties are specifically arrays that require deep comparison (which is unlikely for these specific field names), it is better to rely on the default compiler-generated implementations or use more efficient alternatives like Objects.hash() to avoid unnecessary allocations.
|
Auto-review found blockers on this daily re-check. Push a fix or wait for human review; next daily run will re-evaluate.
|
|
Daily re-check (2026-05-13 KST): still blocked by the guarded-path gate.
Next action: human review/approval of the generated Nitro output, then the automation can re-evaluate on the next run. |
|
Daily re-check (2026-05-14 KST): still blocked by the guarded-path gate.
Auto-review found blockers. Push a fix or wait for human review; next daily run will re-evaluate. |
|
Daily re-check (2026-05-14 KST): still blocked by the guarded-path gate.
|
|
Daily re-check (2026-05-15 KST): still blocked by the guarded-path gate.
|
|
Daily re-check (2026-05-16 KST): still blocked by the guarded-path gate.
|
|
Daily re-check (2026-05-17 KST): still blocked by the guarded-path gate.
|
|
Daily re-check (2026-05-18 KST): still blocked by the guarded-path gate.
|
|
Daily re-check (2026-05-18 KST): still blocked by the guarded-path gate.
|
|
Daily re-check (2026-05-19 KST): still blocked by the guarded-path gate.
No auto-merge attempted. |
|
Daily re-check (2026-05-20 KST): still blocked by the guarded-path gate.
No auto-merge attempted. |
|
Daily re-check (2026-05-20 KST): still blocked by the guarded-path gate.
No auto-merge attempted. |
|
Daily re-check (2026-05-21 KST): still blocked by automated review gates.
Auto-review found blockers. Push a fix or rebase/update the branch; next daily run will re-evaluate. |
|
Daily re-check (2026-05-21 KST): still blocked by automation gates.
|
|
Auto-review found blockers. Push a fix; next daily run will re-evaluate.
|
|
Daily re-check (2026-05-23 KST): still blocked by automation gates.
No auto-merge attempted. |
|
Daily re-check (2026-05-23 KST): still blocked by automation gates.
Push a fix or wait for human review; the next daily run will re-evaluate. |
Summary
0.85.3.react-native-nitro-modulesandnitrogento0.35.6.@react-native/jest-presetand switch Jest to the moved preset required by React Native 0.85.yarn prepare.Guarded paths touched
nitrogen/generated/**was regenerated bynitrogen@0.35.6and needs human review before merge.Verification
yarn typecheckyarn lint(passes with existing Prettier warnings inscripts/generate-release-notes.js)yarn testyarn prepareSummary by CodeRabbit