5 curated breaking changes across major versions of express. Use this as a migration checklist before bumping dependencies.
path-to-regexp upgraded to 8.x: wildcards now require an explicit name (e.g. `/files/*filepath` instead of `/files/*`).
Update route patterns: `/assets/*` -> `/assets/*assetPath`. Regex routes unchanged.
req.body is `undefined` by default when no body-parsing middleware matches (was `{}` in 4.x).
Guard with `req.body ?? {}` or mount `express.json()` / `express.urlencoded()` as needed.
Async middleware: rejected promises propagate to the error handler automatically.
You can now `throw` or reject inside async middleware without try/catch. Remove manual `.catch(next)` wrappers.
Get this data programmatically \u2014 free, no authentication.
curl https://depscope.dev/api/breaking/npm/express`req.param(name)` removed (deprecated in 4.x). `app.del` alias removed.
Use `req.params.name`, `req.body.name`, or `req.query.name` explicitly. Rename `app.del` to `app.delete`.
Node.js 18+ required.
Upgrade Node to >= 18 before installing express@5.