Skip to content

Conversation

@ucswift
Copy link
Member

@ucswift ucswift commented Sep 4, 2025

Summary by CodeRabbit

  • Chores
    • Upgraded the mobile stack (Expo, React Native, React) and related libraries to the latest compatible versions to improve stability, performance, and platform compatibility.
    • Updated the iOS build pipeline to use a newer macOS runner for more reliable CI builds.
    • Adjusted release notes versioning to the 7.x scheme for consistency across releases.

@coderabbitai
Copy link

coderabbitai bot commented Sep 4, 2025

Walkthrough

Updates 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

Cohort / File(s) Summary
CI workflow adjustments
\.github/workflows/react-native-cicd.yml
Matrix iOS runner set to macos-15. Release notes header changed from "Version 10.${{ github.run_number }}" to "Version 7.${{ github.run_number }}".
Dependency upgrades
package.json
Broad dependency bumps: Expo core and plugins to SDK 53, React to 19.0.0, React Native to 0.79.5, allied RN libraries updated (gesture-handler, reanimated, screens, etc.), Sentry RN, FlashList, Expo tooling/runtime, TypeScript ~5.8.3, @types/react ~19.0.10, jest-expo ~53.0.10.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

A bunny bumps the versions high,
From SDK burrows to RN sky.
Mac runners hop to fifteen’s glen,
Release notes nibble seven again.
Dependencies sprout like springtime dew—
Thump-thump, ship it, fresh and new! 🐇✨

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch develop

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.0
package.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.

📥 Commits

Reviewing files that changed from the base of the PR and between addaa0d and cb88c94.

⛔ Files ignored due to path filters (1)
  • yarn.lock is 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

@ucswift
Copy link
Member Author

ucswift commented Sep 4, 2025

Approve

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is approved.

@ucswift ucswift merged commit b0908f1 into master Sep 4, 2025
13 of 14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants