DEV Community

Cover image for 10 npm Packages You'll Actually Use in 2026
Tommaso Bertocchi
Tommaso Bertocchi

Posted on

10 npm Packages You'll Actually Use in 2026

Every "must-know npm packages" list links to abandoned repos or tools you already know.
These 10 are actively maintained, TypeScript-native, and earn their spot in production code — not because they went viral.

TL;DR: These 10 npm packages cut real complexity in production Node.js apps — no hype, no toy demos.

Table of Contents

  1. zod — runtime validation your TypeScript types can't provide
  2. tsx — run TypeScript instantly without a build step
  3. hono — the web framework fast enough for edge
  4. drizzle-orm — SQL-first ORM that doesn't fight TypeScript
  5. superjson — serialize what JSON.stringify silently mangles
  6. effect — structured concurrency for complex async systems
  7. pino — the logger that won't become your bottleneck
  8. pompelmi — file upload scanning with zero cloud dependencies
  9. got — the HTTP client Node.js deserved from the start
  10. p-queue — concurrency control for async operations

1) zod — runtime validation your TypeScript types can't provide

What it is: A TypeScript-first schema library that validates data at runtime, not just at compile time.

Why it matters in 2026: TypeScript types disappear at runtime. Zod gives you the same guarantees at the API boundary — incoming requests, form submissions, environment variables. It's become the standard because the API is clean and it composes well with frameworks like tRPC.

Best for: API request validation, form parsing, environment variable schemas

GitHub logo colinhacks / zod

TypeScript-first schema validation with static type inference

Zod logo

Zod

TypeScript-first schema validation with static type inference
by @colinhacks


Zod CI status License npm discord server stars

Docs   •   Discord   •   𝕏   •   Bluesky

Featured sponsor: Jazz

jazz logo

Learn more about featured sponsorships

What is Zod?

Zod is a TypeScript-first validation library. Define a schema and parse some data with it. You'll get back a strongly typed, validated result.

import * as z from "zod";

const User = z.object({
  name: z.string(),
});

// some untrusted data...
const input = {
  /* stuff */
};

// the parsed result is validated and type safe!
const data = User.parse(input);

// so you can use it with confidence :)
console.log(data.name);
Enter fullscreen mode Exit fullscreen mode

Features

  • Zero external dependencies
  • Works in Node.js and all modern browsers
  • Tiny: 2kb core bundle (gzipped)
  • Immutable API: methods…

2) tsx — run TypeScript without the setup tax

What it is: A zero-config TypeScript runner using esbuild that executes .ts files directly with npx tsx script.ts.

Why it matters in 2026: Setting up ts-node and waiting for tsc just to run a script kills momentum. tsx eliminates all of that — faster than ts-node, no build step for scripts or migrations.

Best for: Scripts, one-off migrations, CLI tools, prototypes

Links: tsx preview

GitHub logo privatenumber / tsx

⚡️ TypeScript Execute | The easiest way to run TypeScript in Node.js


3) hono — the web framework built for the edge

What it is: A small, fast, multi-runtime framework running on Cloudflare Workers, Deno, Bun, and Node.js with the same API.

Why it matters in 2026: Express was built for a different era. Hono is designed for edge deployments and V8 isolates — and it significantly outperforms Express on Node.js too. First-class TypeScript support is built in, not bolted on.

Best for: Edge functions, Cloudflare Workers, REST APIs, multi-runtime services

Links: hono preview | Website

GitHub logo honojs / hono

Web framework built on Web Standards


GitHub Workflow Status GitHub npm npm JSR Bundle Size Bundle Size GitHub commit activity GitHub last commit codecov Discord badge Ask DeepWiki

Hono - means flame🔥 in Japanese - is a small, simple, and ultrafast web framework built on Web Standards. It works on any JavaScript runtime: Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, AWS Lambda, Lambda@Edge, and Node.js.

Fast, but not only fast.

