Expo Brownfield Integration
mweinbach/agent-coworker
Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.
Upgrade the React Native fixture app to a new version. An agent skill from Shopify/flash-list.
$ npx skills add Shopify/flash-list --skill upgrade-react-native -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Shopify/flash-list upgrade-react-native --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Shopify/flash-list.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/upgrade-react-native .claude/skills/upgrade-react-native && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "upgrade-react-native" agent skill from https://github.com/Shopify/flash-list/tree/main/.claude/skills/upgrade-react-native into .claude/skills/upgrade-react-native/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-react-native", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Shopify/flash-list/tree/main/.claude/skills/upgrade-react-nativeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Shopify/flash-list --skill upgrade-react-native -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Shopify/flash-list upgrade-react-native --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Shopify/flash-list.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/upgrade-react-native .agents/skills/upgrade-react-native && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "upgrade-react-native" agent skill from https://github.com/Shopify/flash-list/tree/main/.claude/skills/upgrade-react-native into .agents/skills/upgrade-react-native/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-react-native", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Shopify/flash-list --skill upgrade-react-native -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Shopify/flash-list upgrade-react-native --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Shopify/flash-list.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/upgrade-react-native .cursor/skills/upgrade-react-native && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "upgrade-react-native" agent skill from https://github.com/Shopify/flash-list/tree/main/.claude/skills/upgrade-react-native into .cursor/skills/upgrade-react-native/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-react-native", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Shopify/flash-list.git --path .claude/skills/upgrade-react-native--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Shopify/flash-list --skill upgrade-react-native -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Shopify/flash-list upgrade-react-native --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Shopify/flash-list.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/upgrade-react-native .gemini/skills/upgrade-react-native && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "upgrade-react-native" agent skill from https://github.com/Shopify/flash-list/tree/main/.claude/skills/upgrade-react-native into .gemini/skills/upgrade-react-native/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-react-native", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Shopify/flash-list upgrade-react-nativeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Shopify/flash-list --skill upgrade-react-native -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Shopify/flash-list.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/upgrade-react-native .github/skills/upgrade-react-native && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "upgrade-react-native" agent skill from https://github.com/Shopify/flash-list/tree/main/.claude/skills/upgrade-react-native into .github/skills/upgrade-react-native/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-react-native", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Shopify/flash-list --skill upgrade-react-native -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Shopify/flash-list upgrade-react-native --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Shopify/flash-list.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/upgrade-react-native .opencode/skills/upgrade-react-native && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "upgrade-react-native" agent skill from https://github.com/Shopify/flash-list/tree/main/.claude/skills/upgrade-react-native into .opencode/skills/upgrade-react-native/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-react-native", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
upgrade-react-nativeUpgrade the React Native fixture app to a new version. An agent skill from Shopify/flash-list.
Upgrade React Native is an agent skill from Shopify/flash-list, published by the product's own GitHub organization. Upgrade the React Native fixture app to a new version. Covers JS deps, Android (Gradle, Kotlin, SDK), iOS (Podfile, pbxproj), Metro config, and third-party libraries.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Mobile, covering Cross-platform mobile apps and Android development. It works with React Native, Gradle, Android and iOS. The repository describes itself as: A better list for React Native. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 527d767. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
yarnnpmxcodebuildnpxnodeFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
raw.githubusercontent.comAlso links to:
docs.swmansion.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Upgrade React Native loads about 1.9k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 706 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Shopify/flash-list at commit 527d767, republished under its MIT licence (© Shopify). 706 words, ~1,890 tokens.
.claude/skills/upgrade-react-native/SKILL.md (or your agent's skills folder).The fixture app lives in fixture/react-native/. It is the primary test vehicle for FlashList on iOS and Android. The web fixture (fixture/web/) uses Expo and is independent — check it builds after the upgrade but it does not need the same dependency changes.
Check the latest stable RN version:
npm view react-native@latest versionUse the rn-diff-purge repo to see the exact template diff between your current and target version:
https://raw.githubusercontent.com/react-native-community/rn-diff-purge/release/<version>/RnDiffApp/<file>Key files to fetch:
package.json — React version, CLI versions, dev dep versionsandroid/build.gradle — SDK versions, Kotlin versionandroid/app/build.gradle — plugin names, dependency patternsandroid/gradle.properties — feature flags (newArch, hermes, edgeToEdge)android/gradle/wrapper/gradle-wrapper.properties — Gradle versionandroid/settings.gradle — plugin management patternandroid/app/src/main/java/com/rndiffapp/MainApplication.kt — app initialization patternios/Podfile — pod configuration, post_install hooksios/RnDiffApp/AppDelegate.swift — app delegate patternmetro.config.js — Metro config API changesCheck third-party library compatibility with the target RN version:
react-native-reanimated — check compatibility tablereact-native-gesture-handler — supports 3 latest RN minorsreact-native-screens, react-native-safe-area-context — usually latest works@react-navigation/* — check for breaking changes@d11/react-native-fast-image, etc.)fixture/react-native/package.jsonUpdate in this order:
react and react-native — match the template@react-native/* dev packages — must match the RN minor (e.g., @react-native/babel-preset@0.84.1 for RN 0.84.1)@react-native-community/cli* — match the templatereact-native-worklets)Check if any Babel plugins moved packages. Example: reanimated 4 moved react-native-reanimated/plugin to react-native-worklets/plugin.
Metro's internal module paths change between versions. Common breakage:
metro-config/src/defaults/exclusionList — in newer Metro this moved to metro-config/private/defaults/exclusionList and exports a .default instead of a direct functionnode -e "console.log(typeof require('<path>'))"android/build.gradlebuildToolsVersion, compileSdkVersion, targetSdkVersion — match templatekotlinVersion — match templatendkVersion — match template (usually unchanged between minors)android/gradle/wrapper/gradle-wrapper.propertiesandroid/gradle.propertiesandroid.enableJetifier, FLIPPER_VERSION)edgeToEdgeEnabled)android/app/build.gradlekotlin-android → org.jetbrains.kotlin.android)import com.android.build.OutputFile)autolinkLibrariesWithApp() is presentandroid/settings.gradleMainApplication.ktAppPackage() registration and I18nUtil.allowRTL() for RTL support.SoLoader.init() + DefaultNewArchitectureEntryPoint.load() + ReactNativeHostloadReactNative(this) + getDefaultReactHost() with lazy delegate (no ReactNativeHost)ios/PodfileENV['RCT_NEW_ARCH_ENABLED'] when new arch is the default)get_default_flags())use_frameworks! :linkage => :static if needed)ios/FlatListPro.xcodeproj/project.pbxprojIPHONEOS_DEPLOYMENT_TARGET to match the RN minimum (e.g., 15.1 for RN 0.76+)ios/FlatListPro/Info.plistRCTNewArchEnabled)cd fixture/react-native
rm -rf node_modules yarn.lock
yarn install
cd ios && rm -rf Pods Podfile.lock && pod install && cd ..yarn build # from repo root — compiles src/ → dist/cd fixture/react-native
xcodebuild -workspace ios/FlatListPro.xcworkspace -scheme FlatListPro \
-configuration Debug -sdk iphonesimulator \
-destination 'platform=iOS Simulator,name=iPhone 16 Pro' buildcd fixture/react-native
yarn react-native run-androidcd fixture/web && yarn install && npx expo export --platform webyarn test # from repo root — 181+ tests must passcd fixture/react-native
yarn e2e:build:ios
yarn e2e:test:iosScreenshot reference updates: Visual diff tests (e.g., Carousel orientation) will fail after an RN upgrade because rendering changes slightly. To regenerate references:
e2e/artifacts/ios/Carousel_landscape/)exclusionList import — Metro's internal API paths change between versions. Always verify the import resolves before starting Metro.react-native-reanimated major version — Major bumps (3→4) require Babel plugin changes and may add new peer dependencies (react-native-worklets).IPHONEOS_DEPLOYMENT_TARGET — Must match or exceed the RN minimum. Pod install updates most settings, but the project-level target in pbxproj must be set manually.Info.plist new keys — Some RN versions require new plist entries (e.g., RCTNewArchEnabled). Check the template's Info.plist diff.© Shopify, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/upgrade-react-native of Shopify/flash-list.
Open the folder on GitHubat commit 527d767
Upgrade React Native next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Upgrade React Native this skillShopify/flash-list | 7.2k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Expo Brownfield Integrationmweinbach/agent-coworker | 156 | 2 repos | ~900 | Automated safety check: Notes | Custom licence | |
| Claude Android NinjaDrjacky/claude-android-ninja | 124 | — | ~5.2k | Automated safety check: Pass | Apache-2.0 | |
| Simulator Audio E2Ehyochan/react-native-nitro-sound | 961 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Android Audio E2Ehyochan/react-native-nitro-sound | 961 | — | ~814 | Automated safety check: Pass | MIT | |
| Moq Kitsoftware-mansion-labs/skills | 291 | — | ~5k | Automated safety check: Pass | Apache-2.0 |
mweinbach/agent-coworker
Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.
Drjacky/claude-android-ninja
Build and migrate Android apps with Kotlin, Jetpack Compose, MVVM, Hilt, Room 3 (KSP, SQLiteDriver, Flow/suspend DAOs), Navigation3, and multi-module Gradle.
hyochan/react-native-nitro-sound
Build and run repeatable react-native-nitro-sound recorder/player regression tests on an iOS Simulator or Android emulator, with explicit virtual-device selection, microphone permission, Maestro…
hyochan/react-native-nitro-sound
Build and run device-backed Android end-to-end checks for react-native-nitro-sound permissions, recording, playback, listeners, pause/resume, seek, speed, audio focus, lifecycle behavior, and rapid…
software-mansion-labs/skills
Software Mansion's moq-kit — native Swift (iOS) and Kotlin (Android) SDKs for Media over QUIC (moq-lite) live streaming: sub-second-latency playback, camera/microphone/screen publishing, and…
expo/skills
Integrate Expo and React Native into an existing native iOS or Android app.
Shopify/flash-list
Interact with iOS simulator or Android emulator/device using snapshot-based coordinates.
Shopify/flash-list
Analyze agent feedback artifacts from GitHub Actions workflow runs, extract actionable learnings, and incorporate them into skill files and CLAUDE.md.
Shopify/flash-list
Full workflow for fixing a GitHub issue - understand the problem, reproduce, diagnose root cause, fix, test on iOS/Android simulators, review, and raise a PR
Shopify/flash-list
Create a GitHub PR for FlashList. An agent skill from Shopify/flash-list.
Shopify/flash-list
Review a FlashList PR or branch, run unit tests, test on iOS simulator, and verify RTL/LTR behavior.
Shopify/flash-list
Triage a GitHub issue — classify priority (P0/P1/P2), search for duplicates, and apply labels.
Categories
Upgrade the React Native fixture app to a new version. An agent skill from Shopify/flash-list. Upgrade React Native is an agent skill from Shopify/flash-list, published by the product's own GitHub organization. Upgrade the React Native fixture app to a new version.
Upgrade React Native fits situations like: tasks that involve Cross-platform mobile apps; tasks that involve Android development.
Run `npx skills add Shopify/flash-list --skill upgrade-react-native -a claude-code`. Or copy the skill folder (.claude/skills/upgrade-react-native in Shopify/flash-list) into .claude/skills/upgrade-react-native in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Shopify/flash-list --skill upgrade-react-native -a codex`. Or copy the skill folder (.claude/skills/upgrade-react-native in Shopify/flash-list) into .agents/skills/upgrade-react-native in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Shopify/flash-list --skill upgrade-react-native -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/upgrade-react-native, .gemini/skills/upgrade-react-native, .github/skills/upgrade-react-native and .opencode/skills/upgrade-react-native in your project.
Going by SKILL.md and its folder, Upgrade React Native needs the command-line tools its instructions call (yarn, npm, xcodebuild, npx and node). Our summary lists: Node.js.
SKILL.md names 2 domains. In commands or code: raw.githubusercontent.com; the agent is likely to contact it when it follows the instructions. As links in the text: docs.swmansion.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Upgrade React Native is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Upgrade React Native: Expo Brownfield Integration (mweinbach/agent-coworker, 156 stars), Claude Android Ninja (Drjacky/claude-android-ninja, 124 stars), Simulator Audio E2E (hyochan/react-native-nitro-sound, 961 stars) and Android Audio E2E (hyochan/react-native-nitro-sound, 961 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Shopify (a GitHub organization, an official publisher) maintains it in Shopify/flash-list, which has 7,245 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 1, 2026.
Source: Shopify/flash-list on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.