Skip to content

Conversation

@transphorm
Copy link
Member

@transphorm transphorm commented Nov 12, 2025

Summary by CodeRabbit

  • Chores
    • Expanded CI caching (compiler cache, Xcode build/index/DerivedData) and added conditional restore/save of built dependencies to speed and stabilize builds.
    • iOS CI now uses Release-configuration artifacts for builds and adjusted the install/build flow accordingly.
  • Style
    • Clarified intent of suppressed type checks in a QR code component by switching to explicit expectation markers.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 12, 2025

Warning

Rate limit exceeded

@transphorm has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 4 minutes and 30 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between c62c5a8 and 8d86086.

📒 Files selected for processing (1)
  • .github/workflows/mobile-e2e.yml (5 hunks)

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Adds reusable caching actions (ccache, Xcode cache), changes built-deps action to restore-only, integrates explicit restore/save steps in mobile workflows, and switches iOS builds to Release with Release-iphonesimulator artifact paths and conditional pre-build dependency steps.

Changes

Cohort / File(s) Summary
Workflow: mobile-e2e
.github/workflows/mobile-e2e.yml
Reactivated ccache via local composite; added Xcode build/index caches; added built-deps restore/save with conditional dependency-build; switched xcodebuild to Release and updated artifact paths to Release-iphonesimulator.
Workflow: mobile-ci
.github/workflows/mobile-ci.yml
Added explicit "Save Built Dependencies" steps to jobs (build-deps, test, build-ios, build-android) to persist built artifacts when cache was missed.
Composite action: cache-ccache
.github/actions/cache-ccache/action.yml
New composite action to set up and cache ccache; inputs (key, job-name, runner-os, xcode-version) and cache-hit output; appends ccache to GITHUB_PATH.
Composite action: cache-xcode
.github/actions/cache-xcode/action.yml
New composite action to cache Xcode build outputs, DerivedData, and index; keys built from OS, XCODE_VERSION, cache-version, and file hashes; outputs build/index cache-hit flags.
Composite action update: cache-built-deps
.github/actions/cache-built-deps/action.yml
Removed automatic Save Built Dependencies step from action; now only restores built-deps and documents that workflow must save after build.
SDK small change
sdk/qrcode/components/SelfQRcode.tsx
Replaced // @ts-ignore occurrences with `// `@ts-expect-error for Lottie usage to make type suppression explicit.

Sequence Diagram(s)

sequenceDiagram
  participant GH as GitHub Actions
  participant Runner as CI Runner
  participant Cache as actions/cache
  participant Xcode as xcodebuild

  note right of GH `#dfeff0`: mobile-e2e / mobile-ci job start

  GH->>GH: invoke `.github/actions/cache-ccache` (compute key)
  GH->>Cache: restore ccache (key includes XCODE_VERSION)
  Cache-->>GH: hit / miss

  alt ccache miss
    GH->>Runner: run hendrikmuhs/ccache-action (setup)
    Runner-->>GH: ccache available in PATH
  end

  GH->>Cache: restore built-deps (key: GH_CACHE_VERSION + src hash)
  Cache-->>GH: hit / miss

  alt deps cache miss
    GH->>Runner: run dependency build
    Runner->>Cache: Save Built Dependencies (post-build)
  else deps cache hit
    note right of GH `#fff3cd`: skip dependency build
  end

  GH->>GH: invoke `.github/actions/cache-xcode` (compute keys)
  GH->>Cache: restore Xcode build & index caches (DerivedData, outputs, index)
  Cache-->>GH: hit / miss

  GH->>Runner: run xcodebuild (Configuration: Release)
  Runner-->>GH: produce Release-iphonesimulator artifacts
  Runner->>Cache: save Xcode build & index data (end)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Areas needing attention:
    • Cache key composition and stability (XCODE_VERSION, cache-version, workspace/Podfile.lock hashes) — risk of unexpected cache misses or cross-runner collisions.
    • Correctness and ordering of restore/save for built-deps: ensure save runs only after successful build and artifacts cover all consumers (common/dist, packages/mobile-sdk-alpha/dist).
    • Release-mode change impact: verify tests, simulators, symbol expectations, and test-app paths updated to Release do not break instrumentation or debugging.

