Stable Release in branch 4.x
4.22.2
Released 11 May 2026
(1 month ago)
SoftwareExpress
Version4.x
Minimum
Node.js version
Node.js 0.10.0+
Initial release4.0.0
09 Apr 2014
(12 years ago)
Latest release4.22.2
11 May 2026
(1 month ago)
End of support (OSS)TBD
(Supported)
Commercial support
(HeroDevs-NES)
Unavailable
Release noteshttps://github.com/expressjs/express/releases/tag/v4.22.2
Source codehttps://github.com/expressjs/express/tree/v4.22.2
Downloadhttps://github.com/expressjs/express/releases/tag/v4.22.2
Express 4.x ReleasesView full list

What Is New in Express 4

Feature Category
Bundled middleware removed from core Breaking Change
app.use(app.router) no longer needed Breaking Change
New express.Router class New Feature
New app.route() shortcut New Feature
Route definitions respect call order automatically Improvement

Why does Express 4 no longer bundle middleware?

Express 4 stopped bundling any Connect middleware because the core team wanted to keep the framework lightweight and let npm handle updates.

In practice you now list each piece (body-parser, cookie-parser, etc.) in package.json and install it separately. This means security patches land faster and you only ship what you actually use.

How do I replace the old app.use(app.router) pattern?

You no longer call app.use(app.router); routes are added in the exact order you declare them.

Because Express now respects declaration order, mixing middleware and route handlers works intuitively:

app.get('/', home);
app.use('/public', require('st')(process.cwd()));
app.get('/users', users.list);
app.post('/users', users.create);

Think of it as a single queue: each app.use or verb pushes a handler onto the tail, and requests flow through that queue.

What is the app.route() shortcut and how does it simplify code?

app.route() lets you chain HTTP verbs for a single path, cutting duplication.

app.route('/users')
  .get(function(req, res, next) {
    // handle GET /users
  })
  .post(function(req, res, next) {
    // handle POST /users
  });

All middleware attached to the chain runs only for /users, so you avoid repeating the path string in every verb.

How can I organize routes with the new express.Router?

The new express.Router works like a mini-app, so you can split each resource into its own file.

var express = require('express');
var people = express.Router();

people.use(function(req, res, next) {
  // router-level middleware
  next();
});

people.get('/', function(req, res) {
  res.send('People index');
});

module.exports = people;

Mount it in the main app with app.use('/people', require('./routes/people'));. This mirrors the way you'd structure a large Express 3 app but with a cleaner, dependency-free core.

Common Questions

Does removing bundled middleware break existing code?
It only breaks if you were relying on the implicit require; you must add the middleware as a separate npm dependency.

Which package replaces bodyParser after the upgrade?
Install the standalone body-parser module and use it like before.

Can I still use app.get() and app.post() as before?
Yes, the verb helpers work unchanged.

How do I mount a router on a sub-path?
Call app.use('/path', routerInstance) where routerInstance is created via express.Router().

What happens to code that still calls app.use(app.router)?
The call becomes a no-op and the router will be added twice, leading to duplicate handlers.

Releases In Branch 4.x

