Conversation
WalkthroughUpdates CI: iOS runner from macos-14 to macos-15 and adjusts release notes header to Version 7.${{ github.run_number }}. Upgrades package.json dependencies across Expo SDK (to 53), React 19, React Native 0.79.5, and associated libraries and tooling, including TypeScript and Jest Expo. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
✨ Finishing Touches🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (4)
.github/workflows/react-native-cicd.yml (3)
153-160: jq install will fail on macOS runners (apt-get unavailable).The step runs on both Ubuntu and macOS; if jq is missing on macOS, apt-get will error. Gate by OS and use Homebrew on macOS.
Apply:
- # Check if jq is installed, if not install it - if ! command -v jq &> /dev/null; then - echo "Installing jq..." - sudo apt-get update && sudo apt-get install -y jq - fi + # Ensure jq exists on both Linux and macOS + if ! command -v jq >/dev/null 2>&1; then + echo "Installing jq..." + if [[ "$RUNNER_OS" == "Linux" ]]; then + sudo apt-get update && sudo apt-get install -y jq + elif [[ "$RUNNER_OS" == "macOS" ]]; then + brew update && brew install jq + else + echo "Unsupported OS for auto-install of jq" >&2; exit 1 + fi + fi
149-152: Limit secrets to the relevant platform and clean up sensitive files.Avoid writing Android/iOS secrets on the opposite platform and remove the .p8 after use.
- - name: 📋 Create Google Json File + - name: 📋 Create Google Json File + if: ${{ matrix.platform == 'android' }} run: | echo $UNIT_GOOGLE_SERVICES | base64 -d > google-services.json - - name: 📋 Create iOS Cert + - name: 📋 Create iOS Cert + if: ${{ matrix.platform == 'ios' }} run: | - echo $UNIT_IOS_CERT | base64 -d > AuthKey_HRBP5FNJN6.p8 + echo $UNIT_IOS_CERT | base64 -d > "AuthKey_${EXPO_ASC_KEY_ID}.p8" - - name: 📋 Restore gradle.properties + - name: 📋 Restore gradle.properties + if: ${{ matrix.platform == 'android' }} env: GRADLE_PROPERTIES: ${{ secrets.GRADLE_PROPERTIES }} shell: bash run: | mkdir -p ~/.gradle/ echo ${GRADLE_PROPERTIES} > ~/.gradle/gradle.properties + + - name: 🧹 Cleanup sensitive files + if: ${{ matrix.platform == 'ios' }} + run: | + rm -f "AuthKey_${EXPO_ASC_KEY_ID}.p8"Also applies to: 189-192, 193-200
264-268: Pin third‑party GitHub Action to a version/commit.Using @main risks supply-chain breakages. Pin to a release tag or SHA.
- - name: 📦 Setup Firebase CLI - uses: w9jds/setup-firebase@main + - name: 📦 Setup Firebase CLI + uses: w9jds/setup-firebase@v2.0.0package.json (1)
183-184: Jest/Babel-Jest version mismatch will break tests.jest is ~29.7 but babel-jest is ~30. Align babel-jest to 29.x (or upgrade jest + jest-expo together). Given jest-expo ~53 expects Jest 29, prefer downgrading babel-jest.
- "babel-jest": "~30.0.0", + "babel-jest": "~29.7.0",Also applies to: 199-202
🧹 Nitpick comments (6)
.github/workflows/react-native-cicd.yml (3)
116-116: macOS 15 runner upgrade — verify Xcode and toolchain.Good to pin to macos-15. Please confirm the image provides the required Xcode/Command Line Tools for EAS local iOS builds, or add an explicit Xcode setup step to avoid silent image drift.
Example (optional):
strategy: matrix: platform: [android, ios] - runs-on: ${{ matrix.platform == 'ios' && 'macos-15' || 'ubuntu-latest' }} + runs-on: ${{ matrix.platform == 'ios' && 'macos-15' || 'ubuntu-latest' }} + # For iOS ensure consistent Xcode, e.g. 16.x + # - name: Select Xcode + # if: ${{ matrix.platform == 'ios' }} + # run: sudo xcode-select -s "/Applications/Xcode_16.2.app"
250-261: Artifact upload may warn/fail on missing files.Only one platform produces a subset of these files. Add if-no-files-found: ignore to reduce noise.
- name: 📦 Upload build artifacts to GitHub uses: actions/upload-artifact@v4 with: name: app-builds-${{ matrix.platform }} path: | ./ResgridUnit-dev.apk ./ResgridUnit-prod.apk ./ResgridUnit-prod.aab ./ResgridUnit-ios-dev.ipa ./ResgridUnit-ios-adhoc.ipa ./ResgridUnit-ios-prod.ipa retention-days: 7 + if-no-files-found: ignore
122-127: Node 24 across CI — confirm compatibility with Expo SDK 53/RN 0.79 toolchains.Some native modules and CLIs still recommend Node 18/20 LTS. Consider pinning Node 20 LTS unless Node 24 is required.
- node-version: '24' + node-version: '20'package.json (3)
105-133: Expo SDK 53: use tilde for expo core to avoid unintended minor bumps.Expo recommends ~ on SDK-managed packages. You’re using ^ for expo itself, which can pull incompatible minors.
- "expo": "^53.0.0", + "expo": "~53.0.0",
232-238: Stale expo.install.exclude versions.These still reference older RN/gesture-handler/screens/etc. Update to the new ranges or remove the block to let expo manage them correctly.
- "react-native@~0.76.6", - "react-native-reanimated@~3.16.1", - "react-native-gesture-handler@~2.20.0", - "react-native-screens@~4.4.0", - "react-native-safe-area-context@~4.12.0", - "react-native-webview@~13.12.5" + "react-native@0.79.5", + "react-native-reanimated@~3.17.4", + "react-native-gesture-handler@~2.24.0", + "react-native-screens@~4.11.1", + "react-native-safe-area-context@5.4.0", + "react-native-webview@~13.13.1"Or remove if no longer needed.
150-151: Version pinning sanity pass.
- react-native-svg-transformer ~1.5.1 with svg 15.11.2: generally OK but please confirm compatibility matrix.
- typescript ~5.8.3 + ts-jest ~29.1.2: ensure ts-jest supports TS 5.8.
Also applies to: 156-156, 160-161, 208-213
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (2)
.github/workflows/react-native-cicd.yml(2 hunks)package.json(6 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*
📄 CodeRabbit inference engine (.cursorrules)
Directory and file names should be lowercase and hyphenated (e.g., user-profile, chat-screen)
Files:
package.json
🔇 Additional comments (2)
.github/workflows/react-native-cicd.yml (1)
301-305: Release notes header changed to 7. — consistent with tag/name below.*Looks good and consistent with the release step.
package.json (1)
141-162: React 19 + RN 0.79: verify peer-deps for key native libs.Double-check peer ranges for reanimated, gesture-handler, screens, safe-area-context, svg, and web. These are common friction points on major upgrades.
Would you like a one-off script to parse installed peer requirements and report mismatches?
Also applies to: 150-161, 152-160, 156-161
|
Approve |
Summary by CodeRabbit