| ▲ | TranquilMarmot 2 hours ago | |
I usually reach for ky these days since it's an extremely lightweight wrapper over `fetch` - basically just adds a few niceties https://github.com/sindresorhus/ky From the readme: - Simpler API - Method shortcuts (ky.post()) - Treats non-2xx status codes as errors (after redirects) - Retries failed requests - JSON option - Timeout support - Upload and download progress - Base URL option - Instances with custom defaults - Hooks - Response validation with Standard Schema (Zod, Valibot, etc.) - TypeScript niceties (e.g., .json() supports generics and defaults to unknown, not any) Of course, this is only for projects where I have to make a lot of HTTP requests to a lot of different places where these niceties make sense. In most cases, we're usually using a library generated from an OpenAPI specification and fall back to `fetch` only as an escape hatch. | ||