Read the upgrade guide from top to bottom once, and tick the high-impact changes that your app actually uses. Ignore the rest until a test fails.

Upgrade on a branch with the test suite green first. Then bump the framework, run Pint if the coding standard moved, and fix the failures one file at a time.

Check scheduled tasks, queued jobs and anything that serialises a model. Those break quietly because they do not run during a browser click.