Back to blog
Announcement 2026-05-17 4 min read

Introducing glyde — HTTP requests that glyde

Today we are releasing glyde — a lightweight, TypeScript-first HTTP client built on native fetch with zero runtime dependencies.

Why another HTTP client?

In March 2026, axios suffered a supply chain attack by a North Korean state actor (Sapphire Sleet). This affected millions of projects overnight. The root cause? Transitive dependencies that no one audits.

We wanted an HTTP client that is:

  • Zero dependencies — nothing to compromise
  • TypeScript-first — not types bolted onto JavaScript
  • Tiny — 1.73 KB gzipped, 97% smaller than axios
  • Modern — built on native fetch, not legacy XHR
  • Practical — interceptors, typed errors, streaming

Quick start

import plane from "glyde"

const api = plane({
  baseURL: "https://api.example.com",
  timeout: 5000,
})

// Typed GET
const { data } = await api.get<User[]>("/users")

// POST with body
await api.post("/users", { name: "Yash", role: "admin" })

// Interceptors for auth
api.interceptors.request.use((config) => ({
  ...config,
  headers: { ...config.headers, Authorization: `Bearer ${token}` },
}))

// Typed error handling
import { isHttpError } from "glyde"

try {
  await api.get("/protected")
} catch (err) {
  if (isHttpError(err)) {
    console.log(err.status, err.response?.data)
  }
}

What makes glyde different

Typed error hierarchy

Instead of catching generic errors and checking status codes, glyde throws specific error types with TypeScript type guards. isHttpError(err) narrows the type and gives you access to err.status, err.response, and err.config.

Async interceptors

Unlike most libraries that only support synchronous transforms, glyde interceptors are fully async. Refresh a token, fetch config from an API, log to an external service — all before the request fires.

Universal runtime

glyde works anywhere fetch exists: browsers, Node.js 18+, Bun, Deno, Cloudflare Workers, Vercel Edge Functions. One library, every environment.

What's next

glyde v0.1.0 is available on npm today. Install it with npm install glyde and start making requests. We are actively working on retry plugins, request deduplication, and more interceptor examples.