import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hono!'))

export default app
Enter fullscreen mode Exit fullscreen mode

Quick Start

npm create hono@latest
Enter fullscreen mode Exit fullscreen mode

Features

  • Ultrafast 🚀 - The router RegExpRouter is really fast. Not using linear loops. Fast.
  • Lightweight 🪶 - The hono/tiny preset is under 12kB. Hono has zero dependencies and uses only the Web Standard API.
  • Multi-runtime 🌍 - Works on Cloudflare Workers, Fastly Compute, Deno, Bun, AWS Lambda, Lambda@Edge, or Node.js. The same code runs on all platforms.
  • Batteries Included 🔋 - Hono has built-in middleware, custom middleware, and third-party…

developer realizing their framework runs everywhere

When your web framework runs on Node.js, Bun, Deno, and the edge. Source: Giphy


4) drizzle-orm — the ORM that doesn't hide SQL from you

What it is: A TypeScript ORM with a SQL-like query API that generates type-safe queries without abstracting the database.

Why it matters in 2026: ORMs that hide SQL work until queries get complex. Drizzle stays close to SQL, generates types from your schema, and runs cleanly in serverless environments where Prisma's connection model struggles.

Best for: PostgreSQL, MySQL, SQLite, apps with complex queries, serverless environments

Links: drizzle-orm preview | Website


Headless ORM for NodeJS, TypeScript and JavaScript 🚀

WebsiteDocumentationTwitterDiscord


What's Drizzle?

Drizzle is a modern TypeScript ORM developers wanna use in their next project It is lightweight at only ~7.4kb minified+gzipped, and it's tree shakeable with exactly 0 dependencies.

Drizzle supports every PostgreSQL, MySQL and SQLite database, including serverless ones like Turso, Neon, Xata, PlanetScale, Cloudflare D1, FlyIO LiteFS, Vercel Postgres, Supabase and AWS Data API. No bells and whistles, no Rust binaries, no serverless adapters, everything just works out of the box.

Drizzle is serverless-ready by design. It works in every major JavaScript runtime like NodeJS, Bun, Deno, Cloudflare Workers, Supabase functions, any Edge runtime, and even in browsers.
With Drizzle you can be fast out of the box and save time and costs while never introducing any data proxies into your…


5) superjson — serialize what JSON.stringify silently mangles

What it is: A drop-in JSON replacement that handles Date, Map, Set, BigInt, and undefined without silent type coercion.

Why it matters in 2026: Every full-stack app gets burned by JSON.stringify turning Date objects into strings or dropping undefined silently. Superjson extends JSON with type metadata — predictable serialization across every server/client boundary.

Best for: tRPC, Next.js, full-stack apps with complex data types

Links: superjson preview

GitHub logo flightcontrolhq / superjson

Safely serialize JavaScript expressions to a superset of JSON, which includes Dates, BigInts, and more.

superjson

Safely serialize JavaScript expressions to a superset of JSON, which includes Dates, BigInts, and more

All Contributors npm Language grade: JavaScript CI

Key features

  • 🍱 Reliable serialization and deserialization
  • 🔐 Type safety with autocompletion
  • 🐾 Negligible runtime footprint
  • 💫 Framework agnostic
  • 🛠 Perfect fix for Next.js's serialisation limitations in getServerSideProps and getInitialProps

Backstory

At Blitz, we have struggled with the limitations of JSON. We often find ourselves working with Date, Map, Set or BigInt, but JSON.stringify doesn't support any of them without going through the hassle of converting manually!

Superjson solves these issues by providing a thin wrapper over JSON.stringify and JSON.parse.

Sponsors

Flightcontrol Logo

Superjson logo by NUMI:

NUMI Logo

Getting started

Install the library with your package manager of choice, e.g.:

yarn add superjson

Basic Usage

The easiest way to use Superjson is with its stringify and parse functions. If you know how to use JSON.stringify, you already know Superjson!

