Skip to content

chore(mobile-expo): CI lint, typecheck, and build for Expo app#318

Merged
Ur-imazing merged 5 commits intomainfrom
chore/96-expo-ci-v2
Mar 9, 2026
Merged

chore(mobile-expo): CI lint, typecheck, and build for Expo app#318
Ur-imazing merged 5 commits intomainfrom
chore/96-expo-ci-v2

Conversation

@Ur-imazing
Copy link
Contributor

@Ur-imazing Ur-imazing commented Mar 9, 2026

Summary

  • Adds @forge/expo to the Turborepo affected-package detection in CI
  • Excludes @forge/expo from the monorepo-wide lint job (like other mobile packages)
  • Adds a new lint-expo CI job that runs lint (--max-warnings=0), typecheck, and build for the Expo app

Resolves #96

Contracts Changed

None

Regeneration Required

No

Validation

  • CI workflow YAML syntax validated
  • Job mirrors existing lint-ios and lint-android patterns
  • Gated on needs.affected.outputs.mobile_expo == 'true' so it only runs when Expo code changes

Test plan

  • Open PR touching mobile/expo/ and verify the lint-expo job triggers
  • Open PR not touching mobile/expo/ and verify the lint-expo job is skipped
  • Verify monorepo-wide lint job excludes @forge/expo

Supersedes #191 and #206 (rebased on latest main).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Added Expo package detection and validation to the CI pipeline
    • Introduced a dedicated Expo-specific lint-and-build job that runs when Expo changes are detected
    • Adjusted CI lint filtering to exclude Expo where appropriate
    • Updated the Expo package build script to export production artifacts for all platforms (uses Expo export)

Add @forge/expo to the affected-package detection in CI, exclude it
from the monorepo-wide lint job, and add a dedicated lint-expo job
that runs lint (--max-warnings=0), typecheck, and build when Expo
code changes. Mirrors the existing lint-ios and lint-android pattern.

Resolves #96

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Mar 9, 2026

Warning

Rate limit exceeded

@Ur-imazing has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 19 minutes and 47 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.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c7415875-1ae2-407a-9515-91127ea79e35

📥 Commits

Reviewing files that changed from the base of the PR and between b1519d5 and 423957d.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml

Walkthrough

Adds Expo detection to CI and a new conditional lint-expo job. The workflow sets a mobile_expo output when @forge/expo is affected, excludes Expo from the general lint filter, and runs lint, typecheck, and npx expo export for the Expo app when triggered.

Changes

Cohort / File(s) Summary
CI workflow
.github/workflows/ci.yml
Updated affected-package detection (AFFECTED jq) to include @forge/expo; added mobile_expo job output; excluded @forge/expo from general lint filter; added new conditional lint-expo job (checkout, pnpm/node setup, install, lint, typecheck, build).
Expo package manifest
mobile/expo/package.json
Replaced placeholder build script with "build": "npx expo export --platform all" to perform an Expo export in CI.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding CI lint, typecheck, and build validation for the Expo app, which is the primary objective of the PR.
Linked Issues check ✅ Passed The PR successfully implements all acceptance criteria from issue #96: adds lint (ESLint with --max-warnings=0), typecheck, and build (expo export) jobs that run when Expo code changes, integrated into the existing CI workflow.
Out of Scope Changes check ✅ Passed All changes are directly scoped to the linked issue #96: CI workflow modifications for Expo app detection and linting, plus build script update. No unrelated changes detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/96-expo-ci-v2

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.

Ur-imazing and others added 4 commits March 10, 2026 11:20
Replace the echo placeholder with `npx expo export --platform all`
so CI validates the full Metro JS bundle for iOS and Android,
catching broken imports and missing assets that typecheck alone
cannot detect.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The build-and-test job runs `pnpm build` across all packages, which
now triggers `expo export --platform all` for @forge/expo. This fails
because web dependencies (react-dom, react-native-web) are not
installed. Exclude @forge/expo (and other mobile/infra packages) from
the monorepo-wide build, matching the lint exclusion pattern. The
dedicated lint-expo job handles Expo builds independently.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Revert the expo export build swap and build-and-test exclusion.
The package.json change is out of scope for this CI-only issue.
The build step remains a no-op echo, so no exclusion is needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Ur-imazing Ur-imazing merged commit 3a68c53 into main Mar 9, 2026
15 checks passed
@Ur-imazing Ur-imazing deleted the chore/96-expo-ci-v2 branch March 9, 2026 22:29
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.

chore(mobile-expo): CI (lint, typecheck, build) for Expo app

1 participant