Five things to do before a major release upgrade
Going from Debian 11 to 12 usually works after editing sources.list and running apt full-upgrade, but the failure mode is having no way back.
Before: a complete backup that you have actually restored once, not just a snapshot you assume works. A record of the current state — dpkg --get-selections, running units, open ports, crontabs. The release notes' "issues to be aware of", especially removed packages and anything you compiled yourself. A rollback path: a provider snapshot is easiest; on bare metal at least keep the old kernel. And a time when you are not relying on a single SSH session, with out-of-band console access ready.
After: network configuration, database versions, and runtime versions of PHP or Python are where surprises live.