Skip to content

Commit 5144d3d

Browse files
committed
fix(deps): restore the Expo SDK 56 native pins, stop dependabot moving them again
CI was red on main. npm ci could not resolve: jest-expo still wanted @react-native/jest-preset ^0.85 while react-native demanded 0.86. Dependabot had auto-merged a group that bumped react-native 0.85.3 to 0.86.0, plus react, react-dom and the whole native module family (reanimated, screens, gesture-handler, svg, worklets, safe-area-context) off their SDK 56 pins. React Native is on 0.x, so 0.85 to 0.86 is a BREAKING release that dependabot classifies as a minor and the auto-merge workflow then took, exactly as configured. The Expo SDK owns these versions. It pins them to versions built and tested against each other, and expo install --fix is the only thing allowed to move them. They are restored to what expo 56 bundles, and dependabot now ignores ALL update types for them, not just majors. Upgrading them means upgrading the SDK, deliberately. Verified the way CI does: npm ci resolves clean, tsc passes, the suite is green, and expo-doctor reports 21 of 21 checks passing. lucide-react-native 1.24 is kept. That part was fine.
1 parent dfa7215 commit 5144d3d

3 files changed

Lines changed: 306 additions & 516 deletions

File tree

.github/dependabot.yml

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,40 @@ updates:
1212
- "minor"
1313
- "patch"
1414
ignore:
15-
# The expo-* family, its babel preset, its jest runner, and the React Native pin all move
16-
# together as one Expo SDK release, driven by "npx expo install --fix" and the upgrade guide.
17-
# A lone major bump of any one of them just breaks the app, so an SDK jump is a deliberate
18-
# migration, never a weekly PR. Minor and patch updates inside the current SDK still flow.
15+
# THE EXPO SDK OWNS THESE VERSIONS. The SDK template pins react, react-native and every
16+
# native module to exact versions that are built and tested against each other, and
17+
# "npx expo install --fix" is the only thing allowed to move them. React Native is on 0.x,
18+
# so a 0.85 -> 0.86 bump is a BREAKING release that Dependabot happily classifies as a minor
19+
# and auto-merges. That is not theoretical: it landed once, and it broke "npm ci" outright,
20+
# because jest-expo still wanted @react-native/jest-preset ^0.85 while react-native demanded
21+
# 0.86. Ignore ALL update types here, not just majors. Upgrading these means upgrading the
22+
# Expo SDK, deliberately, with expo install --fix and expo-doctor.
23+
- dependency-name: "react"
24+
- dependency-name: "react-dom"
25+
- dependency-name: "react-native"
26+
- dependency-name: "react-native-*"
27+
- dependency-name: "@react-native/*"
28+
- dependency-name: "@react-native-async-storage/async-storage"
29+
# The expo-* family, its babel preset and its jest runner also ship as one SDK release, so a
30+
# lone MAJOR breaks the app. Patch and minor inside the current SDK still flow.
1931
- dependency-name: "expo"
2032
update-types: ["version-update:semver-major"]
2133
- dependency-name: "expo-*"
2234
update-types: ["version-update:semver-major"]
35+
- dependency-name: "@expo/*"
36+
update-types: ["version-update:semver-major"]
2337
- dependency-name: "jest-expo"
2438
update-types: ["version-update:semver-major"]
2539
- dependency-name: "babel-preset-expo"
2640
update-types: ["version-update:semver-major"]
27-
- dependency-name: "react-native*"
28-
update-types: ["version-update:semver-major"]
29-
- dependency-name: "@react-native-async-storage/async-storage"
30-
update-types: ["version-update:semver-major"]
3141
- dependency-name: "jest"
3242
update-types: ["version-update:semver-major"]
3343
- dependency-name: "@types/jest"
3444
update-types: ["version-update:semver-major"]
35-
# NativeWind owns the Tailwind version. This app is on a Tailwind 3 config
36-
# (tailwind.config.js with content globs and presets: [nativewind/preset]), and Tailwind 4
37-
# replaces that with a CSS-first @theme engine. NativeWind 4 has no Tailwind 4 preset, so
38-
# the bump silently breaks styling. The peer range says >3.3.0, which makes it look safe and
39-
# it is not. Moving to Tailwind 4 means moving to NativeWind 5, deliberately.
45+
# NativeWind owns the Tailwind version. This app is on a Tailwind 3 config (content globs plus
46+
# presets: [nativewind/preset]), and Tailwind 4 replaces that with a CSS-first @theme engine
47+
# NativeWind 4 has no preset for. The peer range says >3.3.0, which makes it look safe and it
48+
# is not. Tailwind 4 means NativeWind 5, deliberately.
4049
- dependency-name: "tailwindcss"
4150
update-types: ["version-update:semver-major"]
4251
# TypeScript 7 is a full compiler rewrite. Revisit deliberately, not as a drive-by bump.

0 commit comments

Comments
 (0)