Easily stringify…





6) effect — structured concurrency for when async/await breaks down

What it is: A TypeScript library for reliable applications using typed effects, structured concurrency, and composable error handling.

Why it matters in 2026: Retries, timeouts, cancellation, and dependency injection all become ad hoc bolted-on solutions with async/await. Effect provides a principled model for these problems. The learning curve is real and the payoff matches it.

Best for: Complex backend services, data pipelines, apps with sophisticated retry/timeout/cancellation needs

Links: effect preview | Website

GitHub logo Effect-TS / effect

Build production-ready applications in TypeScript

npm version

Effect Monorepo

An ecosystem of tools to build robust applications in TypeScript

Introduction

Welcome to Effect, a powerful TypeScript framework that provides a fully-fledged functional effect system with a rich standard library.

Effect consists of several packages that work together to help build robust TypeScript applications. The core package, effect, serves as the foundation of the framework, offering primitives for managing side effects, ensuring type safety, and supporting concurrency.

Monorepo Structure

The Effect monorepo is organized into multiple packages, each extending the core functionality. Below is an overview of the packages included:

Package Description
effect Core package README
@effect/ai AI utilities README
@effect/ai-openai OpenAI utilities README
@effect/ai-anthropic Anthropic utilities README
@effect/ai-amazon-bedrock Effect modules for working with Amazon Bedrock AI apis README
@effect/ai-google Effect modules for working with Google AI apis README
@effect/cli CLI utilities README
@effect/cluster Distributed computing tools README
@effect/experimental Experimental features and APIs README
@effect/opentelemetry OpenTelemetry integration

7) pino — the logger that won't slow your server down

What it is: An extremely fast, JSON-native Node.js logger that uses worker threads for async serialization.

Why it matters in 2026: Synchronous logging blocks the event loop — at high request rates it becomes a measurable bottleneck. Pino moves serialization off the main thread, giving you structured JSON output compatible with Loki/Datadog/CloudWatch at negligible latency cost.

Best for: Production Node.js services, high-traffic APIs, apps sending logs to aggregation systems

Links: pino preview | Website

GitHub logo pinojs / pino

🌲 super fast, all natural json logger

banner

pino

npm version Build Status js-standard-style

Very low overhead JavaScript logger.

Documentation

Runtimes

Node.js

Pino is built to run on Node.js.

Bare

Pino works on Bare with the pino-bare compatability module.

Pear

Pino works on Pear, which is built on Bare, with the pino-bare compatibility module.

Install

Using NPM:

$ npm install pino

Using YARN:

$ yarn add pino

If you would like to install pino v6, refer to https://github.com/pinojs/pino/tree/v6.x.

Usage

const logger = require('pino')()

logger.info('hello world')

const child = logger.child({ a: 'property' })
child.info('hello child!')
Enter fullscreen mode Exit fullscreen mode

This produces:

{"level":30,"time":1531171074631,"msg":"hello world","pid":657,"hostname":"Davids-MBP-3.fritz.box"}
{"level":30,"time":1531171082399,"msg":"hello child!","pid":657,"hostname":"Davids-MBP-3.fritz.box","a":"property"}

For using Pino with…

developer watching logs in production

Watching your synchronous logger block the event loop at 10k req/s. Source: Giphy


8) pompelmi — file upload scanning that stays on your server

What it is: A minimal Node.js wrapper around ClamAV that scans any uploaded file and returns a typed verdict — Clean, Malicious, or ScanError. Zero runtime dependencies, no cloud, no daemon required.

Why it matters in 2026: File uploads are one of the most consistently overlooked attack surfaces in web applications. Most teams skip scanning or bolt on an expensive third-party API. pompelmi solves this locally — no data leaving your server, no subscription fee.

Best for: Express, Fastify, NestJS, Next.js, SvelteKit, any Node.js app that accepts user file uploads

Links: pompelmi preview | Website

