chore(deps): stop Dependabot bumping Expo SDK-governed packages - #125
Merged
Conversation
expo/bundledNativeModules.json, shipped inside the installed expo package, fixes the version of 14 of apps/mobile's dependencies for the SDK in use. Dependabot has no knowledge of that matrix and proposes whatever npm published last. PR #123 showed what that costs: react-native 0.87.1 against an SDK 57 tree that expects 0.86.x, plus reanimated 4.6.0 and worklets 0.12.1 against the pins added in #119 — 0.12.x worklets being the exact break that made the iOS build fail to compile in #117. For the two packages also pinned by `overrides` in pnpm-workspace.yaml the failure is quieter and worse: pnpm rewrites the specifier back to the override, `pnpm install --frozen-lockfile` still passes, and the PR goes green while leaving package.json declaring a version that is neither installed nor linked. These versions move when the SDK moves, via `expo install --fix` during an SDK upgrade. `expo` itself is deliberately not listed — its bump is the signal that the others may move, and it must keep arriving. Each rule spells out all three update-types rather than being a bare dependency-name rule: naming the version-update types scopes the rule to version updates, so Dependabot security updates for these packages still arrive. A bare rule would suppress those too. The list is derived from bundledNativeModules.json rather than curated; the regeneration command is in the comment. Closes #124 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Closes #124
Split out of #118. Configuration only — no application code, no lockfile change.
Why now
PR #123 arrived carrying exactly the payload #118 predicted:
expo/bundledNativeModules.jsonfixes the version of 14 ofapps/mobile's dependencies for the SDK in use. Dependabot has no knowledge of that matrix, so it proposes whatever npm published last.For the two packages also pinned by
overridesinpnpm-workspace.yaml, the failure is quieter: pnpm rewrites the specifier back to the override,pnpm install --frozen-lockfilestill passes, and the PR goes green whilepackage.jsondeclares a version that is neither installed nor linked. Verified with a minimal repro on pnpm 11.5.2.The list is derived, not curated
14 entries =
bundledNativeModules.json∩apps/mobiledependencies. The regeneration command is in the comment, so the next reader can re-derive it rather than trust it:expoitself is deliberately not listed. Its version is not in its own map, and its bump is the signal that the other 14 may move. It must keep arriving.Not listed either:
react-native-mmkvandreact-native-nitro-modules. They are native modules but not Expo-governed, so Expo has no opinion on their versions and Dependabot should keep proposing them. Whether those can break the native build is #118's question, not this one.Security updates still arrive — this is why
update-typesis spelled outEach rule lists all three
version-update:semver-*types instead of being a baredependency-namerule. Naming the version-update types scopes the rule to version updates, so Dependabot security updates for these packages are unaffected. A bare rule would suppress those too — which is what an earlier draft of this guard would have done.Verification
.github/dependabot.ymlparses; the resulting ignore list is the 14 derived names each withmajor/minor/patch, plus the pre-existingtypescript(majoronly) rule intactangular,nestjs,dev-tooling,production-deps) and both ecosystems (npm,github-actions) unchangedSequencing note
#118 originally argued this guard should ship only alongside its
expo install --checkgate, so the pin could not silently age. That is reversed here on purpose: #123 shows the harmful PR arrives weekly, while the pin was set to match SDK 57 days ago and needs no near-term lift. #118 still owns the check, which is what will later detect a stale pin — measured, it reads installed versions, so it catches an aged pin but never a Dependabot bump. The two are complementary.This must reach
mainbefore the next scheduled run: Dependabot reads its config from the default branch only.🤖 Generated with Claude Code