nitro-fetch について
react-native-nitro-fetch 系パッケージを使う AI コーディングエージェント向けのリファレンススキルです。ネイティブ fetch、WebSocket、テキストデコード、先行取得、検査に関する資料へ案内します。
主な機能
- 01関連資料への質問の振り分け
- 02ネイティブ対応 fetch の解説
- 03NitroWebSocket の使用方法
- 04リクエスト先行取得の説明
- 05ネットワーク検査とプロファイリング
活用シーン
- 01画面表示前のリクエスト準備
- 02axios アダプターの設定
- 03NitroWebSocket への移行
- 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— Nitro Modules を介して、iOS ではURLSession、Android ではCronetを使用する WHATWG 互換の実装です。NitroWebSocket— ブラウザーのWebSocketと同じ形状を持つネイティブ WebSocket です(libwebsockets + mbedTLS を使用し、iOS ではデフォルトで有効です)。NitroTextDecoder— Expo の JS ポリフィルより高速な、ネイティブの UTF-8 デコーダーです。
パフォーマンスには 3 つの要素があり、ほとんどの質問はそのいずれかに関するものです。
- 事前フェッチ。 ネイティブコードは 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 ポリフィル、ストリーミングデコード、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)を使った Android のApplication.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