Explore · Breaking
Breaking Changes per Major Version
Verified breaking changes between major versions, with migration hints. Call this before any major-version bump.
Recent breaking changes (12)
| Package | From → To | Type | Breaking change | Migration hint |
|---|---|---|---|---|
| cargo/reqwest | 0.11→0.12 | api | Http/hyper 1.0 upgrade. TLS backend features renamed; default TLS now rustls (was native-tls). | For native-tls, enable `features = ["native-tls"]` explicitly. Blocking API shape unchanged for most users. |
| cargo/axum | 0.6→0.7 | api | `axum::extract::Body` moved to `axum::body::Body`. `axum::extract::RawBody` removed. http/hyper dependencies bumped. | Global search-and-replace `axum::extract::Body` -> `axum::body::Body`. Match on updated middleware signatures. |
| npm/@angular/core | 18→19 | api | Standalone components are the default (modules optional). SSR with hydration events. | New projects get standalone by default. Existing NgModule-based apps continue to work — migrate at your pace with `ng generate @angular/core:standalone`. |
| npm/@angular/core | 17→18 | api | Signal-based reactivity stable; `@if` / `@for` / `@switch` control flow default. | Angular schematics auto-migrate *ngIf / *ngFor to the new control flow: `ng update @angular/core@18`. |
| npm/nuxt | 2→3 | api | Complete rewrite on Vue 3 + Vite + Nitro. Different directory layout, different auto-imports, different modules API. | Not a migration — a rewrite. Use the official migration guide or consider Nuxt 2 LTS (frozen). |
| pypi/ruff | 0.5→0.8 | config | Formatter and linter config merged under [tool.ruff] with `lint` and `format` sub-tables. Output of some rules changed. | Run `ruff check --fix` after upgrade. For CI pinning, pin an exact version — ruff makes breaking rule-output changes between minors. |
| pypi/pandas | 1→2 | api | PyArrow-backed dtypes, copy-on-write (CoW) opt-in then default in 3.0, nullable dtypes default. | Set `pd.set_option('mode.copy_on_write', True)` to preview Pandas 3 semantics. Audit chained indexing (df[...][...] = ...). |
| pypi/numpy | 1→2 | api | NumPy 2.0 released 2024: cleaned up main namespace (many aliases removed), promotion rules for mixed types tightened (NEP 50). | Run `ruff check --select NPY2` (numpy-deprecation rules). Pin `numpy<2` for legacy code; for new code, upgrade and fix the small set of renamings. |
| swift/swift | 5→6 | api | Typed throws: `func foo() throws(MyError)` — errors carry their concrete type. | Opt-in. Existing untyped throws continue to work. Use typed throws for libraries where callers need exhaustive handling. |
| swift/swift | 5→6 | behavior | Strict data-race safety by default (complete concurrency checking). Existing code with data races now warns or errors. | Opt in progressively with `-warnings-as-errors` disabled first. Mark shared state with `@MainActor` / `Sendable` / `nonisolated(unsafe)` as needed. |
| nuget/Microsoft.NETCore.App | 8.0→9.0 | runtime | .NET 9 (STS release). Improvements to AOT, System.Text.Json, LINQ. HybridCache API new. | STS = Standard Term Support (18 months). For long-running production stick to .NET 8 LTS (until Nov 2026). |
| nuget/Microsoft.EntityFrameworkCore | 7.0→8.0 | api | Complex types (value objects), JSON columns for non-owned types, hierarchyid for SQL Server. | Opt-in. Existing models continue to work. Consider migrating owned-entity types to ComplexProperty for better DX. |
Sample of curated entries across ecosystems. Search for a specific package above.
What we track
Curated major-version transitions for packages that matter to AI coding agents: React, Next.js, Prisma, Express, Node, TypeScript, ESLint, Tailwind, Vite, Pydantic, SQLAlchemy, Django, Python, Rust editions, Rails, Laravel, Symfony, Spring Boot, Jakarta EE, .NET, Swift and more. Each entry links the breaking behaviour with a tested migration command or code pattern.