GitHub logo pompelmi / pompelmi

Minimal Node.js wrapper around ClamAV — scan any file and get Clean, Malicious, or ScanError. Handles installation and database updates automatically.

pompelmi logo

pompelmi

ClamAV for humans

npm version license platform zero dependencies


A minimal Node.js wrapper around ClamAV that scans any file and returns a typed Verdict Symbol: Verdict.Clean, Verdict.Malicious, or Verdict.ScanError. No daemons. No cloud. No native bindings. Zero runtime dependencies.

Table of contents



Quickstart

npm install pompelmi
Enter fullscreen mode Exit fullscreen mode
const { scan, Verdict } = require('pompelmi');

const result = await scan('/path/to/file.zip');

if (result === Verdict.Malicious) {
  throw new Error('File rejected: malware detected');
}
Enter fullscreen mode Exit fullscreen mode

How it works

  1. Validate — pompelmi checks that the argument is a string and that the file exists before spawning anything.
  2. Scan — pompelmi spawns clamscan --no-summary <filePath> as a child process and reads the exit code.
  3. Map — the exit…





9) got — the HTTP client Node.js always needed

What it is: A feature-rich HTTP client for Node.js with hooks, retries, pagination, and streams built in.

Why it matters in 2026: Built-in fetch is fine for simple requests. Got is for production HTTP — configurable retries, timeout handling, automatic JSON parsing, caching plugins. It handles the edge cases that matter under real outbound traffic loads.

Best for: API clients, web scrapers, microservice communication, significant outbound HTTP workloads

Links: got preview

GitHub logo sindresorhus / got

🌐 Human-friendly and powerful HTTP request library for Node.js



Got




Sindre's open source work is supported by the community.
Special thanks to



Fame Helsinki Fame Helsinki



Depot logo
Fast remote container builds and GitHub Actions runners.











Human-friendly and powerful HTTP request library for Node.js

Downloads Install size

See how Got compares to other HTTP libraries


You probably want Ky instead, by the same people. It's smaller, works in the browser too, and is more stable since it's built on Fetch. Or fetch-extras for simple needs.


Support questions should be asked here.

Install

npm install got
Enter fullscreen mode Exit fullscreen mode

Warning: This package is native ESM and no longer provides a CommonJS export. If your project uses CommonJS, you will have to convert to ESM. Please don't open issues for questions regarding CommonJS / ESM.

Got v11 is no longer maintained and we will not accept any backport requests.

Take a peek

A quick start guide is available.

JSON mode

Got has a dedicated option for handling JSON payload.
Furthermore, the…


10) p-queue — concurrency control for async operations

What it is: A promise queue with configurable concurrency, priority support, and rate limiting for throttling async workloads.

Why it matters in 2026: Unconstrained parallelism causes incidents. Fire 500 database queries at once with Promise.all and you'll saturate your connection pool fast. p-queue gives you exact concurrency control with priority ordering and interval-based rate limiting.

Best for: Bulk API calls, image processing pipelines, database batch operations, any async workload needing throttling

Links: p-queue preview

GitHub logo sindresorhus / p-queue

Promise queue with concurrency control

p-queue

Promise queue with concurrency control

Useful for rate-limiting async (or sync) operations. For example, when interacting with a REST API or when doing CPU/memory intensive tasks.

For servers, you probably want a Redis-backed job queue instead.

Note that the project is feature complete. We are happy to review pull requests, but we don't plan any further development. We are also not answering email support questions.




Install

npm install p-queue
Enter fullscreen mode Exit fullscreen mode

Warning: This package is native ESM and no longer provides a CommonJS export. If your project uses CommonJS, you'll have to convert to ESM. Please don't open issues for questions regarding CommonJS / ESM.

Usage

Here we run only one promise at a time. For example, set concurrency


Final thoughts

These 10 packages are fast, typed, and solve problems you only recognize from production experience. Which ones are already in your stack?

Top comments (0)