Possibly related PRs

Suggested labels

codex

Suggested reviewers

  • remicolin
  • aaronmgdr

Poem

🛠️ Cache doors opened, builders hum along,

DerivedData settles; artifacts grow strong,
Release marches out where Debug once trod,
ccache whispers speed across the pod,
CI breathes easy — cached, repeatable, and calm ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'fix mobile e2e test' is vague and generic. While it references a real aspect of the changeset (mobile e2e testing), it does not clearly convey what specifically was fixed or why. Use a more descriptive title that explains the specific fix, such as 'Optimize iOS e2e test runner with Xcode caching and configuration updates' or similar.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

Comment @coderabbitai help to get the list of available commands and usage tips.

@transphorm transphorm marked this pull request as ready for review November 12, 2025 02:59
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Contributor

@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

🧹 Nitpick comments (1)
.github/workflows/mobile-e2e.yml (1)

333-350: Consider creating a composite action for Xcode caching.

While the current Xcode build and index caching using actions/cache@v4 is functional and comprehensive, the project guideline recommends using shared composite actions in .github/actions for caching. Creating a cache-xcode composite action would maintain consistency with cache-yarn, cache-pods, and other shared caching actions across workflows.

That said, since these are build artifacts rather than dependencies, this is a nice-to-have improvement rather than a blocking concern.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 58f61cc and 2134080.