VersionRelease date
4.22.211 May 2026
(1 month ago)
4.22.001 Dec 2025
(6 months ago)
4.22.101 Dec 2025
(6 months ago)
4.21.205 Dec 2024
(1 year ago)
4.21.108 Oct 2024
(1 year ago)
4.21.011 Sep 2024
(1 year ago)
4.20.010 Sep 2024
(1 year ago)
4.19.225 Mar 2024
(2 years ago)
4.19.020 Mar 2024
(2 years ago)
4.19.120 Mar 2024
(2 years ago)
4.18.329 Feb 2024
(2 years ago)
4.18.208 Oct 2022
(3 years ago)
4.18.129 Apr 2022
(4 years ago)
4.18.025 Apr 2022
(4 years ago)
4.17.316 Feb 2022
(4 years ago)
4.17.216 Dec 2021
(4 years ago)
4.17.126 May 2019
(7 years ago)
4.17.016 May 2019
(7 years ago)
4.16.410 Oct 2018
(7 years ago)
4.16.312 Mar 2018
(8 years ago)
4.16.209 Oct 2017
(8 years ago)
4.16.129 Sep 2017
(8 years ago)
4.16.028 Sep 2017
(8 years ago)
4.15.525 Sep 2017
(8 years ago)
4.15.406 Aug 2017
(8 years ago)
4.15.317 May 2017
(9 years ago)
4.15.206 Mar 2017
(9 years ago)
4.15.105 Mar 2017
(9 years ago)
4.15.001 Mar 2017
(9 years ago)
4.14.128 Jan 2017
(9 years ago)
4.14.016 Jun 2016
(10 years ago)
4.13.421 Jan 2016
(10 years ago)
4.13.303 Aug 2015
(10 years ago)
4.13.231 Jul 2015
(10 years ago)
4.13.106 Jul 2015
(10 years ago)
4.13.021 Jun 2015
(11 years ago)
4.12.418 May 2015
(11 years ago)
4.12.317 Mar 2015
(11 years ago)
4.12.203 Mar 2015
(11 years ago)
4.12.101 Mar 2015
(11 years ago)
4.12.023 Feb 2015
(11 years ago)
4.11.201 Feb 2015
(11 years ago)
4.11.121 Jan 2015
(11 years ago)
4.10.813 Jan 2015
(11 years ago)
4.11.013 Jan 2015
(11 years ago)
4.10.704 Jan 2015
(11 years ago)
4.10.612 Dec 2014
(11 years ago)
4.10.510 Dec 2014
(11 years ago)
4.10.425 Nov 2014
(11 years ago)
4.10.323 Nov 2014
(11 years ago)
4.10.209 Nov 2014
(11 years ago)
4.10.129 Oct 2014
(11 years ago)
4.10.023 Oct 2014
(11 years ago)
4.9.817 Oct 2014
(11 years ago)
4.9.710 Oct 2014
(11 years ago)
4.9.608 Oct 2014
(11 years ago)
4.9.524 Sep 2014
(11 years ago)
4.9.419 Sep 2014
(11 years ago)
4.9.318 Sep 2014
(11 years ago)
4.9.217 Sep 2014
(11 years ago)
4.9.116 Sep 2014
(11 years ago)
4.9.009 Sep 2014
(11 years ago)
4.8.805 Sep 2014
(11 years ago)
4.8.730 Aug 2014
(11 years ago)
4.8.627 Aug 2014
(11 years ago)
4.8.518 Aug 2014
(11 years ago)
4.8.415 Aug 2014
(11 years ago)
4.8.310 Aug 2014
(11 years ago)
4.8.207 Aug 2014
(11 years ago)
4.8.006 Aug 2014
(11 years ago)
4.8.106 Aug 2014
(11 years ago)
4.7.304 Aug 2014
(11 years ago)
4.7.404 Aug 2014
(11 years ago)
4.7.227 Jul 2014
(11 years ago)
4.7.126 Jul 2014
(11 years ago)
4.7.025 Jul 2014
(11 years ago)
4.6.112 Jul 2014
(11 years ago)
4.6.011 Jul 2014
(11 years ago)
4.5.106 Jul 2014
(11 years ago)
4.5.004 Jul 2014
(11 years ago)
4.4.526 Jun 2014
(11 years ago)
4.4.420 Jun 2014
(12 years ago)
4.4.312 Jun 2014
(12 years ago)
4.4.209 Jun 2014
(12 years ago)
4.4.102 Jun 2014
(12 years ago)
4.4.031 May 2014
(12 years ago)
4.3.229 May 2014
(12 years ago)
4.3.123 May 2014
(12 years ago)
4.3.021 May 2014
(12 years ago)
4.2.011 May 2014
(12 years ago)
4.1.208 May 2014
(12 years ago)
4.1.127 Apr 2014
(12 years ago)
4.1.024 Apr 2014
(12 years ago)
4.0.009 Apr 2014
(12 years ago)
4.0.0-rc424 Mar 2014
(12 years ago)
4.0.0-rc311 Mar 2014
(12 years ago)
4.0.0-rc205 Mar 2014
(12 years ago)
4.0.0-rc102 Mar 2014
(12 years ago)