react-native-best-practices
npx skills add https://github.com/kunhai-88/skills --skill react-native-best-practices
Agent 安装分布
Skill 文档
React Native æä½³å®è·µ
React Native åºç¨æ§è½ä¼åæåï¼æ¶µç JavaScript/Reactãåçï¼iOS/Androidï¼ä¸æå ä¼åãåºäº Callstack çãReact Native ä¼åç»ææåãã
æè½æ ¼å¼
æ¯ä¸ªåèæä»¶éµå¾ªæ··åæ ¼å¼ï¼ç¨äºå¿«éæ¥æ¾ä¸æ·±åº¦çè§£ï¼
- å¿«éæ¨¡å¼ï¼é误/æ£ç¡®ä»£ç çæ®µç¨äºå³æ¶æ¨¡å¼å¹é
- å¿«éå½ä»¤ï¼Shell å½ä»¤ç¨äºæµç¨/度éæè½
- å¿«éé ç½®ï¼é ç½®çæ®µç¨äºè®¾ç½®èç¦æè½
- å¿«éåèï¼æè¦è¡¨ç¨äºæ¦å¿µæè½
- 深度æ¢ç´¢ï¼å®æ´ä¸ä¸æï¼å å«ä½æ¶ä½¿ç¨ãå 峿¡ä»¶ã鿥ã常è§é·é±
å½±åè¯çº§ï¼CRITICALï¼ç«å³ä¿®å¤ï¼ãHIGHï¼æ¾èæ¹è¿ï¼ãMEDIUMï¼å¼å¾ä¼åï¼
使¶åºç¨
å¨ä»¥ä¸åºæ¯åèè¿äºæåï¼
- è°è¯æ ¢/å¡é¡¿ UI æå¨ç»
- è°æ¥å åæ³æ¼ï¼JS æåçï¼
- ä¼ååºç¨å¯å¨æ¶é´ï¼TTIï¼
- åå°æå æåºç¨å¤§å°
- ç¼ååçæ¨¡åï¼Turbo Modulesï¼
- åæ React Native æ§è½
- å®¡æ¥ React Native ä»£ç æ§è½
ä¼å 级æåºæå
| ä¼å 级 | ç±»å« | å½±å | åç¼ |
|---|---|---|---|
| 1 | FPS ä¸é渲æ | å ³é® | js-* |
| 2 | æå ä½ç§¯ | å ³é® | bundle-* |
| 3 | TTI ä¼å | é« | native-*, bundle-* |
| 4 | åçæ§è½ | é« | native-* |
| 5 | å å管ç | ä¸é« | js-*, native-* |
| 6 | å¨ç» | ä¸ | js-* |
鿥
å ³é®ï¼FPS ä¸é渲æ
å åæï¼
# æå¼ React Native DevTools
# å¨ Metro 䏿 'j'ï¼ææå¨è®¾å¤ â "Open DevTools"
常è§ä¿®å¤ï¼
- ç¨ FlatList/FlashList æ¿æ¢ ScrollView ç¨äºå表
- ä½¿ç¨ React Compiler è¿è¡èªå¨ memoization
- 使ç¨ååç¶æï¼Jotai/Zustandï¼åå°é渲æ
- 对æè´µè®¡ç®ä½¿ç¨
useDeferredValue
å ³é®ï¼æå ä½ç§¯
åææå ï¼
npx react-native bundle \
--entry-file index.js \
--bundle-output output.js \
--platform ios \
--sourcemap-output output.js.map \
--dev false --minify true
npx source-map-explorer output.js --no-border-checks
常è§ä¿®å¤ï¼
- é¿å barrel å¯¼å ¥ï¼ä»æºç´æ¥å¯¼å ¥ï¼
- ç§»é¤ä¸å¿ è¦ç Intl polyfillsï¼Hermes æåçæ¯æï¼
- å¯ç¨ tree shakingï¼Expo SDK 52+ æ Re.Packï¼
- 为 Android åç代ç å¯ç¨ R8
é«ï¼TTI ä¼å
度é TTIï¼
- 使ç¨
react-native-performanceç¨äºæ è®° - ä» åº¦éå·å¯å¨ï¼æé¤ç/é¢çï¼
常è§ä¿®å¤ï¼
- å¨ Android ä¸ç¦ç¨ JS æå å缩ï¼å¯ç¨ Hermes mmapï¼
- 使ç¨åç导èªï¼react-native-screensï¼
- ç¨
InteractionManagerå»¶è¿éå ³é®å·¥ä½
é«ï¼åçæ§è½
åæåçï¼
- iOSï¼Xcode Instruments â Time Profiler
- Androidï¼Android Studio â CPU Profiler
常è§ä¿®å¤ï¼
- 对éååçå·¥ä½ä½¿ç¨åå°çº¿ç¨
- ä¼å 弿¥èé忥 Turbo Module æ¹æ³
- å¯¹è·¨å¹³å°æ§è½å ³é®ä»£ç ä½¿ç¨ C++
åè
宿´ææ¡£ä¸ä»£ç 示ä¾å¨ references/ï¼
JavaScript/React (js-*)ï¼js-lists-flatlist-flashlistï¼CRITICALï¼ç¨èæååè¡¨æ¿æ¢ ScrollViewï¼ãjs-profile-reactãjs-measure-fpsãjs-memory-leaksãjs-atomic-stateãjs-concurrent-reactãjs-react-compilerãjs-animations-reanimatedãjs-uncontrolled-componentsã
åç (native-*)ï¼native-turbo-modulesãnative-sdks-over-polyfillsãnative-measure-ttiãnative-threading-modelãnative-profilingãnative-platform-setupãnative-view-flatteningãnative-memory-patternsãnative-memory-leaksãnative-android-16kb-alignmentï¼CRITICALï¼ç¬¬ä¸æ¹åºå¯¹é½ç¨äº Google Playï¼ã
æå
(bundle-*)ï¼bundle-barrel-exportsï¼CRITICALï¼é¿å
barrel 导å
¥ï¼ãbundle-analyze-jsï¼CRITICALï¼JS æå
å¯è§åï¼ãbundle-tree-shakingãbundle-analyze-appãbundle-r8-androidãbundle-hermes-mmapãbundle-native-assetsãbundle-library-sizeãbundle-code-splittingã
é®é¢ â æè½æ å°
| é®é¢ | ä»…å¼å§ |
|---|---|
| åºç¨æè§æ ¢/å¡é¡¿ | js-measure-fps.md â js-profile-react.md |
| 太å¤é渲æ | js-profile-react.md â js-react-compiler.md |
| æ ¢å¯å¨ï¼TTIï¼ | native-measure-tti.md â bundle-analyze-js.md |
| åºç¨ä½ç§¯å¤§ | bundle-analyze-app.md â bundle-r8-android.md |
| å åå¢é¿ | js-memory-leaks.md æ native-memory-leaks.md |
| å¨ç»æå¸§ | js-animations-reanimated.md |
| å表æ»å¨å¡é¡¿ | js-lists-flatlist-flashlist.md |
| TextInput å»¶è¿ | js-uncontrolled-components.md |
| åçæ¨¡åæ ¢ | native-turbo-modules.md â native-threading-model.md |
| åçåºå¯¹é½é®é¢ | native-android-16kb-alignment.md |
å½å
åºäº Callstack çãReact Native ä¼åç»ææåãã