Repository navigation
Conversation
src/host.ts tells the shared core how to build the expo-native fixture, install it, and launch it on a simulator or an emulator, on this machine or on a borrowed CI runner. src/native-build.ts keys a native build on what decides it and puts new JS into a kept build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o a session verify-e2e.yml runs every e2e test on an iOS simulator and an Android emulator for a pull request that is ready for review. verify-remote.yml boots one device on a runner for a session that a developer or an agent starts by workflow_dispatch. Both take a native build that an earlier run of the same branch kept, through bin/fetch-native-build.sh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
.claude/skills/verify-clerk-expo/ is the instructions an agent or a developer reads to prove a @clerk/expo change on a device, and .cursor/skills/verify-clerk-expo links to it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🦋 Changeset detectedLatest commit: 26540ea The changes in this PR will be included in the next version bump. This PR includes changesets to release 0 packagesWhen changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
mikepitre
added this pull request to stack #10239
October 14, 2026 17:56
This was referenced Oct 14, 2026
Draft
This was referenced Oct 14, 2026
…kfile The config plugins of the workspace packages load @expo/config-plugins from the workspace install, which the root pnpm-lock.yaml resolves. A session patch that changed only that lockfile kept the native fingerprint and the native project key, so the session put a new bundle in a native build that an older @expo/config-plugins generated. The root lockfile now counts as a native input while it differs from HEAD. A committed lockfile still does not, so the native builds that runs of a branch keep are found as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d profile dismissal The feature map said Expo has no organization UI. That holds for the native components only, since @clerk/expo/web exports the clerk-js organization components. On Android the UserProfileView dismisses itself when the user goes away, not the UserButton. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Evidence text told a remote session to attach without --before for a change already pushed. A second session started on a pushed branch at the base commit makes that before run, and attach --before takes it. The text now gives those steps, copies the settings file with a committed spec for the before run, and says that attach pairs a missing screenshot with the failure screenshot of its own test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On a Mac, plain `up` picks the local backend, so the remote before-run steps now pass --backend remote to both `up` calls, as the run that proved these steps did. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the run is paced Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ds ffmpeg The engine's `settle` never paced a spec's actions, so the skill no longer says that a run holds 0.7 s after each action. It names the two pauses there are, the 0.6 s before `host.tap` and `host.fill` and the 2 s at the end of a `host.evidence` block, and says to tap with `host.tap` inside a block. Setup and the remote machine needs now say that `attach --video` cuts with ffmpeg and posts the whole video without it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This is the third of four pull requests that replace the eleven of stack #10100. It sits on #10236, and #10238 sits on it. It holds the parts of #10087, #10090, and #10131 that are this repository's own, apart from the e2e tests in #10236, with the edits of #10219 to #10230 already in them.
With this pull request,
integration/expo-native/bin/control-clerk-exporuns. It builds theexpo-nativefixture from #10235, takes a simulator or an emulator, creates a Clerk development application for the worktree, runs the e2e tests from #10236, and keeps a video, screenshots, and logs of each run. On a machine that cannot run the device, it borrows one on a GitHub Actions runner. CI runs every e2e test on both platforms for a pull request that is ready for review.The first four commits are in reading order. The last two answer a review: a session builds natively when uncommitted changes touch the root
pnpm-lock.yaml, and a test pins when a session fetches kept builds. Paths that beginsrc/,bin/, ortest/are insideintegration/expo-native/.src/host.tsanswers what the shared core asks of a platform.src/fixture.tsbuilds the fixture as a Debug dev client for a device on this machine, or as a Release app with its JS inside for a runner.src/native-build.tskeys a native build on what decides it, and puts new JS into a kept build.src/freshness.tschecks that the build ofpackages/expois not older than its sources.src/platform/session-device.tsis the device recipe of a borrowed session. Also the packageREADME.md.verify-e2e.ymlruns every e2e test on iOS and Android.verify-remote.ymlruns one borrowed-device session.bin/fetch-native-build.shandbin/boot-ios-simulators.share steps that both use.test/remote-contract.test.ts(315 lines) is a copy from clerk-ios..claude/skills/verify-clerk-expo/, its Cursor symlink, and theVerifying changessections ofAGENTS.mdandpackages/expo/AGENTS.md.To review, read
.claude/skills/verify-clerk-expo/SKILL.mdfirst for what the CLI does, thensrc/host.ts,src/fixture.ts, andsrc/native-build.ts, then the two workflows. Apart fromremote-contract.test.ts, nothing here is copied or generated. The five changesets are the empty ones that the old pull requests carried. No published package changes.What needs attention:
verify-e2e.ymlstarts on a pull request tomainthat changes the package, the fixture, or an Expo package, and by hand. A draft, a pull request from a fork, and a repository without the secret get a notice and no device job. The device job runs the pull request's code withcontents: read,actions: read, andpull-requests: write, and givesMOBILE_VERIFICATION_PLATFORM_API_KEYonly to the steps that callup,run, anddown. It uploads evidence only when the CLI found no secret value in the run.verify-e2e.ymlkeeps the native app it built as an artifact for seven days, named by its native fingerprint. A later job, or a session, takes one only from a run of the same branch of this repository, never from a fork. Artifacts of this repository are public, so a session stores none of its own.verify-remote.ymlstarts only byworkflow_dispatch, which needs write access. It uses no secret, and its jobs havecontents: read, withactions: readadded for the session job. A session builds the pushed commit, or that commit with the uncommitted changes to the app sources that the CLI sends as one patch. Every route of its tunnel needs a bearer token that the CLI made. The tunnel is a Cloudflare quick tunnel, so Cloudflare can read the traffic, which includes sign-in tickets for test users of an application thatdowndeletes.src/native-build.tsexports the JS from the checkout, compiles it with the fixture'shermesc, and puts it in a copy of a kept app. The build fails unless the app then holds exactly that bundle.npm testinintegration/expo-native/passes 837 of 837 on this branch, andnpm run typecheckis clean.verify-e2erun 38611002410, started by hand on #10238 before those two commits, passed 17 of 17 tests on iOS and 15 of 15 on Android.Checklist
pnpm testruns as expected.pnpm buildruns as expected.Type of change
🤖 Generated with Claude Code