OSS探訪GitHubでログイン

Fetch APIを薄く拡張し、retry・timeout・hook・JSON処理を短いAPIで扱う

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
17,104
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/09/16
ページ内ナビ

概要

Kyは標準Fetch APIを土台にした小さなHTTP clientです。method shortcut、non-2xxのerror化、JSON送受信、retry、timeout、base URL、hook、progress、Standard Schemaによるresponse validationなどを追加し、browser・Node.js・Bun・Denoで利用できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

fetch互換の入力にmethod shortcutとbody helperを加える

ky.getやky.postなどのshortcutを使え、.json()、.text()、.blob()などresponse bodyの取得も短く書けます。JSON requestはjson optionで送信でき、non-2xx responseはHTTPErrorとして扱われます。

出典:[1]

retry・timeout・baseUrl・hookをclient設定としてまとめる

retry policy、per-attempt timeout、total timeout、baseUrl、request/response lifecycle hookをoptionとして持てます。extendを使って共通defaultを持つclient instanceを作り、認証headerやerror handlingを集約できます。

出典:[1]

TypeScript genericとStandard SchemaでJSON responseを型付け・検証する

.json<T>()はTypeScript genericを受け取り、型を指定しない場合はunknownになります。Standard Schema互換validatorを渡すとruntime validationも行え、失敗時はSchemaValidationErrorとして扱えます。

出典:[1]

向いている用途

plain fetchの互換性を保ちながらfrontendのHTTP処理を標準化したい場合に向く

fetchのrequest/response modelを維持しつつ、error handling、retry、JSON、認証hookなどの定型処理を共通化したいfrontendやisomorphic JavaScript applicationに適します。

出典:[1]

導入前の確認

2.1.0はNode.js 22以上を要求する

package metadataのengines.nodeは>=22です。browser、Bun、Denoも対象ですが、Node.js backendやSSRで利用する場合はruntime versionを先に確認してください。

出典:[2]

retry対象methodとdelayをAPIの性質に合わせて調整する

Kyはretryを標準提供し、2.1.0ではretry handlingも強化されています。既定のretry methodにはGETだけでなくPUTやDELETE等も含まれるため、side effectのあるendpointではlimitや対象statusを明示する必要があります。

出典:[1][3]

参考にした公式資料

  1. [1]Ky v2.1.0 README(2026-10-05)
  2. [2]Ky v2.1.0 package metadata(2026-10-05)
  3. [3]Ky v2.1.0 release(2026-10-05)
  4. [4]Ky MIT license(2026-10-05)
編集部からの補足

Ky 2.1.0はNode.js 22以上を要求します。retryは便利ですが、PUTやDELETEなども既定のretry methodに含まれるため、対象APIのidempotencyを確認し、再実行させたくないrequestはretry: {limit: 0}などで明示してください。

3ステップで試す

  1. 1

    Node.js 22以上を確認してKy 2.1.0を導入する

    package metadataのengine要件を確認してからreview対象versionを一時projectへ導入します。

    node -e "if (Number(process.versions.node.split('.')[0]) < 22) { console.error('Ky 2.1.0 requires Node.js >=22'); process.exit(1); }" && demo=$(mktemp -d "${TMPDIR:-/tmp}/ky.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact ky@2.1.0
  2. 2

    local HTTP serverへKyでrequestする確認scriptを作る

    外部serviceを使わず、fetchベースのrequestとJSON body shortcutをlocal serverで確認します。retryは検証を単純化するため無効にします。

    printf "%s\n" "import {createServer} from 'node:http';" "import ky from 'ky';" "const server = createServer((request, response) => { response.setHeader('content-type', 'application/json'); response.end(JSON.stringify({ok: true})); });" "server.listen(0, '127.0.0.1', async () => {" " const address = server.address();" " try {" " const data = await ky.get('http://127.0.0.1:' + address.port + '/', {retry: {limit: 0}}).json();" " if (data.ok !== true) process.exitCode = 1;" " console.log(data);" " } finally { server.close(); }" "});" > demo.mjs
  3. 3

    Node.jsでrequestを実行する

    Kyがresponseを取得し、.json()でbodyを解析して返すことを確認します。

    node demo.mjs
公式READMEで確認

成長

成長の推移 · 直近30日

17,104 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
48
Open PR
0

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • fetch
  • whatwg-fetch
  • http-client
  • http-request
  • request
  • npm-package
  • tiny
  • json
  • rest
  • js
  • javascript
Stars
17,104
Forks
499
Watchers
64
Open Issues
2
Contributors
120
所有者種別
User
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/09/16

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?