We have a ReleaseNotification entity that can be configured by admins front-end. The entity has an association with accounts, so we can keep track of who has already seen a notification and who hasn't:
When there's a new update, our functional admins make a release notification, which is then shown to users upon logging in. After they dismiss the notification, it is never shown to them again (until there is a new update). The notification contains a link to a page with our release notes, so users can read them if they want to.
Theoretically you could even use an after startup microflow to add a new entry to your release notes page, so they're always up to date with whatever version you pushed to an environment.