OSS Tanbou

Express โ€” compose routing and middleware into a thin HTTP layer for Node.js applications

OSS health 82
About these scores

Discovery score is an unbounded weighted, log-compressed index of stars, watchers, forks, and contributors. Growth momentum is its change over the observed period; OSS health is a 0โ€“100 score from available repository recency, Community Health, and release data.

Stars
69,450
Primary language
JavaScript
License
MIT
Repository last updated
Sep 14, 2026

Overview

Express is a minimalist web framework for building HTTP servers, APIs, and web applications on Node.js. Its small core centers on routing, middleware chains, request/response helpers, and view integration without forcing a particular ORM or template stack. As of September 15, 2026, the latest stable release is Express 5.2.1, requiring Node.js 18 or newer. Express 5 improves Promise-based error flow while introducing breaking changes in route path syntax and several legacy APIs.

Features and best fit

Based on official documentation; not hands-on tested ยท Content checked:

Split HTTP request processing into routing and composable middleware

Express centers on routing by HTTP method and path plus middleware that processes requests and responses in sequence. The README highlights robust routing, HTTP helpers, content negotiation, and view-system support. Authentication, logging, validation, sessions, static files, and API endpoints can be separated into middleware, keeping transport concerns distinct from application business logic.

Express does not force a specific ORM or template engine. Teams add capabilities through middleware and packages, which makes it a practical fit when the application needs a thin HTTP layer rather than a framework that dictates the entire stack.

Sources: [2]

Let Express 5 route rejected Promises from async handlers into error handling

Express 5 can route rejected Promises returned by route handlers and middleware into its error flow. Errors thrown from async functions therefore require less manual try/catch and next(error) boilerplate than in Express 4.

Custom error handlers still use the dedicated (err, req, res, next) middleware signature and are normally placed after other middleware. Response policy, logging, and prevention of sensitive-data leakage remain application responsibilities.

Sources: [6][5]

Use the same core for APIs, server-rendered sites, and hybrid Node.js backends

The README positions Express for single-page applications, websites, hybrids, and public HTTP APIs. Response helpers, redirects, caching, static-file handling, content negotiation, and integration with many template engines mean it is not limited to JSON APIs.

Because database access, validation, authentication, and observability are selected from the Node.js ecosystem rather than prescribed by Express, teams can tailor the stack and can also introduce Express only as the routing layer in an existing Node application.

Sources: [2]

A fit for Node.js APIs and web backends that want explicit routing and incremental middleware composition

Express fits REST/JSON APIs, BFFs, server-rendered applications, and smaller services where teams want to assemble the HTTP layer explicitly. It is especially attractive when a team prefers a thin abstraction close to Node.js HTTP semantics and wants freedom to choose database, validation, authentication, and other packages independently.

Express 5 requires Node.js 18+ and is not a drop-in major upgrade from Express 4

Express 5 requires Node.js 18 or newer. The migration guide says the basic API remains familiar but includes compatibility-breaking changes. APIs such as app.del() and req.param() and older res.send()/res.json() signatures were removed, while route path matching syntax also changed. Use the official codemods and automated tests rather than treating the upgrade as a dependency-only change.

Static-file behavior changed as well: dotfiles and hidden directories are handled more strictly by express.static() and res.sendFile(). Applications serving paths such as .well-known should explicitly verify their file-serving policy during migration.

Sources: [5][2]

Minimalism leaves security, validation, authentication, and rate limiting largely to the application stack

Express core focuses on routing and HTTP helpers; it does not automatically provide complete input validation, authentication and authorization, CSRF defenses, rate limiting, secure-cookie policy, or TLS termination. The official production security guidance separately calls out TLS, input validation, secure cookies, and dependency security.

Production security also depends on settings such as trust proxy, redirect targets, file paths, request-body limits, and session storage. Middleware selection alone is not a complete security model; reverse-proxy and application boundaries need to be designed together.

Sources: [7][2]

Read release notes and advisories separately: 5.2.1 reverted a 5.2.0 query-parser breaking change

Express 5.2.1 is a patch release that reverted an erroneous breaking change in the extended query parser introduced in 5.2.0. Its release notes explicitly state that the behavior was not an actual security vulnerability and that CVE-2024-51999 was rejected. Security-looking changes should therefore be evaluated from the official release note and advisory context rather than from a CVE identifier alone.

Express assembles HTTP behavior from multiple dependencies. Production maintenance should track the lockfile and transitive dependencies in addition to the top-level Express version.

Sources: [4][3]

Official sources

  1. [1]expressjs/express โ€” GitHub repository(2026-09-15)
  2. [2]expressjs/express โ€” README(2026-09-15)
  3. [3]expressjs/express โ€” package.json(2026-09-15)
  4. [4]expressjs/express โ€” Express 5.2.1 release(2026-09-15)
  5. [5]Express Docs โ€” Upgrade to Express 5(2026-09-15)
  6. [6]Express Docs โ€” Error handling(2026-09-15)
  7. [7]Express Docs โ€” Production Best Practices: Security(2026-09-15)
Supplemental curator note

We selected Express as a thin HTTP routing and middleware layer rather than an all-in-one backend framework. Express 5 improves async error flow but includes breaking route-path, legacy API, and static-file changes that make the migration guide essential.

Try it in 3 steps

  1. 1

    Get the source

    git clone --depth 1 https://github.com/expressjs/express.git
  2. 2

    Enter the repository

    cd express
  3. 3

    Check the official steps

    Continue with the commands in the README Installation, Quick Start, or Getting Started section.

    find . -maxdepth 1 -iname 'README*' -exec sed -n '1,220p' {} \; -quit
Check the official README

Growth

Growth trends ยท Last 30 days

69,450 Stars

Trend data is still being collected.

Development activity

Last 90 days ยท weekly

Commits (last 30 days)
11
Open PRs
123

Development activity is still being collected.

Built with

Categories and tags

Categories

GitHub data

GitHub dataView detailed GitHub data

GitHub Topics

  • javascript
  • nodejs
  • express
  • server
Stars
69,450
Forks
24,997
Watchers
1,708
Open issues
106
Primary language
JavaScript
License
MIT
Repository last updated
Sep 14, 2026
Report incorrect information

Tell us if any listing information is incorrect or outdated.

Express โ€” Node.js Routing, Middleware, Async Errors, and Express 5 | OSS Tanbou