5.2.1

Latest release
Released 01 Dec 2025 (5 months ago)

Software
Express
IntroductionExpress is a fast, unopinionated, minimalist web framework for Node.js, enabling developers to build robust APIs and web applications with a thin layer of fundamental web features. It provides routing, middleware support, and a flexible plugin ecosystem.
VendorOpenJS Foundation
AuthorTJ Holowaychuk
Written inJavaScript
PlatformNode.js
Operating systemCross-platform
TypeWeb framework
Repositoryhttps://github.com/expressjs/express
Websitehttps://expressjs.com
Support policyhttps://expressjs.com/en/support/
Security policyhttps://github.com/expressjs/express/security
LicenseMIT License
LATEST RELEASES:
4.22.1 01 Dec 2025 (5 months ago)
5.2.1 01 Dec 2025 (5 months ago)

All Releases

VersionMinimum
Node.js version
Initial releaseLatest releaseEnd of support (OSS)Commercial Support
(HeroDevs-NES)
5185.0.0
09 Sep 2024
(1 year ago)
5.2.1
01 Dec 2025
(5 months ago)
TBD
(Supported)
Unavailable
40.10.04.0.0
09 Apr 2014
(12 years ago)
4.22.1
01 Dec 2025
(5 months ago)
TBD
(Supported)
Unavailable
30.8.03.0.1
01 Nov 2012
(13 years ago)
3.21.2
31 Jul 2015
(10 years ago)
Jul 2015
(Ended 10 years, 9 months ago)
TBD
(Supported)
20.4.12.0.0
17 Mar 2011
(15 years ago)
2.5.11
29 Jun 2012
(13 years ago)
Jul 2012
(Ended 13 years, 9 months ago)
Unavailable
10.1.981.0.0
16 Nov 2010
(15 years ago)
1.0.9
23 Mar 2011
(15 years ago)
Mar 2011
(Ended 15 years, 1 month ago)
Unavailable

How Does Express Handle Version Support?

Express is an open-source Node.js web framework maintained by the OpenJS Foundation, and it follows a simple rule: only the latest version of any given major release line receives active support.

There are no LTS tiers or fixed support windows counted in months. When a new major version ships, the previous major line does not immediately die -- but it also does not receive guaranteed fixes. The Express team may patch critical security vulnerabilities in EOL branches, but this is discretionary, not a commitment.

In practice, this means teams should track the latest stable release within whatever major line they are on, and plan migration to a newer major when the older one falls out of active development.

Support Detail Express
Support model Latest version per major line only
EOL model Community-driven; no fixed support duration per release
Release cycle New major versions released when ready; no fixed cadence
End of support (OSS) As shown in the release table above -- EOL branches may receive critical patches at maintainer discretion
Commercial support (HeroDevs NES) Available for EOL branches through HeroDevs Never-Ending Support

References: Express.js official support page, OpenJS Foundation.

What Are the Risks of Running an Unsupported Express Version?

Running an unsupported Express version means your application stops receiving security patches, leaving known vulnerabilities permanently open in your middleware stack.

Express sits at the boundary of every HTTP request your app handles. A vulnerable version of Express -- or its bundled dependencies like path-to-regexp or qs -- can expose your service to request smuggling, ReDoS attacks, or prototype pollution. These are not theoretical. Several Express 3.x-era dependencies had exactly these issues after EOL.

The ecosystem risk compounds over time. As the npm packages that Express depends on release breaking updates, an EOL Express version drifts further from compatibility. You may find that newer versions of your own dependencies conflict with the frozen transitive dependencies pinned by an unsupported Express branch.

For Node.js developers specifically, there is also a runtime alignment issue. Each Express major targets a minimum Node.js version. If your Node.js runtime is actively maintained but your Express version is EOL, you are running a supported runtime underneath an unsupported framework -- a combination that creates unpredictable behavior with no path to a fix from the maintainers.

What Happens After an Express Version Reaches End of Life?

After an Express version reaches EOL, the core team stops issuing planned fixes -- no bug patches, no dependency updates, and no guaranteed security releases.

The GitHub repository remains public and the npm package stays installable forever, so nothing breaks immediately. But any vulnerabilities discovered after EOL will accumulate without a fix, and the maintainers will not accept pull requests targeting that branch as a matter of policy.

In some cases, the Express team has back-ported critical CVE patches to EOL branches -- but this is a courtesy, not a contract. You cannot plan around it.

Staying on an EOL branch: the two real options

Upgrade to the current supported major: This is the recommended path. As shown in the release table above, migration guides exist for moving between major versions. Express 4 to Express 5 introduced async error handling and dropped several deprecated APIs -- the migration is documented and manageable for most codebases.

Commercial support via HeroDevs NES: If upgrading is not feasible in the short term -- common in large monoliths or compliance-heavy environments -- HeroDevs Never-Ending Support provides ongoing security patches for EOL Express branches. This buys time without requiring an immediate framework upgrade.

Most teams find that staying on an EOL branch beyond one release cycle creates more work than the upgrade itself. The longer you wait, the wider the API gap becomes.

How To Check Your Express Version

You can check which version of Express your project is running in several ways, depending on whether you want the installed version or what your package manifest specifies.

Check the installed version from the command line

npm list express

This shows the version actually installed in node_modules, including how it was resolved if you have nested dependencies.

Check from inside your application at runtime

const express = require('express');
console.log(express.version); // e.g. "5.0.1"

The express.version property is available in all modern Express major versions and reflects the version loaded by the current process.

Check what version range your project declared

cat package.json | grep express

This shows the semver range your project declared -- which may be broader than what is actually installed. Use npm list express for the resolved version.

Check globally if you used the Express generator

npm list -g express-generator

The Express application generator is a separate package. If you scaffolded your project with it, check its version independently from Express itself.

FAQ -- Express.js Support & End of Life

Q1: Does Express use Long Term Support (LTS) releases like Node.js does?
Express does not have a formal LTS program. Unlike Node.js, which designates specific releases as LTS with defined support windows, Express simply supports the latest version within each active major line. There is no "maintenance LTS" phase -- when a major version is superseded or deprioritized, support becomes best-effort only.

Q2: How long is each major Express version supported?
Express does not publish fixed support durations per major version. Support continues as long as the maintainers actively develop that branch, which is tied to community demand and Node.js runtime compatibility rather than a fixed calendar. The release table above shows the current end-of-support status for each major line.

Q3: What is the difference between "ongoing" support and EOL for Express?
A branch listed as "ongoing" in the release table receives planned bug fixes, security patches, and dependency updates. An EOL branch may receive patches for critical security vulnerabilities at the maintainers' discretion, but no fixes are guaranteed and no new features or bug fixes are planned. The difference is the presence or absence of a maintenance commitment.

Q4: How do I know if my Express version is still supported?
Check the release table above against your installed version (npm list express). If your major version shows an end-of-support date that has already passed, you are on an EOL branch. If it shows "ongoing," you are on an actively maintained line -- but make sure you are on the latest patch release within that major, not an older patch.

Q5: What should I do when my Express version reaches end of life?
The first option is upgrading to the current supported major -- official migration guides cover the breaking changes between major versions. If an immediate upgrade is not feasible, HeroDevs Never-Ending Support offers commercial security patches for EOL Express branches. Running an EOL version without either path in place means your application will accumulate unpatched vulnerabilities over time with no upstream remedy available.