Token导航 LogoToken导航

Agent Skill · 前端设计

react-native-expo(React native expo 开发)

用于辅助前端页面、组件、样式和交互逻辑的开发与维护。它适合让 Agent 生成或审查 React、Next.js、Vue、Tailwind、CSS 等相关代码,整理组件结构,或定位布局和性能问题。使用时需要结合项目现有设计系统、路由和构建方式,避免只生成孤立片段;涉及页面改动时,应配合本地预览和构建检查确认视觉效果。

react-native-expo 是前端设计类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为执行命令;许可证为 MIT,第三方扫描已通过,按安装量在前端设计类的 10,216 个 Skill 里排第 2,496。

总安装 2,211周安装 94GitHub Stars 37下载 775核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:react-native-expo(React native expo 开发)
来源仓库:https://github.com/ovachiever/droid-tings
仓库路径:skills/react-native-expo
安装命令:
npx skills add https://github.com/ovachiever/droid-tings --skill react-native-expo
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/ovachiever/droid-tings --skill react-native-expo

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

用于辅助 React Native 与 Expo 框架的前端开发与组件维护。适合生成或审查 Expo 相关代码,整合原生模块。可整理组件结构或定位性能与布局问题。react-native-expo 属于前端设计类 Skill,可作为该场景下的辅助能力补充。使用时需结合项目现有设计系统与构建方式。

涉及页面改动时应配合本地预览和构建检查确认效果。

来源仓库内路径:skills/react-native-expo

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/ovachiever/droid-tings --skill react-native-ex…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要执行命令,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

react-native-expo 怎么安装?

在终端执行 npx skills add https://github.com/ovachiever/droid-tings --skill react-native-expo。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

react-native-expo 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

react-native-expo 需要什么权限?

权限级别是执行命令。安装流程涉及命令执行,可能通过 npx skills add https://github.com/ovachiever/droid-tings --skill react-native-expo;npx skills add ovachiever/droid-tings --skill "react-native-expo" 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

react-native-expo 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

react-native-expo 用的人多吗?

公开数据是累计安装 2,211 次,近一周安装 94 次,下载 775 次,GitHub 37 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

react-native-expo 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 3 个目录同时收录,说明这个 Skill 流传比较广。
  • 许可证明确为 MIT,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 需要执行命令,装到常用环境前要先评估影响面。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 不能接受 Skill 在你机器上执行命令的人。
  • 需要厂商级技术支持和 SLA 的生产系统。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
react-native-expo

React native expo 开发 · 本页

2,21137执行命令MIT通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

React Native Expo (0.76-0.82+ / SDK 52+)

Status: Production Ready Last Updated: 2025-11-22 Dependencies: Node.js 18+, Expo CLI Latest Versions: react-native@0.82, expo@~52.0.0, react@19.1


Quick Start (15 Minutes)

1. Create New Expo Project (RN 0.76+)

# Create new Expo app with React Native 0.76+
npx create-expo-app@latest my-app

cd my-app

# Install latest dependencies
npx expo install react-native@latest expo@latest

Why this matters:

  • Expo SDK 52+ uses React Native 0.76+ with New Architecture enabled by default
  • New Architecture is mandatory in React Native 0.82+ (cannot be disabled)
  • Hermes is the only supported JavaScript engine (JSC removed from Expo Go)

2. Verify New Architecture is Enabled

# Check if New Architecture is enabled (should be true by default)
npx expo config --type introspect | grep newArchEnabled

CRITICAL:

  • React Native 0.82+ requires New Architecture - legacy architecture completely removed
  • If migrating from 0.75 or earlier, upgrade to 0.76-0.81 first to use the interop layer
  • Never try to disable New Architecture in 0.82+ (build will fail)

3. Start Development Server

# Start Expo dev server
npx expo start

# Press 'i' for iOS simulator
# Press 'a' for Android emulator
# Press 'j' to open React Native DevTools (NOT Chrome debugger!)

CRITICAL:

  • Old Chrome debugger removed in 0.79 - use React Native DevTools instead
  • Metro terminal no longer streams console.log() - use DevTools Console
  • Keyboard shortcuts 'a'/'i' work in CLI, not Metro terminal

Critical Breaking Changes (Dec 2024+)

🔴 New Architecture Mandatory (0.82+)

