Here is short info how i perform major upgrade.
### download update files
freebsd-update upgrade -r XXX-RELEASE
## merge the new config files (newsyslog, motd, cron ...)
### Install new kernel and disable old kernel modules like virtualbox kernel module or drm-kmod in /boot/loader.conf and /etc/rc.conf commend out kld_list
freebsd-update install
ee /boot/loader.conf
ee /etc/rc.conf
shutdown -r now
### Install new userland programs (/usr/bin /usr/sbin ...) and clear the old shared lib. Temporary disable all other services loaded from /usr/local/etc/rc.d/ (apache,MySQL, PostgreSQL) otherwise they will fail to load before rebuilding them against the new shared libraries. (SSH is in the base so don't disable it )
freebsd-upgrade install
ee /etc/rc.conf
shutdown -r now
### Reinstall ALL userland application so they can be build against new shared libs
### for packages you need first to reinstall the new pkg using pkg-static OR if pkg still works you can use pkg bootstrap -f
pkg-static upgrade -f pkg
pkg update -f
or if you are using ports
#note you will need to reinstall portupgrade first from the ports tree
portupgrade -af
or
portmaster -af
Enable the kernel modules which has been disabled after the first install and now are updated for the new kernel (drm-kmod, virtualbox or other custom build modules)
ee /boot/loader.conf
ee /etc/rc.conf
shutdown -r now