Fetch-based HTTP clients (shared)
This page contains the common, recommended alternatives and examples for fetch based HTTP clients used by axios, node-fetch, and cross-fetch replacement docs.
fetch API (native)
The native fetch API is available in Node.js (since v18.x) and all modern browsers. For many use cases it replaces axios/node-fetch/cross-fetch without adding dependencies.
Example:
ts
// GET
const res = await fetch('https://api.example.com/data')
const data = await res.json()
// POST
await fetch('https://api.example.com/data', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ key: 'value' })
})ky
ky is a lightweight HTTP client built on top of the Fetch API. It adds convenience features like timeouts, hooks (interceptors), and a simpler API surface.
Example:
ts
import ky from 'ky'
const api = ky.create({
prefixUrl: 'https://api.example.com',
timeout: 5000 // ms
})
const data = await api.get('users').json()ofetch
ofetch is a small fetch wrapper with automatic JSON parsing, request/response interceptors, and retry support.
Example:
ts
import { ofetch } from 'ofetch'
const api = ofetch.create({ baseURL: 'https://api.example.com' })
const data = await api('/user', { query: { id: 123 } })
const created = await api('/items', { method: 'POST', body: { name: 'A' } })