◈Breaking Change Registry

Monitored Package Feed

A reference of every breaking change Vigil has tracked across all monitored packages — scraped from GitHub releases and npm changelogs via Bright Data. Use Check your stack to see which of these affect your specific project.

9
packages monitored
20
releases tracked
73
breaking changes logged
Not sure if these affect you? Paste your package.json on the Check your stack page — Vigil will cross-reference your exact versions and show only the changes that are ahead of where you are.
reactnpm
✗ 7 breaking⚠ 6 deprecated
v19.0.02024-12-05
release notes ↗
  • ✗BREAKING CHANGE: ReactDOM.render is removed. Use createRoot from react-dom/client instead.
  • ✗BREAKING CHANGE: ReactDOM.hydrate is removed. Use hydrateRoot from react-dom/client instead.
  • ✗BREAKING CHANGE: Legacy string refs are removed. Migrate to callback refs or useRef.
  • ✗BREAKING CHANGE: defaultProps on function components is removed. Use ES6 default parameters instead.
  • …and 3 more
✓v18.3.02024-04-25no breaking changes
nextnpm
✗ 8 breaking
v15.1.02024-12-10
release notes ↗
  • ✗unstable_after is now stable as after. Rename all usages of unstable_after to after — the old name is removed.
  • ✗unstable_cacheTag and unstable_cacheLife are now stable as cacheTag and cacheLife. The unstable_ prefixed exports are removed.
  • ✗The instrumentation.js file no longer supports a default export. Use named exports (register, onRequestError) instead — default export is removed.
v15.0.02024-10-21
release notes ↗
  • ✗BREAKING CHANGE: Async Request APIs — cookies(), headers(), draftMode(), params and searchParams in layouts and pages are now async. You must await them.
  • ✗BREAKING CHANGE: fetch requests are no longer cached by default. Requests now default to no-store. Add cache: 'force-cache' to opt back in.
  • ✗BREAKING CHANGE: GET Route Handlers are no longer cached by default. Use export const dynamic = 'force-static' to restore static behavior.
  • ✗BREAKING CHANGE: React 18 peer dependency is removed. Next.js 15 requires React 19.
  • …and 1 more
✓v14.2.02024-04-11no breaking changes
typescriptnpm
✗ 3 breaking
v5.7.02024-11-22
release notes ↗
  • ✗BREAKING CHANGE: Under --isolatedModules, TypeScript now errors when a type-only import would be removed and the module is not resolvable. Previously this was silently allowed.
  • ✗BREAKING CHANGE: The deprecated --target ES3 and --target ES5 options are removed when used with --module nodenext or --module node16.
v5.6.02024-09-09
release notes ↗
  • ✗BREAKING CHANGE: Nullish and truthy checks on iterators are now errors. Writing !!iterator or iterator ?? fallback where iterator is an Iterator type now raises a compile error — these patterns are almost always logic bugs.
expressnpm
✗ 8 breaking
v5.0.02024-10-15
release notes ↗
  • ✗BREAKING CHANGE: Path route matching uses path-to-regexp v8 — named parameters now require explicit syntax like :id(\d+). Patterns like :id(*) are no longer valid.
  • ✗BREAKING CHANGE: Async errors in route handlers and middleware are now automatically forwarded to next(err) — remove manual try/catch wrappers that call next(err) or your error handler will be called twice.
  • ✗BREAKING CHANGE: req.query is no longer parsed with qs by default — nested object syntax like ?a[b]=1 must be explicitly enabled via app.set('query parser', 'extended').
  • ✗BREAKING CHANGE: app.router property is removed — it was deprecated in Express 4.
  • …and 4 more
✓v4.21.02024-09-11no breaking changes
eslintnpm
✗ 11 breaking
v9.0.02024-04-05
release notes ↗
  • ✗BREAKING CHANGE: Flat config is now the default and only supported config format — .eslintrc.* and eslintrc.js files are no longer loaded. Migrate to eslint.config.js.
  • ✗BREAKING CHANGE: Node.js < 18.18.0 and Node.js 19 are no longer supported.
  • ✗BREAKING CHANGE: Removed --rulesdir CLI flag — use plugins instead.
  • ✗BREAKING CHANGE: Removed --ext CLI flag — file extension filtering is now handled in the config file.
  • …and 7 more