What Changed:

  • 0.76-0.81: New Architecture default, legacy frozen (no new features)
  • 0.82+: Legacy Architecture completely removed from codebase

Impact:

# This will FAIL in 0.82+:
# gradle.properties (Android)
newArchEnabled=false  # ❌ Ignored, build fails

# iOS
RCT_NEW_ARCH_ENABLED=0  # ❌ Ignored, build fails

Migration Path:

  1. Upgrade to 0.76-0.81 first (if on 0.75 or earlier)
  2. Test with New Architecture enabled
  3. Fix incompatible dependencies (Redux, i18n, CodePush)
  4. Then upgrade to 0.82+

🔴 propTypes Removed (React 19 / RN 0.78+)

What Changed: React 19 removed propTypes completely. No runtime validation, no warnings - silently ignored.

Before (Old Code):

import PropTypes from 'prop-types';

function MyComponent({ name, age }) {
  return <Text>{name} is {age}</Text>;
}

MyComponent.propTypes = {  // ❌ Silently ignored in React 19
  name: PropTypes.string.isRequired,
  age: PropTypes.number
};

After (Use TypeScript):

type MyComponentProps = {
  name: string;
  age?: number;
};

function MyComponent({ name, age }: MyComponentProps) {
  return <Text>{name} is {age}</Text>;
}

Migration:

# Use React 19 codemod to remove propTypes
npx @codemod/react-19 upgrade

🔴 forwardRef Deprecated (React 19)

What Changed: forwardRef no longer needed - pass ref as a regular prop.

Before (Old Code):

import { forwardRef } from 'react';

const MyInput = forwardRef((props, ref) => {  // ❌ Deprecated
  return <TextInput ref={ref} {...props} />;
});

After (React 19):

function MyInput({ ref, ...props }) {  // ✅ ref is a regular prop
  return <TextInput ref={ref} {...props} />;
}

🔴 Swift iOS Template Default (0.77+)

What Changed: New projects use Swift AppDelegate.swift instead of Objective-C AppDelegate.mm.

Old Structure:

ios/MyApp/
├── main.m              # ❌ Removed
├── AppDelegate.h       # ❌ Removed
└── AppDelegate.mm      # ❌ Removed

New Structure:

// ios/MyApp/AppDelegate.swift ✅
import UIKit
import React

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
  func application(_ application: UIApplication, ...) -> Bool {
    // App initialization
    return true
  }
}

Migration (0.76 → 0.77): When upgrading existing projects, you MUST add this line:

// Add to AppDelegate.swift during migration
import React
import ReactCoreModules

RCTAppDependencyProvider.sharedInstance()  // ⚠️ CRITICAL: Must add this!

Source: React Native 0.77 Release Notes

🔴 Metro Log Forwarding Removed (0.77+)

What Changed: Metro terminal no longer streams console.log() output.

Before (0.76):

# console.log() appeared in Metro terminal
$ npx expo start
> LOG  Hello from app!  # ✅ Appeared here

After (0.77+):

# console.log() does NOT appear in Metro terminal
$ npx expo start
# (no logs shown)  # ❌ Removed

# Workaround (temporary, will be removed):
$ npx expo start --client-logs  # Shows logs, deprecated

Solution: Use React Native DevTools Console instead (press 'j' in CLI).

Source: React Native 0.77 Release Notes

🔴 Chrome Debugger Removed (0.79+)

