Overview
What changes between major versions, what you have to do about it, and what is on its way out.
What version are you on now?
6.x
5.x
From v5.x — the combined path, not the two pages in sequence
4.x or older
Older upgrades, then come back here
7.0.0 already
Deprecations — what is going away next
If you are skipping v6, take the combined page. The two sets of changes interact, and one v6 change had a warning that only existed in 5.5.x — so a reader coming from 5.4 or earlier gets it with no signal at all.
The three entries in this group
Upgrade to v7 — the current major. Start with Breaking changes if you want to know how bad it is before you pick a path.
Deprecations — API that still works today but is going away, with the version that removes it. Read this before you upgrade, not after.
Older upgrades — every hop from v1 to v6, newest first.
Every upgrade page has an agent prompt
Each of the seven upgrade pages opens with a collapsed block holding a prompt for that hop, ready to copy into Claude Code or a similar tool. It is collapsed by default, so a reader doing the upgrade by hand scrolls past one line.
Three rules apply to every one of them. They are in each prompt, and they are worth knowing before you run one:
Never suppress a diagnostic, add a pragma to disable one, or add a null-forgiving
!to make an error go away. Every diagnostic in an upgrade has a real fix.Do not change behaviour to make a test pass. A test that fails after an upgrade is either a silent change you missed or a real finding.
Do not reformat, rename, or refactor anything the upgrade does not require.
What a prompt cannot do for you
Step 1 of the v7 prompts needs your judgement. The prompt asks the agent to find and report every silent change, and to decide only the ones with a mechanical answer.
Two have no mechanical answer:
A projection that can return null. Whether the null meant "absent" or was never supposed to happen decides whether you convert to
Option.FromNullableor fix the caller. Only someone who knows the domain can say.Coming from 5.x, an
IsNonebranch on a value-type option.Option.Some(0)now gives you aSome. Whether that branch was standing in for "zero" needs someone who knows what the code means. See Silent change 3.
Expect the agent to bring these to you. If it decided them on its own, that is a finding.
If you would rather not use an agent
Every step in a prompt maps to a section on the upgrade page it sits on, and Breaking changes is the same v7 information as a reference table naming the diagnostic each break produces.
Last updated
Was this helpful?