✓v8.57.02024-03-20no breaking changes
mongoosenpm
✗ 8 breaking
v8.0.02023-11-01
release notes ↗
  • ✗BREAKING CHANGE: strictQuery now defaults to false — queries no longer filter out fields not in the schema by default. Set mongoose.set('strictQuery', true) to restore old behavior.
  • ✗BREAKING CHANGE: Removed callback support from Model.findOne(), Model.findById(), Model.find(), Model.save(), and all other model methods — all methods now return Promises only.
  • ✗BREAKING CHANGE: Removed mongoose.connect() callback support — use .then() or await instead.
  • ✗BREAKING CHANGE: Document.prototype.equals() now uses deep equality for embedded documents instead of _id comparison.
  • …and 4 more
✓v7.6.02023-10-04no breaking changes
jestnpm
✗ 7 breaking
v29.0.02022-08-25
release notes ↗
  • ✗BREAKING CHANGE: jest.resetModules() now also clears the module registry cache — previously only the mock registry was cleared.
  • ✗BREAKING CHANGE: --experimental-vm-modules is now required to use ES module support via jest-environment-node with native ESM.
  • ✗BREAKING CHANGE: testEnvironment defaults to 'node' — the previous default of 'jsdom' was removed. Add @jest-environment jsdom docblock or set explicitly in config for browser-like tests.
  • ✗BREAKING CHANGE: Dropped support for Node.js 12 and 14.
  • …and 3 more
✓v29.7.02023-09-07no breaking changes
vitenpm
✗ 13 breaking
v6.0.02024-11-26
release notes ↗
  • ✗BREAKING CHANGE: Node.js 18 is now the minimum supported version — Node.js 14, 16, 17, 19, 21 are no longer supported.
  • ✗BREAKING CHANGE: The default value of resolve.conditions has changed — it now includes the module condition by default. Update your config if you were relying on the previous defaults.
  • ✗BREAKING CHANGE: server.fs.deny default has changed to ['.env', '.env.*', '*.{crt,pem}', '/.git/'] — previously only blocked .env files.
  • ✗BREAKING CHANGE: build.cssMinify now defaults to 'esbuild' on all builds including lib mode — previously it was disabled in lib mode.
  • …and 2 more
v5.0.02023-11-16
release notes ↗
  • ✗BREAKING CHANGE: Node.js 14 and 16 are no longer supported — Node.js 18+ is required.
  • ✗BREAKING CHANGE: define values are now always replaced as expressions, not strings — code like define: { 'process.env.NODE_ENV': '"production"' } must be updated to remove the extra quotes.
  • ✗BREAKING CHANGE: import.meta.env.BASE_URL no longer has a trailing slash in all cases — normalize manually if your code depends on the trailing slash.
  • ✗BREAKING CHANGE: build.modulePreload option structure changed — { polyfill: true } is now the default and the old boolean form is removed.
  • …and 3 more
✓v4.5.02023-10-19no breaking changes
prismanpm
✗ 8 breaking
v5.0.02023-07-25
release notes ↗
  • ✗BREAKING CHANGE: The rejectOnNotFound option is removed from all query methods — use findUniqueOrThrow() and findFirstOrThrow() instead.
  • ✗BREAKING CHANGE: jsonProtocol is now the default and only query engine protocol — the PRISMA_ENGINE_PROTOCOL=graphql override is removed.
  • ✗BREAKING CHANGE: The beforeExit hook on PrismaClient is removed — use process signal handlers instead.
  • ✗BREAKING CHANGE: runtime/index.js import path is removed — use @prisma/client/runtime/library instead.
  • …and 4 more
✓v4.16.02023-07-05no breaking changes
How this data was collectedVigil uses three custom Bright Data Scraper Studio collectors (Collector IDs: c_mt38dv2i1d2xga6atq · c_mt38jj1t11smj3ek9e · c_mt38q9ng1pxd02lyaf) to scrape GitHub releases pages, npm version history, and vendor changelogs. When a scraper returns invalid data, the self-healing loop automatically calls bdata scraper heal --auto-approve.