Skip to content

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' } })

Released under the MIT License. (ffa30c16)