Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 5.0 #2237

wants to merge 120 commits into
base: 4.x

Release 5.0 #2237

wants to merge 120 commits into from


Copy link

@dougwilson dougwilson commented Jul 14, 2014

This is a tracking issue for release 5.0.

5.0.0-alpha.8 published on npm

I am trying to give better visibility for upcoming changes and so am trying out making a PR for a release here, pulling from the official next release branch into 4.x. This allows for the current pending changes to be easily visible.

Please keep feature requests in their own issues

I'm also leaving this PR unlocked so people can make comments/etc. and we'll see how it goes :) If you want to make a comment on a particular change, please make the comment in the "Files changed" tab so comments are not lost during a rebase (they will occur frequently has 4.x progresses).

The goal of Express 5 is to be API tweaks & the removal of all code from the Express repository, moving into components in the pillarjs project (, providing at least basic support for promise-returning handlers and complete HTTP/2 functionality. Express 5 would become a "view into pillarjs" and would be an arrangement of these components.

List of changes for release:

  • Add support for Promises in all handlers #2259 (though router@2.0.0-alpha.1)
  • Add support for Promises in app.param (though router@2.0.0-beta.2)
  • Bring back app.router which is just generally useful for directly calling to the router
    • Make sure 3.x-style app.use(app.router) does not explode
  • Fix views to resolve paths async #2653
  • Make query parser option default to 'simple' #3361
  • Make bodyParser.urlencoded default to 'simple' (though body-parser@2.0.0-TBD)
  • Make actually return the host #2179
  • Make req.query a getter instead of added by middleware #2215
  • Make res.render always async callback, to hide sync view engines #2668
  • Make res.render use the default engine even when an extension was found #2708
  • Make res.sendFile use the "etag" application setting #2294
  • Make res.status throw on invalid argument type #2795 #2797 #3111 #3137 #3143
  • Make express.static use the "etag" application setting #2317
  • New path matching syntax #2057 #2173 #4321 (though router@2.0.0-beta.1)
  • Provide separate locals and options to view engine #2648
  • Remove Express 3.x middleware error stubs #3217
  • Use mime-types instead of mime
  • Use path-is-absolute module for absolute path detection #2620

List of deprecated things removed:

  • Leading : in name for app.param(name, fn)
  • app.del
  • app.param(fn)
  • req.acceptsCharset
  • req.acceptsEncoding
  • req.acceptsLanguage
  • res.json(obj, status)
  • res.json(status, obj) #2939
  • res.jsonp(obj, status)
  • res.jsonp(status, obj) #2940
  • req.param()
  • res.redirect(url, status) #2941
  • res.send(body, status)
  • res.send(status)
  • res.send(status, body) #2942
  • res.sendfile
  • res.vary() (i.e. no arguments) #2943

List of things to refactor (still provided by express):

  • Better res.cookie and general cookie reading/setting (new keygrip and cookies modules; new req.cookies or such)
  • Move prototype properties to own repo #2432
  • Move Router to it's own repo #2411

Testing this release

If you want to try out this release, you can install it with the following command:

$ npm install expressjs/express#5.0

Owners/collaborators: please do not merge this PR :)

@dougwilson dougwilson added 5.x labels Jul 14, 2014
Copy link

@jonathanong jonathanong commented Jul 14, 2014

here's some mostly refactor-based changes i'd like to see. AFAIK you've got this covered @dougwilson, but let me know if you need help:

  • refactor the router to a separate repository
  • refactor the view system to a separate repository. maybe templation, maybe something else more backwards compatible
  • finish next versions of cookies and keygrip and use them in Express
  • finish refactoring body-parser into the request-body module before including it here
  • refactor the router to use path-match or something else between path-to-regexp and the router itself
  • refactor proxy-addr. i just emailed npm to ask for the trust package
Copy link
Member Author

@dougwilson dougwilson commented Jul 14, 2014

All great stuff @jonathanong :) I added all but the body-parser one up there, because I really want to add that in a 4.x release, but time-dependent :D

@Fishrock123 Fishrock123 added this to the 5.x milestone Aug 1, 2014
@Fishrock123 Fishrock123 added the pr label Sep 29, 2014
Copy link

@ilanbiala ilanbiala commented Oct 20, 2014

How close is this to a prerelease? I just want to know if you think it's stable enough to start playing around with for future projects.

Copy link
Member Author

@dougwilson dougwilson commented Oct 20, 2014

So you're always welcome to play around with npm install visionmedia/express#5.0 (and you can add "express": "visionmedia/express#5.0" to your package.json if you really wish). If you are looking for something published to npm, just ask :) No one has really ask for it yet is all. Would you like an alpha or something published to npm? I can do it right after 4.10 (which is due something this week) so it'll include 4.10 stuff.


This comment has been hidden.


This comment has been hidden.


This comment has been hidden.


This comment has been hidden.


This comment has been hidden.

dougwilson added 6 commits Nov 7, 2014
dougwilson and others added 13 commits May 11, 2019
closes #3946
closes #3958

This comment was marked as off-topic.


This comment was marked as off-topic.


This comment was marked as off-topic.


This comment was marked as off-topic.

@expressjs expressjs locked and limited conversation to collaborators Oct 11, 2019
Copy link

@wesleytodd wesleytodd commented Jan 1, 2020

It was last January when we said we would shoot for a release early summer for this. Now that it is January again, I would like to take the lead in pushing this release out the door by the end of the month. I know that sounds like "well why could we do it now when we couldn't all last year". And the answer really is that no one is paid to work on this project and we all are very busy. So call it a new years resolution or what, but I want us to make this happen so we can unblock so much development on Express 6.0. So what will it take to make this happen:

  1. Agree on the Jan 31, 2020 goal
  2. Create an updated list of todo items
  3. Knock those out
  4. Prepare a blog post announcing it and describing the update process
  5. Publish 5.0!
  6. Start work on 6.0

I really think that a few solid days work is all we are away from having this out the door, and I will be taking time this month to make it happen. So, for step 2, here is what I think the real todo list is:

  1. #3621 Just a simple PR to open then merge
  2. #2432 I started this in expressjs/discussions#82, and it is pretty simple to finish
  3. Status undefined: #2795 #2797 #3111 #3137 #3143
  4. pillarjs/router#42 Merge this with its current state. The path-to-regexp@6 can go with express@6
  5. Remove the alpha tag on the 5.0 docs

Am I missing anything? If that is it then I will start on these and the list at the top can just be updated to be more concise.

As for the announcement, we can work with the OpenJS foundation blog I think, they might even be able to help us write it. If not I am happy to also knock that out once the rest is done.

@dougwilson dougwilson force-pushed the 5.0 branch 2 times, most recently from fa4542d to 121fe99 Mar 24, 2020
dougwilson and others added 2 commits Mar 26, 2020
closes #4286
closes #4327
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

You can’t perform that action at this time.