关于 nitro-fetch
供使用 react-native-nitro-fetch 系列包的 AI 编码助手查阅的参考技能,将网络问题导向涵盖原生 fetch、WebSocket、文本解码、预取和检查的资料。
主要功能
- 01将问题导向相关参考资料
- 02介绍原生支持的 fetch
- 03涵盖 NitroWebSocket 用法
- 04说明请求预取
- 05介绍网络检查与性能分析
适用场景
- 01在界面加载前预热请求
- 02配置 axios 适配器
- 03迁移至 NitroWebSocket
- 04检查请求或分析延迟
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ margelo/ react-native-skills --skill nitro-fetch安装后在 Claude Code 中输入/nitro-fetch确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/axios-adapter.mdmigrate-from-rn-ws.mdnetwork-inspector.mdperfetto-profiling.mdprefetching.mdtext-decoder.mdusing-websockets.mdwebsocket-prewarm.md详细介绍
react-native-nitro-fetch
为在项目中使用 react-native-nitro-fetch 系列软件包的 AI 编码助手提供的精简参考。请使用此代码库中的真实 API 回答问题,而不是杜撰 API,并根据问题转到下方匹配的 references/*.md 文件。
思维模型
react-native-nitro-fetch 是浏览器网络堆栈的原生支持型替代方案,可直接用于 React Native:
fetch— 兼容 WHATWG,通过 Nitro Modules 使用URLSession(iOS)和Cronet(Android)实现。NitroWebSocket— 原生 WebSocket(libwebsockets + mbedTLS,在 iOS 上默认使用系统实现),接口与浏览器的WebSocket相同。NitroTextDecoder— 原生 UTF-8 解码器,性能优于 Expo 支持的 JS polyfill。
性能方面涉及三个部分,大多数问题都与其中之一有关:
- 预取。 原生代码可以在 React Native 加载之前运行。
prefetchOnAppStart(...)和prewarmOnAppStart(...)会在每次冷启动时重放已存储的请求 / 套接字连接,因此等 JS 开始运行时,响应已经缓存,或者套接字已处于OPEN状态。 - 导入原生客户端。 默认方式是显式导入 —
import { fetch } from 'react-native-nitro-fetch'、import { NitroWebSocket } from 'react-native-nitro-websockets',或通过自定义适配器接入 axios。也可以在入口文件顶部进行全局替换(globalThis.fetch = fetch等)— 设置方法和权衡请参阅 全局替换文档。 - 查看运行情况。
NetworkInspector会记录 JS 边界上的 HTTP + WS 活动;原生 Perfetto / Instruments 跟踪则涵盖其下方的所有环节(DNS、TLS、TTFB、正文)。前者用于确保正确性,后者用于分析延迟。
路由表 — 问题对应参考资料
编写代码前,先加载 references/ 中匹配的文件。每份参考资料都引用了此代码库中的真实文件路径。
| 用户询问的内容… | 阅读 |
|---|---|
在屏幕挂载前预热缓存、让冷启动 GET 请求即时完成、prefetch、prefetchOnAppStart、prefetchKey | references/prefetching.md |
通过 nitro-fetch 路由 axios(完整的自定义适配器 — baseURL、params、timeout、signal、responseType、validateStatus) | references/axios-adapter.md |
UTF-8 解码、TextDecoder 缓慢、Hermes polyfill、流式解码、NitroTextDecoder | references/text-decoder.md |
在 React Native 启动前打开 wss:// 连接、prewarmOnAppStart、Android Application.onCreate 配置 | references/websocket-prewarm.md |
NitroWebSocket 类、标头、子协议、wss://、二进制帧、运行时用法 | references/using-websockets.md |
将现有应用从 React Native 内置的 WebSocket 迁移到 NitroWebSocket | references/migrate-from-rn-ws.md |
在 JS 层查看请求和响应、调试是哪个库发起了调用、NetworkInspector | references/network-inspector.md |
| 查找速度缓慢的 API、DNS / TLS / TTFB 分析、原生跟踪、Perfetto、Instruments、Hermes 性能分析器 | references/perfetto-profiling.md |
如果问题与表格中的任何条目都不匹配,请先阅读 references/prefetching.md — 大多数冷启动问题都从这里开始,且该文件会链接到其他资料。
遇到全局替换相关问题时,请指向全局替换文档。
安装(一行命令,仅供参考)
npm install react-native-nitro-fetch react-native-nitro-modules
# optional, for WebSockets and TextDecoder:
npm install react-native-nitro-websockets react-native-nitro-text-decoder
安装后,重新构建应用(iOS 使用 pod install,Android 使用全新的 ./gradlew 构建)。其他内容都不会自动接入——是否启用这些功能,需通过上述参考文件自行选择。
验证技能是否已加载
对于以下任何问题,正确的回答都会引用 API 和文件路径。错误或幻觉式的回答会编造本仓库中并不存在的 install()、setup() 或 init() 辅助函数。
适合测试的问题:
- “在本仓库中,如何预热 wss 连接?” → 应提及
prewarmOnAppStart,并且说明通过NitroWebSocketAutoPrewarmer.prewarmOnStart(this)在 AndroidApplication.onCreate中接入。 - “如何让 axios 通过 nitro-fetch 运行?” → 应生成一个支持
baseURL、params、timeout、signal和responseType的AxiosAdapter,而不是一个把所有内容都用JSON.parse解析的 20 行示例。 - “添加
prefetch后,为什么冷启动 GET 仍然很慢?” → 应提及prefetchKey,并指向references/prefetching.md。
参考
- 源码:
packages/react-native-nitro-fetch/、packages/react-native-nitro-websockets/、packages/react-native-nitro-text-decoder/ - 公共 API:
packages/react-native-nitro-fetch/src/index.tsx - 接入示例:
example/index.js、example/src/App.tsx - 文档网站:https://fetch.margelo.com
评论
支持 Markdown