{"ecosystem":"npm","package":"express","from_version":null,"to_version":null,"changes":[{"from_version":"4","to_version":"5","change_type":"api","description":"path-to-regexp upgraded to 8.x: wildcards now require an explicit name (e.g. `/files/*filepath` instead of `/files/*`).","migration_hint":"Update route patterns: `/assets/*` -> `/assets/*assetPath`. Regex routes unchanged."},{"from_version":"4","to_version":"5","change_type":"behavior","description":"req.body is `undefined` by default when no body-parsing middleware matches (was `{}` in 4.x).","migration_hint":"Guard with `req.body ?? {}` or mount `express.json()` / `express.urlencoded()` as needed."},{"from_version":"4","to_version":"5","change_type":"behavior","description":"Async middleware: rejected promises propagate to the error handler automatically.","migration_hint":"You can now `throw` or reject inside async middleware without try/catch. Remove manual `.catch(next)` wrappers."},{"from_version":"4","to_version":"5","change_type":"removal","description":"`req.param(name)` removed (deprecated in 4.x). `app.del` alias removed.","migration_hint":"Use `req.params.name`, `req.body.name`, or `req.query.name` explicitly. Rename `app.del` to `app.delete`."},{"from_version":"4","to_version":"5","change_type":"runtime","description":"Node.js 18+ required.","migration_hint":"Upgrade Node to >= 18 before installing express@5."}],"total":5,"note":"Curated major-version breaking changes. Always verify against the package's official changelog before migrating.","_cache":"miss"}