What Changed: Old Chrome debugger (chrome://inspect) removed. Use React Native DevTools instead.

Old Method (Removed):

# ❌ This no longer works:
# Open Dev Menu → "Debug" → Chrome DevTools opens

New Method (0.76+):

# Press 'j' in CLI or Dev Menu → "Open React Native DevTools"
# ✅ Uses Chrome DevTools Protocol (CDP)
# ✅ Reliable breakpoints, watch values, stack inspection
# ✅ JS Console (replaces Metro logs)

Limitations:

  • Third-party extensions not yet supported (Redux DevTools, etc.)
  • Network inspector coming in 0.83 (late 2025)

Source: React Native 0.79 Release Notes

🔴 JSC Engine Moved to Community (0.79+)

What Changed: JavaScriptCore (JSC) moved out of React Native core, Hermes is default.

Before (0.78):

  • Both Hermes and JSC bundled
  • JSC available in Expo Go

After (0.79+):

// If you still need JSC (rare):
{
  "dependencies": {
    "@react-native-community/javascriptcore": "^1.0.0"
  }
}

Expo Go:

  • JSC completely removed from Expo Go (SDK 52+)
  • Hermes only

Note: JSC will eventually be removed entirely from React Native.

🔴 Deep Imports Deprecated (0.80+)

What Changed: Importing from internal paths will break.

Before (Old Code):

// ❌ Deep imports deprecated
import Button from 'react-native/Libraries/Components/Button';
import Platform from 'react-native/Libraries/Utilities/Platform';

After:

// ✅ Import only from 'react-native'
import { Button, Platform } from 'react-native';

Source: React Native 0.80 Release Notes


New Features (Post-Dec 2024)

CSS Properties (0.77+ New Architecture Only)

React Native now supports many CSS properties previously only available on web:

1. display: contents

Makes an element "invisible" but keeps its children in the layout:

<View style={{ display: 'contents' }}>
  {/* This View disappears, but Text still renders */}
  <Text>I'm still here!</Text>
</View>

Use case: Wrapper components that shouldn't affect layout.

2. boxSizing

Control how width/height are calculated:

// Default: padding/border inside box
<View style={{
  boxSizing: 'border-box',  // Default
  width: 100,
  padding: 10,
  borderWidth: 2
  // Total width: 100 (padding/border inside)
}} />

// Content-box: padding/border outside
<View style={{
  boxSizing: 'content-box',
  width: 100,
  padding: 10,
  borderWidth: 2
  // Total width: 124 (100 + 20 padding + 4 border)
}} />
3. mixBlendMode + isolation

Blend layers like Photoshop:

<View style={{ backgroundColor: 'red' }}>
  <View style={{
    mixBlendMode: 'multiply',  // 16 modes available
    backgroundColor: 'blue'
    // Result: purple (red × blue)
  }} />
</View>

// Prevent unwanted blending:
<View style={{ isolation: 'isolate' }}>
  {/* Blending contained within this view */}
</View>

Available modes: multiply, screen, overlay, darken, lighten, color-dodge, color-burn, hard-light, soft-light, difference, exclusion, hue, saturation, color, luminosity

4. outline Properties

Visual outline that doesn't affect layout (unlike border):

<View style={{
  outlineWidth: 2,
  outlineStyle: 'solid',      // solid | dashed | dotted
  outlineColor: 'blue',
  outlineOffset: 4,           // Space between element and outline
  outlineSpread: 2            // Expand outline beyond offset
}} />

Key difference: Outline doesn't change element size or trigger layout recalculations.

Source: React Native 0.77 Release Notes

Android XML Drawables (0.78+)

Use native Android vector drawables (XML) as Image sources:

// Load XML drawable at build time
import MyIcon from './assets/my_icon.xml';

<Image
  source={MyIcon}
  style={{ width: 40, height: 40 }}
/>

// Or with require:
<Image
  source={require('./assets/my_icon.xml')}
  style={{ width: 40, height: 40 }}
/>

Benefits:

  • Scalable vector graphics (resolution-independent)
  • Smaller APK size vs PNG
  • Off-thread decoding (better performance)

Constraints:

  • Build-time resources only (no network loading)
  • Android only (iOS still uses SF Symbols or PNG)

Source: React Native 0.78 Release Notes

React 19 New Hooks

1. useActionState (replaces form patterns)
import { useActionState } from 'react';

function MyForm() {
  const [state, submitAction, isPending] = useActionState(
    async (prevState, formData) => {
      // Async form submission
      const result = await api.submit(formData);
      return result;
    },
    { message: '' }  // Initial state
  );

  return (
    <form action={submitAction}>
      <TextInput name="email" />
      <Button disabled={isPending}>
        {isPending ? 'Submitting...' : 'Submit'}
      </Button>
      {state.message && <Text>{state.message}</Text>}
    </form>
  );
}
2. useOptimistic (optimistic UI updates)
import { useOptimistic } from 'react';

function LikeButton({ postId, initialLikes }) {
  const [optimisticLikes, addOptimisticLike] = useOptimistic(
    initialLikes,
    (currentLikes, amount) => currentLikes + amount
  );

  async function handleLike() {
    addOptimisticLike(1);  // Update UI immediately
    await api.like(postId);  // Then update server
  }

  return (
    <Button onPress={handleLike}>
      ❤️ {optimisticLikes}
    </Button>
  );
}
3. use (read promises/contexts during render)
import { use } from 'react';

function UserProfile({ userPromise }) {
  // Read promise directly during render (suspends if pending)
  const user = use(userPromise);

  return <Text>{user.name}</Text>;
}

Source: React 19 Upgrade Guide

React Native DevTools (0.76+)

Access:

  • Press j in CLI
  • Or open Dev Menu → "Open React Native DevTools"

Features:

  • ✅ Reliable breakpoints (unlike old Chrome debugger)
  • ✅ Watch values, call stack inspection
  • ✅ JS Console (replaces Metro logs)
  • ✅ Chrome DevTools Protocol (CDP) based
  • ⏳ Network inspector (coming in 0.83)
  • ❌ Third-party extensions not yet supported

Source: React Native DevTools Announcement


Known Issues Prevention

This skill prevents 12 documented issues:

Issue #1: propTypes Silently Ignored

Error: No error - propTypes just doesn't work Source: React 19 Upgrade Guide Why It Happens: React 19 removed runtime propTypes validation Prevention: Use TypeScript instead, run npx @codemod/react-19 upgrade to remove

Issue #2: forwardRef Deprecated Warning

Error: Warning: forwardRef is deprecated Source: React 19 Upgrade Guide Why It Happens: React 19 allows ref as a regular prop Prevention: Remove forwardRef wrapper, pass ref as prop directly

Issue #3: New Architecture Cannot Be Disabled (0.82+)

Error: Build fails with newArchEnabled=false Source: React Native 0.82 Release Notes Why It Happens: Legacy architecture completely removed from codebase Prevention: Migrate to New Architecture before upgrading to 0.82+

Issue #4: "Fabric component descriptor not found"

Error: Fabric component descriptor provider not found for component Source: New Architecture Migration Guide Why It Happens: Component not compatible with New Architecture (Fabric) Prevention: Update library to New Architecture version, or use interop layer (0.76-0.81)

Issue #5: "TurboModule not registered"

Error: TurboModule '[ModuleName]' not found Source: New Architecture Migration Guide Why It Happens: Native module needs New Architecture support (TurboModules) Prevention: Update library to support TurboModules, or use interop layer (0.76-0.81)

Issue #6: Swift AppDelegate Missing RCTAppDependencyProvider

Error: RCTAppDependencyProvider not found Source: React Native 0.77 Release Notes Why It Happens: When migrating from Objective-C to Swift template Prevention: Add RCTAppDependencyProvider.sharedInstance() to AppDelegate.swift

Issue #7: Metro Logs Not Appearing

Error: console.log() doesn't show in terminal Source: React Native 0.77 Release Notes Why It Happens: Metro log forwarding removed in 0.77 Prevention: Use React Native DevTools Console (press 'j'), or --client-logs flag (temporary)

Issue #8: Chrome Debugger Not Working

Error: Chrome DevTools doesn't connect Source: React Native 0.79 Release Notes Why It Happens: Old Chrome debugger removed in 0.79 Prevention: Use React Native DevTools instead (press 'j')

Issue #9: Deep Import Errors

Error: Module not found: react-native/Libraries/... Source: React Native 0.80 Release Notes Why It Happens: Internal paths deprecated, strict API enforced Prevention: Import only from 'react-native', not deep paths

Issue #10: Redux Store Crashes with New Architecture

Error: App crashes on Redux store creation Source: Redux Toolkit Migration Guide Why It Happens: Old redux + redux-thunk incompatible with New Architecture Prevention: Use Redux Toolkit (@reduxjs/toolkit) instead

Issue #11: i18n-js Unreliable with New Architecture

Error: Translations not updating, or app crashes Source: Community reports (GitHub issues) Why It Happens: i18n-js not fully compatible with New Architecture Prevention: Use react-i18next instead

Issue #12: CodePush Crashes on Android

Error: Android crashes looking for bundle named null Source: CodePush GitHub Issues Why It Happens: Known incompatibility with New Architecture Prevention: Avoid CodePush with New Architecture, or wait for official support


Migration Guide: 0.72-0.75 → 0.82+

Step 1: Upgrade to Interop Layer First (0.76-0.81)

Why: Can't skip directly to 0.82 if using legacy architecture - you'll lose the interop layer.

# Check current version
npx react-native --version

# Upgrade to 0.81 first (last version with interop layer)
npm install react-native@0.81
npx expo install --fix

Step 2: Enable New Architecture (if not already)

# Android (gradle.properties)
newArchEnabled=true

# iOS
RCT_NEW_ARCH_ENABLED=1 bundle exec pod install

# Rebuild
npm run ios
npm run android

Step 3: Fix Incompatible Dependencies

Common incompatibilities:

# Replace Redux with Redux Toolkit
npm uninstall redux redux-thunk
npm install @reduxjs/toolkit react-redux

# Replace i18n-js with react-i18next
npm uninstall i18n-js
npm install react-i18next i18next

# Update React Navigation (if old version)
npm install @react-navigation/native@latest

Step 4: Test Thoroughly

# Run on both platforms
npm run ios
npm run android

# Test all features:
# - Navigation
# - State management (Redux)
# - API calls
# - Deep linking
# - Push notifications

Step 5: Migrate to React 19 (if upgrading to 0.78+)

# Run React 19 codemod
npx @codemod/react-19 upgrade

# Manually verify:
# - Remove all propTypes declarations
# - Remove forwardRef wrappers
# - Update to new hooks (useActionState, useOptimistic)

Step 6: Upgrade to 0.82+

# Only after testing with New Architecture enabled!
npm install react-native@0.82
npx expo install --fix

# Rebuild
npm run ios
npm run android

Step 7: Migrate iOS to Swift (if new project)

New projects (0.77+) use Swift by default. For existing projects:

# Follow upgrade helper
# https://react-native-community.github.io/upgrade-helper/
# Select: 0.76 → 0.77

# CRITICAL: Add this line to AppDelegate.swift
RCTAppDependencyProvider.sharedInstance()

Common Patterns

Pattern 1: Conditional Rendering with New Hooks

import { useActionState } from 'react';

function LoginForm() {
  const [state, loginAction, isPending] = useActionState(
    async (prevState, formData) => {
      try {
        const user = await api.login(formData);
        return { success: true, user };
      } catch (error) {
        return { success: false, error: error.message };
      }
    },
    { success: false }
  );

  return (
    <View>
      <form action={loginAction}>
        <TextInput name="email" placeholder="Email" />
        <TextInput name="password" secureTextEntry />
        <Button disabled={isPending}>
          {isPending ? 'Logging in...' : 'Login'}
        </Button>
      </form>
      {!state.success && state.error && (
        <Text style={{ color: 'red' }}>{state.error}</Text>
      )}
    </View>
  );
}

When to use: Form submission with loading/error states

Pattern 2: TypeScript Instead of propTypes

// Define prop types with TypeScript
type ButtonProps = {
  title: string;
  onPress: () => void;
  disabled?: boolean;
  variant?: 'primary' | 'secondary';
};

function Button({ title, onPress, disabled = false, variant = 'primary' }: ButtonProps) {
  return (
    <Pressable
      onPress={onPress}
      disabled={disabled}
      style={[styles.button, styles[variant]]}
    >
      <Text style={styles.text}>{title}</Text>
    </Pressable>
  );
}

When to use: Always (propTypes removed in React 19)

Pattern 3: New CSS for Visual Effects

// Glowing button with outline and blend mode
function GlowButton({ title, onPress }) {
  return (
    <Pressable
      onPress={onPress}
      style={{
        backgroundColor: '#3b82f6',
        padding: 16,
        borderRadius: 8,
        // Outline doesn't affect layout
        outlineWidth: 2,
        outlineColor: '#60a5fa',
        outlineOffset: 4,
        // Blend with background
        mixBlendMode: 'screen',
        isolation: 'isolate'
      }}
    >
      <Text style={{ color: 'white', fontWeight: 'bold' }}>
        {title}
      </Text>
    </Pressable>
  );
}

When to use: Visual effects without affecting layout (New Architecture only)


Using Bundled Resources

Scripts (scripts/)

check-rn-version.sh - Detects React Native version and warns about architecture requirements

Example Usage:

./scripts/check-rn-version.sh
# Output: ✅ React Native 0.82 - New Architecture mandatory
# Output: ⚠️ React Native 0.75 - Upgrade to 0.76+ recommended

References (references/)

react-19-migration.md - Detailed React 19 breaking changes and migration steps

new-architecture-errors.md - Common build errors when enabling New Architecture

expo-sdk-52-breaking.md - Expo SDK 52+ specific breaking changes

When Claude should load these: When encountering migration errors, build failures, or detailed React 19 questions

Assets (assets/)

new-arch-decision-tree.md - Decision tree for choosing React Native version

css-features-cheatsheet.md - Complete examples of new CSS properties


Expo SDK 52+ Specifics

Breaking Changes

JSC Removed from Expo Go:

// This no longer works in Expo Go (SDK 52+):
{
  "jsEngine": "jsc"  // ❌ Ignored, Hermes only
}

Google Maps Removed from Expo Go (SDK 53+):

# Must use custom dev client for Google Maps
npx expo install expo-dev-client
npx expo run:android

Push Notifications Warning: Expo Go shows warnings for push notifications - use custom dev client for production testing.

New Features (SDK 52)

expo/fetch (WinterCG-compliant):

import { fetch } from 'expo/fetch';

// Standards-compliant fetch for Workers/Edge runtimes
const response = await fetch('https://api.example.com/data');

React Navigation v7:

npm install @react-navigation/native@^7.0.0

Official Documentation


Package Versions (Verified 2025-11-22)

{
  "dependencies": {
    "react": "^19.1.0",
    "react-native": "^0.82.0",
    "expo": "~52.0.0",
    "@react-navigation/native": "^7.0.0",
    "@reduxjs/toolkit": "^2.0.0",
    "react-i18next": "^15.0.0"
  },
  "devDependencies": {
    "@types/react": "^19.0.0",
    "typescript": "^5.7.0"
  }
}

Troubleshooting

Problem: Build fails with "Fabric component descriptor not found"

Solution: Library not compatible with New Architecture. Check library docs for New Architecture support, or use interop layer (0.76-0.81 only).

Problem: "propTypes is not a function" error

Solution: React 19 removed propTypes. Use TypeScript for type checking instead. Run npx @codemod/react-19 upgrade.

Problem: console.log() not showing in Metro terminal

Solution: Metro log forwarding removed in 0.77. Use React Native DevTools Console (press 'j') or npx expo start --client-logs (temporary workaround).

Problem: Swift AppDelegate errors during iOS build

Solution: Add RCTAppDependencyProvider.sharedInstance() to AppDelegate.swift. See Swift migration section.

Problem: Redux store crashes on startup

Solution: Use Redux Toolkit instead of legacy redux + redux-thunk. Install @reduxjs/toolkit.

Problem: Can't disable New Architecture in 0.82+

Solution: New Architecture is mandatory in 0.82+. If you need legacy, stay on 0.81 or earlier (not recommended).


Complete Setup Checklist

Use this checklist to verify your setup:

  • React Native 0.76+ or Expo SDK 52+ installed
  • New Architecture enabled (automatic in 0.82+)
  • Hermes engine enabled (default)
  • React 19 migration complete (no propTypes, no forwardRef)
  • TypeScript configured for type checking
  • React Native DevTools accessible (press 'j')
  • No deep imports (react-native/Libraries/*)
  • Redux Toolkit (not legacy redux)
  • react-i18next (not i18n-js)
  • iOS builds successfully (Swift template if new project)
  • Android builds successfully
  • Dev server runs without errors
  • All navigation/state management working

Questions? Issues?

  1. Check references/new-architecture-errors.md for build errors
  2. Check references/react-19-migration.md for React 19 issues
  3. Check official docs: https://reactnative.dev/docs/new-architecture-intro
  4. Ensure New Architecture is enabled (mandatory in 0.82+)
  5. Verify all dependencies support New Architecture

Knowledge Gap Filled: This skill covers React Native updates from December 2024+ that LLMs won't know about. Without this skill, Claude would suggest deprecated APIs, removed features, and outdated patterns.

平台分布

Claude Code

27.93%
按下载量换算216

Antigravity

23.63%
按下载量换算183

Gemini CLI

19.18%
按下载量换算149

OpenCode

14.83%
按下载量换算115

Cursor

8.38%
按下载量换算65

Codex

3.44%
按下载量换算27

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

执行命令

安装流程涉及命令执行,可能通过 npx skills add https://github.com/ovachiever/droid-tings --skill react-native-expo;npx skills add ovachiever/droid-tings --skill "react-native-expo" 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

继续浏览同类 Skills