deep-linking
Deep links, universal links and app links in React Native. Use when links do not open the app, for apple-app-site-association or assetlinks.json, lost…
Upgrading Expo SDK and React Native safely. Use when bumping the SDK or react-native, or when the app broke after an upgrade: upgrade order, expo install --fix, expo-doctor, config plugins, OTA pitfalls.
$ npx -y skills add AnilBurcu/claude-code-react-native --skill expo-sdk-upgrade --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/expo-sdk-upgradeContext preview
The summary Claude sees to decide when to auto-load this skill.
Upgrading Expo SDK and React Native safely. Use when bumping the SDK or react-native, or when the app broke after an upgrade: upgrade order, expo install --fix, expo-doctor, config plugins, OTA pitfalls.
name: expo-sdk-upgrade description: Upgrading Expo SDK and React Native safely. Use when bumping the SDK or react-native, or when the app broke after an upgrade: upgrade order, expo install --fix, expo-doctor, config plugins, OTA pitfalls. user-invocable: false
# 1. Update the expo package itself to the target SDK. Check expo.dev/changelog # for the current number: Expo now ships about three SDKs a year (55, 56 and # 57 all landed in the first half of 2026), so a number written here rots fast. npm install expo@^<target>.0.0 # 2. Let Expo align every SDK-managed dependency to the versions it was tested with npx expo install --fix # 3. Ask for a health report npx expo-doctor@latest
The SDK changelogs fold steps 1 and 2 into one command, `npx expo install expo@^<target>.0.0 --fix`; either form ends in the same place.
`expo install --fix` is the step people skip and then pay for. React Native, React, Reanimated, gesture-handler, screens and the rest are version-coupled per SDK. Mixing "latest of everything" is the most common source of upgrade crashes.
Then:
# 4. Regenerate native projects if the repo uses CNG (no manual edits under ios/ or android/). # --clean deletes ios/ and android/ before regenerating, which is what the # changelogs mean by "delete the native directories and run prebuild". npx expo prebuild --clean # 5. Run both platforms before declaring victory npx expo run:ios npx expo run:android
If the project uses expo-dev-client, the previous development build is now the wrong runtime. Build a new one (the run commands above produce it) before testing anything, or every screen looks broken for a reason that has nothing to do with the upgrade.
expo-doctor validates dependency versions against React Native Directory metadata and flags unmaintained or incompatible packages. Take its "unmaintained" flags seriously: abandoned native libraries block more upgrades than anything else, and swapping one is often cheaper than patching it.
It cannot catch runtime behavior changes. A library can install cleanly and still break at runtime because of a renamed prop or a New Architecture difference, which is why step 5 is non-negotiable.
Runtime version separates JS updates from native binaries. After an SDK upgrade the native runtime changes, so:
Check `runtimeVersion`, `channel` and the update URL in app config as part of every upgrade, not after the incident.
Claude knows React. It doesn't know why your pod install just failed. A Claude Code plugin that adds the React Native knowledge you only get from shipping apps: build failure triage, SDK upgrades that don't eat a weekend, Hermes crash decoding, push
Repo: AnilBurcu/claude-code-react-native
Deep links, universal links and app links in React Native. Use when links do not open the app, for apple-app-site-association or assetlinks.json, lost…
EAS builds, OTA updates and store submission. Use for eas.json profiles, safe OTA publishing, App Store or Play Store submission, store rejections, versioning…
Diagnose and fix a failing iOS or Android build. Use when the build is broken, pod install or Gradle fails, or the user asks to fix a native build error.
Decoding Hermes crashes and minified production stack traces. Use for "address at index.android.bundle" frames, unsymbolicated or badly grouped Sentry events,…
In-app purchases and subscriptions with RevenueCat. Use for paywalls, odd sandbox behavior, premium not arriving after purchase, webhook verification, restore…
Working with huge build and device logs. Use when a build prints hundreds of lines, for adb logcat or simulator logs, when the user pastes a wall of log text,…