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.

Native fetch API

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. (c7493cbd)