📒 Files selected for processing (1)
  • .github/workflows/mobile-e2e.yml (3 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
.github/workflows/**/*.{yml,yaml}

📄 CodeRabbit inference engine (AGENTS.md)

.github/workflows/**/*.{yml,yaml}: In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Use the cache-yarn composite action for Yarn dependency caching in workflows
Use the cache-bundler composite action for Ruby gems caching in workflows
Use the cache-gradle composite action for Gradle caching in workflows
Use the cache-pods composite action for CocoaPods caching in workflows

Files:

  • .github/workflows/mobile-e2e.yml
🧠 Learnings (12)
📓 Common learnings
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Ensure app builds succeed for iOS, Android, and Web before PRs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Confirm CI passes, build artifacts generate, and bundle size impact is acceptable after PR creation
📚 Learning: 2025-10-08T20:23:58.783Z
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Applies to app/ios/**/*.{m,mm,swift} : Document complex native iOS module changes in the PR

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:22.019Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Ensure app builds succeed for iOS, Android, and Web before PRs

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/package.json : Expose a 'test:build' script in the SDK's package.json that runs build, test, types, and lint

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-07-29T01:08:28.530Z
Learnt from: transphorm
Repo: selfxyz/self PR: 795
File: app/android/app/build.gradle:157-158
Timestamp: 2025-07-29T01:08:28.530Z
Learning: For this React Native project, the team prefers build flexibility over fail-fast behavior for release builds in app/android/app/build.gradle. They intentionally allow fallback to debug signing for local development runs, relying on Google Play Console validation to catch any improperly signed releases during upload.

Applied to files:

  • .github/workflows/mobile-e2e.yml
🔇 Additional comments (4)
.github/workflows/mobile-e2e.yml (4)

314-319: ccache setup looks solid.

The re-enabled cache with the XCODE_VERSION-aware key is a smart optimization. PATH configuration is correct for macOS.


356-362: Built dependencies caching strategy is solid.

Good use of the cache-built-deps composite action with proper conditional building. The pattern prevents unnecessary rebuilds on cache hits and follows project guidelines for shared composite actions.


496-499: Release build switch accelerates CI reasonably.

Using Release configuration for E2E builds is a pragmatic optimization, especially with the comment acknowledging full testability. However, verify that Release-specific behavior (e.g., inlining, optimizations) doesn't mask issues E2E tests are meant to catch. If the test suite is passing and covering key user flows, this tradeoff should be acceptable.

Confirm that test coverage remains adequate with Release builds and that no Release-specific regressions have been observed.


504-504: App path update is consistent with Release build configuration.

The path change from Debug-iphonesimulator to Release-iphonesimulator correctly reflects the new build configuration and uses a robust find pattern that handles potential variations.

Copy link
Contributor

@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: 2

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2134080 and 606b5fc.

📒 Files selected for processing (1)
  • .github/workflows/mobile-e2e.yml (3 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
.github/workflows/**/*.{yml,yaml}

📄 CodeRabbit inference engine (AGENTS.md)

.github/workflows/**/*.{yml,yaml}: In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Use the cache-yarn composite action for Yarn dependency caching in workflows
Use the cache-bundler composite action for Ruby gems caching in workflows
Use the cache-gradle composite action for Gradle caching in workflows
Use the cache-pods composite action for CocoaPods caching in workflows

Files:

  • .github/workflows/mobile-e2e.yml
🧠 Learnings (12)
📓 Common learnings
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
📚 Learning: 2025-10-08T20:23:58.783Z
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Applies to app/ios/**/*.{m,mm,swift} : Document complex native iOS module changes in the PR

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:22.019Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Ensure app builds succeed for iOS, Android, and Web before PRs

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/package.json : Expose a 'test:build' script in the SDK's package.json that runs build, test, types, and lint

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-07-29T01:08:28.530Z
Learnt from: transphorm
Repo: selfxyz/self PR: 795
File: app/android/app/build.gradle:157-158
Timestamp: 2025-07-29T01:08:28.530Z
Learning: For this React Native project, the team prefers build flexibility over fail-fast behavior for release builds in app/android/app/build.gradle. They intentionally allow fallback to debug signing for local development runs, relying on Google Play Console validation to catch any improperly signed releases during upload.

Applied to files:

  • .github/workflows/mobile-e2e.yml
⏰ Context from checks skipped due to timeout of 300000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: type-check
  • GitHub Check: e2e-ios
  • GitHub Check: android-build-test
🔇 Additional comments (2)
.github/workflows/mobile-e2e.yml (2)

496-499: Verify Release build is suitable for E2E testing.

The workflow switches iOS build from Debug to Release configuration (Line 496-499) and updates the app path accordingly (Line 504). While the comment states this is "still fully testable for E2E," Release builds typically enable optimizations that may mask bugs or exhibit different behavior than Debug builds. The SWIFT_OPTIMIZATION_LEVEL=-Onone flag disables Swift optimization, but C++ and Objective-C may still differ.

Confirm that:

  1. Release builds with -Onone are expected to pass the same E2E tests as Debug builds
  2. No critical bugs are masked by the build configuration change
  3. Performance gains justify the potential risk of different runtime behavior

Also applies to: 504-504


333-350: This review comment is incorrect.

The Xcode caching in lines 333–350 is for build artifacts (DerivedData, build outputs, Index), not dependencies. The coding guideline to "use shared composite actions for dependency caching" applies to dependency managers like CocoaPods, Yarn, Bundler, and Gradle—not build artifact caches. No cache-xcode composite exists, and the current pattern using actions/cache@v4 directly is appropriate for this use case. The same approach is consistently used across other workflows (e.g., mobile-ci.yml).

Likely an incorrect or invalid review comment.

Copy link
Contributor

@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

🧹 Nitpick comments (1)
.github/workflows/mobile-ci.yml (1)

78-83: Inconsistent build conditionals across jobs. Lines 78–83 (build-deps), 158–171 (test), and 320–324 (build-ios) always execute the build step (conditions are commented out or disabled for debugging), while lines 489–493 (build-android) correctly conditions on cache miss. Since save steps now run only on cache miss (line 495), the builds should ideally be consistent—either all conditional or all unconditional. Consider clarifying the intent: if builds are intentionally always-on for CI stability, that's acceptable but should be documented consistently.

Also applies to: 158-171, 320-324, 489-493

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 606b5fc and 38fe526.

📒 Files selected for processing (5)
  • .github/actions/cache-built-deps/action.yml (1 hunks)
  • .github/actions/cache-ccache/action.yml (1 hunks)
  • .github/actions/cache-xcode/action.yml (1 hunks)
  • .github/workflows/mobile-ci.yml (4 hunks)
  • .github/workflows/mobile-e2e.yml (3 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
.github/workflows/**/*.{yml,yaml}

📄 CodeRabbit inference engine (AGENTS.md)

.github/workflows/**/*.{yml,yaml}: In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Use the cache-yarn composite action for Yarn dependency caching in workflows
Use the cache-bundler composite action for Ruby gems caching in workflows
Use the cache-gradle composite action for Gradle caching in workflows
Use the cache-pods composite action for CocoaPods caching in workflows

Files:

  • .github/workflows/mobile-e2e.yml
  • .github/workflows/mobile-ci.yml
🧠 Learnings (17)
📓 Common learnings
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
📚 Learning: 2025-10-08T20:23:58.783Z
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs

Applied to files:

  • .github/workflows/mobile-e2e.yml
  • .github/workflows/mobile-ci.yml
  • .github/actions/cache-built-deps/action.yml
  • .github/actions/cache-xcode/action.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Applies to app/ios/**/*.{m,mm,swift} : Document complex native iOS module changes in the PR

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
  • .github/actions/cache-ccache/action.yml
  • .github/workflows/mobile-ci.yml
  • .github/actions/cache-xcode/action.yml
📚 Learning: 2025-09-22T11:10:22.019Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.

Applied to files:

  • .github/workflows/mobile-e2e.yml
  • .github/workflows/mobile-ci.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
  • .github/actions/cache-ccache/action.yml
  • .github/workflows/mobile-ci.yml
  • .github/actions/cache-built-deps/action.yml
  • .github/actions/cache-xcode/action.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly

Applied to files:

  • .github/workflows/mobile-e2e.yml
  • .github/actions/cache-ccache/action.yml
  • .github/workflows/mobile-ci.yml
  • .github/actions/cache-built-deps/action.yml
  • .github/actions/cache-xcode/action.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
  • .github/actions/cache-ccache/action.yml
  • .github/workflows/mobile-ci.yml
  • .github/actions/cache-built-deps/action.yml
  • .github/actions/cache-xcode/action.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
  • .github/actions/cache-ccache/action.yml
  • .github/workflows/mobile-ci.yml
  • .github/actions/cache-built-deps/action.yml
  • .github/actions/cache-xcode/action.yml
📚 Learning: 2025-10-07T14:25:57.507Z
Learnt from: aaronmgdr
Repo: selfxyz/self PR: 1230
File: packages/mobile-sdk-alpha/package.json:66-75
Timestamp: 2025-10-07T14:25:57.507Z
Learning: Always verify directory existence from the correct package root before flagging missing directories as critical issues, especially when the package.json "files" array includes them.

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Ensure app builds succeed for iOS, Android, and Web before PRs

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/package.json : Expose a 'test:build' script in the SDK's package.json that runs build, test, types, and lint

Applied to files:

  • .github/workflows/mobile-e2e.yml
  • .github/workflows/mobile-ci.yml
  • .github/actions/cache-built-deps/action.yml
📚 Learning: 2025-07-29T01:08:28.530Z
Learnt from: transphorm
Repo: selfxyz/self PR: 795
File: app/android/app/build.gradle:157-158
Timestamp: 2025-07-29T01:08:28.530Z
Learning: For this React Native project, the team prefers build flexibility over fail-fast behavior for release builds in app/android/app/build.gradle. They intentionally allow fallback to debug signing for local development runs, relying on Google Play Console validation to catch any improperly signed releases during upload.

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/src/artifacts/** : Place artifact and manifest management in packages/mobile-sdk-alpha/src/artifacts/

Applied to files:

  • .github/workflows/mobile-ci.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to contracts/** : Compile Solidity contracts using `yarn workspace selfxyz/contracts build`

Applied to files:

  • .github/workflows/mobile-ci.yml
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Use actual imports from selfxyz/mobile-sdk-alpha in tests

Applied to files:

  • .github/workflows/mobile-ci.yml
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.{ts,tsx} : Avoid introducing circular dependencies

Applied to files:

  • .github/workflows/mobile-ci.yml
⏰ Context from checks skipped due to timeout of 300000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (10)
  • GitHub Check: test
  • GitHub Check: lint
  • GitHub Check: types
  • GitHub Check: format
  • GitHub Check: type-check
  • GitHub Check: analyze-android
  • GitHub Check: analyze-ios
  • GitHub Check: build-deps
  • GitHub Check: android-build-test
  • GitHub Check: e2e-ios
🔇 Additional comments (6)
.github/actions/cache-ccache/action.yml (1)

1-38: LGTM. The new composite action properly encapsulates ccache setup with parameterized key generation. Following the coding guidelines, this wraps the external hendrikmuhs/ccache-action within a reusable composite, making it consistent with the codebase's caching strategy. The hardcoded /usr/local/opt/ccache/libexec PATH is appropriate for macOS runners (Homebrew location).

.github/actions/cache-built-deps/action.yml (1)

1-22: ✅ Addresses critical empty cache issue. By removing the save step and documenting that workflows must handle save separately, this fixes the P1 issue where empty common/dist and packages/mobile-sdk-alpha/dist directories were being cached on first run, causing subsequent CI runs to skip the build step and fail. The restore-only pattern is correct.

.github/workflows/mobile-ci.yml (1)

84-91: ✅ Save steps properly implemented. All four jobs now include conditional save steps that run only on cache miss, ensuring only populated common/dist and packages/mobile-sdk-alpha/dist directories are cached. The key generation matches the restore pattern. This fully addresses the empty cache pollution issue.

Also applies to: 172-179, 325-332, 494-501

.github/actions/cache-xcode/action.yml (1)

1-72: ✅ Proper Xcode caching composite. This new action correctly wraps actions/cache@v4 calls in a composite, addressing the guideline concern from prior reviews. Default paths are appropriate, the two-cache pattern (build + index) optimizes hit rates, and the cache-suffix parameter enables workflow-specific cache isolation (e.g., "e2e"). Outputs properly expose cache-hit status for downstream conditionals.

.github/workflows/mobile-e2e.yml (2)

314-317: ✅ Clean integration of caching composites. The workflow properly sequences restore → conditional build → conditional save for built dependencies. The cache-ccache and cache-xcode composites are correctly invoked with appropriate parameters. Notably, cache-xcode uses cache-suffix: -e2e (line 335) to isolate E2E caches from CI caches, preventing pollution. This architecture solves the empty cache issue and aligns with the shared composite action guidelines.

Also applies to: 331-336, 342-360


490-490: ✅ Release configuration for E2E is appropriate. Switching to Release configuration (line 490) and using the Release-iphonesimulator artifact path (line 498) accelerates builds while remaining fully testable for E2E scenarios. These changes are consistent and correct.

Also applies to: 498-498

Copy link
Contributor

@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

🧹 Nitpick comments (2)
sdk/qrcode/components/SelfQRcode.tsx (1)

100-109: Good practice: @ts-expect-error over @ts-ignore.

The change from @ts-ignore to @ts-expect-error with an explanatory comment is a solid improvement. This will alert developers if the type issue is resolved in the future, making the suppression self-documenting and maintainable.

Consider defining proper types for the LottieComponent to eliminate the need for type suppression altogether:

interface LottieProps {
  animationData: unknown;
  style?: React.CSSProperties;
  onComplete?: () => void;
  loop?: boolean;
}

const LottieComponent = (Lottie.default || Lottie) as React.ComponentType<LottieProps>;

This could be applied once at the component definition (line 16) to benefit both usages.

.github/workflows/mobile-e2e.yml (1)

353-360: Move built-deps save step into a composite action for consistency.

Per coding guidelines, workflows should use shared composite actions for caching instead of direct actions/cache calls. Consider wrapping the restore-only + save pattern (lines 342–347 + 353–360) into a dedicated composite action like cache-built-deps-with-save, or refactor cache-built-deps to accept a save-only flag so the workflow doesn't make direct cache calls.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 38fe526 and c62c5a8.

📒 Files selected for processing (2)
  • .github/workflows/mobile-e2e.yml (4 hunks)
  • sdk/qrcode/components/SelfQRcode.tsx (2 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
**/*.{js,ts,tsx,jsx,sol,nr}

📄 CodeRabbit inference engine (.cursorrules)

**/*.{js,ts,tsx,jsx,sol,nr}: NEVER log sensitive data including PII (names, DOB, passport numbers, addresses), credentials, tokens, API keys, private keys, or session identifiers.
ALWAYS redact/mask sensitive fields in logs using consistent patterns (e.g., ***-***-1234 for passport numbers, J*** D*** for names).

Files:

  • sdk/qrcode/components/SelfQRcode.tsx
sdk/**/*.{ts,tsx,js,jsx}

⚙️ CodeRabbit configuration file

sdk/**/*.{ts,tsx,js,jsx}: Review SDK packages for:

  • Public API design and stability
  • Asynchronous flows and error handling
  • Security and input validation
  • Compatibility across environments

Files:

  • sdk/qrcode/components/SelfQRcode.tsx
.github/workflows/**/*.{yml,yaml}

📄 CodeRabbit inference engine (AGENTS.md)

.github/workflows/**/*.{yml,yaml}: In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Use the cache-yarn composite action for Yarn dependency caching in workflows
Use the cache-bundler composite action for Ruby gems caching in workflows
Use the cache-gradle composite action for Gradle caching in workflows
Use the cache-pods composite action for CocoaPods caching in workflows

Files:

  • .github/workflows/mobile-e2e.yml
🧠 Learnings (21)
📓 Common learnings
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Verify extractMRZInfo() using published sample MRZ strings (e.g., ICAO examples)

Applied to files:

  • sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Do NOT mock selfxyz/mobile-sdk-alpha in tests (avoid jest.mock('selfxyz/mobile-sdk-alpha') and replacing real functions with mocks)

Applied to files:

  • sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Use actual imports from selfxyz/mobile-sdk-alpha in tests

Applied to files:

  • sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Ensure parseNFCResponse() works with representative, synthetic NFC data

Applied to files:

  • sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.{ts,tsx} : Avoid introducing circular dependencies

Applied to files:

  • sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/**/*.{ts,tsx} : Use strict TypeScript type checking across the codebase

Applied to files:

  • sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-29T15:31:15.924Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: packages/mobile-sdk-alpha/AGENTS.md:0-0
Timestamp: 2025-08-29T15:31:15.924Z
Learning: Applies to packages/mobile-sdk-alpha/{**/*.test.{ts,tsx},**/__tests__/**/*.{ts,tsx}} : Never use real user PII in tests; use only synthetic, anonymized, or approved test vectors

Applied to files:

  • sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-08-25T14:25:57.586Z
Learnt from: aaronmgdr
Repo: selfxyz/self PR: 951
File: app/src/providers/authProvider.web.tsx:17-18
Timestamp: 2025-08-25T14:25:57.586Z
Learning: The selfxyz/mobile-sdk-alpha/constants/analytics import path is properly configured with SDK exports, Metro aliases, and TypeScript resolution. Import changes from @/consts/analytics to this path are part of valid analytics migration, not TypeScript resolution issues.

Applied to files:

  • sdk/qrcode/components/SelfQRcode.tsx
📚 Learning: 2025-10-08T20:23:58.783Z
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Applies to app/ios/**/*.{m,mm,swift} : Document complex native iOS module changes in the PR

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:22.019Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-04T05:29:43.587Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-10-07T14:25:57.507Z
Learnt from: aaronmgdr
Repo: selfxyz/self PR: 1230
File: packages/mobile-sdk-alpha/package.json:66-75
Timestamp: 2025-10-07T14:25:57.507Z
Learning: Always verify directory existence from the correct package root before flagging missing directories as critical issues, especially when the package.json "files" array includes them.

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-09-22T11:10:57.879Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: app/AGENTS.md:0-0
Timestamp: 2025-09-22T11:10:57.879Z
Learning: Ensure app builds succeed for iOS, Android, and Web before PRs

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-08-24T18:54:04.809Z
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/package.json : Expose a 'test:build' script in the SDK's package.json that runs build, test, types, and lint

Applied to files:

  • .github/workflows/mobile-e2e.yml
📚 Learning: 2025-07-29T01:08:28.530Z
Learnt from: transphorm
Repo: selfxyz/self PR: 795
File: app/android/app/build.gradle:157-158
Timestamp: 2025-07-29T01:08:28.530Z
Learning: For this React Native project, the team prefers build flexibility over fail-fast behavior for release builds in app/android/app/build.gradle. They intentionally allow fallback to debug signing for local development runs, relying on Google Play Console validation to catch any improperly signed releases during upload.

Applied to files:

  • .github/workflows/mobile-e2e.yml
⏰ Context from checks skipped due to timeout of 300000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: type-check
  • GitHub Check: build-deps
  • GitHub Check: analyze-ios
  • GitHub Check: e2e-ios
  • GitHub Check: android-build-test
  • GitHub Check: analyze-android
🔇 Additional comments (6)
sdk/qrcode/components/SelfQRcode.tsx (1)

112-121: Consistent application of best practice.

The same improvement is correctly applied here. The type suppression pattern is now consistent across both animation states.

.github/workflows/mobile-e2e.yml (5)

314-317: ✓ Correct composite action usage for ccache.

Good application of the cache-ccache composite action to replace direct caching or third-party action coupling.


331-336: ✓ Correct composite action usage for Xcode caching.

The cache-xcode composite action is the right approach for caching Xcode build and derived data.


488-494: Clarify Release vs. Debug build strategy for E2E stability.

Line 493 uses Release configuration with SWIFT_OPTIMIZATION_LEVEL=-Onone, which is atypical. Release builds are generally slower to compile than Debug but run faster. Using Release with no optimizations negates the runtime benefit while still using Release build logic.

Confirm whether:

  1. This configuration is necessary for E2E test stability (e.g., avoiding Debug-only issues).
  2. A Debug build would be faster or equally reliable.
  3. The -Onone flag is intentional or should allow optimizations.

If this is a known workaround for simulator incompatibilities, document it in a comment for future maintainers.


219-219: ✓ Appropriate runner size upgrade for E2E workload.

Upgrading from macos-latest-large to macos-latest-xlarge provides more resources for the e2e iOS build and test, which should reduce flakiness and improve build times.


342-360: Based on my verification:

  • Cache-built-deps is restore-only: Confirmed. The composite action only calls actions/cache/restore@v4 and explicitly documents that save must happen in the workflow.
  • Keys are consistent: The restore key matches the save key after variable expansion—no mismatch.
  • Guideline violation identified: The primary issue is that line 355 calls actions/cache/save@v4 directly, which violates your repository's guideline requiring the use of shared composite actions.

Replace direct actions/cache/save@v4 with a composite action wrapper per coding guidelines.

Line 355 bypasses the shared composite actions pattern. Per the repository guidelines, move the save step into a cache-built-deps-save composite action (located in .github/actions/) to maintain consistency with other cache composites (e.g., cache-yarn, cache-bundler). This ensures centralized cache logic and prevents direct use of external cache actions in workflows.

The restore-only design of cache-built-deps is correct. Create the companion save composite or extend the existing one if feasible.

⛔ Skipped due to learnings
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : In GitHub workflows, use the shared composite actions in .github/actions for dependency caching instead of calling actions/cache directly
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-yarn composite action for Yarn dependency caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-gradle composite action for Gradle caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-bundler composite action for Ruby gems caching in workflows
Learnt from: CR
Repo: selfxyz/self PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-04T05:29:43.587Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Use the cache-pods composite action for CocoaPods caching in workflows
Learnt from: transphorm
Repo: selfxyz/self PR: 1244
File: .github/workflows/mobile-deploy.yml:774-776
Timestamp: 2025-10-08T20:23:58.783Z
Learning: In the selfxyz/self repository, for the mobile deployment workflow (.github/workflows/mobile-deploy.yml):
- iOS builds cache Ruby gems at `app/ios/vendor/bundle`
- Android builds cache Ruby gems at `app/vendor/bundle`
- These paths should be used consistently within their respective build jobs
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursorrules:0-0
Timestamp: 2025-09-22T11:10:22.019Z
Learning: Test, build, and deploy scripts (`yarn test`, `yarn ios`, `yarn test:e2e:ios`, Fastlane, etc.) must be used for automation.
Learnt from: CR
Repo: selfxyz/self PR: 0
File: .cursor/rules/mobile-sdk-migration.mdc:0-0
Timestamp: 2025-08-24T18:54:04.809Z
Learning: Applies to packages/mobile-sdk-alpha/package.json : Expose a 'test:build' script in the SDK's package.json that runs build, test, types, and lint

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