mcpField
N
nitro-fetch

nitro-fetch

github.com/margelo開発178618 回インストール10 週間前に更新
リポジトリ

nitro-fetch について

react-native-nitro-fetch 系パッケージを使う AI コーディングエージェント向けのリファレンススキルです。ネイティブ fetch、WebSocket、テキストデコード、先行取得、検査に関する資料へ案内します。

主な機能

  1. 01関連資料への質問の振り分け
  2. 02ネイティブ対応 fetch の解説
  3. 03NitroWebSocket の使用方法
  4. 04リクエスト先行取得の説明
  5. 05ネットワーク検査とプロファイリング

活用シーン

  1. 01画面表示前のリクエスト準備
  2. 02axios アダプターの設定
  3. 03NitroWebSocket への移行
  4. 04リクエスト検査や遅延分析

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/margelo/react-native-skills --skill nitro-fetch

インストール後、Claude Code で/nitro-fetchを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
axios-adapter.md
migrate-from-rn-ws.md
network-inspector.md
perfetto-profiling.md
prefetching.md
text-decoder.md
using-websockets.md
websocket-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 つの要素があり、ほとんどの質問はそのいずれかに関するものです。

  1. 事前フェッチ。 ネイティブコードは React Native の読み込み前に実行できます。prefetchOnAppStart(...) と prewarmOnAppStart(...) は、保存済みのリクエストやソケット接続をコールドスタートのたびに再実行するため、JS が動き始める頃にはレスポンスがキャッシュ済み、またはソケットがすでに OPEN になっています。
  2. ネイティブクライアントのインポート。 デフォルトの方法は明示的なインポートです。import { fetch } from 'react-native-nitro-fetch'、import { NitroWebSocket } from 'react-native-nitro-websockets'、またはカスタムアダプターを使った axios との連携が可能です。別の方法として、エントリーファイルの先頭でグローバル置換(globalThis.fetch = fetch など)を行うこともできます。設定方法とトレードオフについては、グローバル置換のドキュメントを参照してください。
  3. 動作状況の把握。 NetworkInspector は JS 境界で HTTP と WS のアクティビティを記録します。ネイティブの Perfetto / Instruments トレースでは、その下のすべて(DNS、TLS、TTFB、ボディ)を確認できます。前者は正確性、後者はレイテンシの確認に使います。

ルーティング表 — 問題と参照先

コードを書く前に、該当する references/ ファイルを読み込んでください。各リファレンスには、このリポジトリ内の実在するファイルパスが記載されています。

ユーザーからの質問…参照先
画面のマウント前にキャッシュを温める方法、コールドスタート時の GET を瞬時に感じさせる方法、prefetch、prefetchOnAppStart、prefetchKeyreferences/prefetching.md
nitro-fetch を使って axios のリクエストをルーティングする方法(カスタムアダプターの全体 — baseURL、params、timeout、signal、responseType、validateStatus)references/axios-adapter.md
UTF-8 デコード、低速な TextDecoder、Hermes ポリフィル、ストリーミングデコード、NitroTextDecoderreferences/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 レベルでリクエストとレスポンスを確認する方法、どのライブラリが呼び出しを行ったかをデバッグする方法、NetworkInspectorreferences/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

コメント