A feature I enjoy using myself is not known to many users, as I found out last weekend. Besides undo with as many levels as you like, Vim also offers storing the undo information in a file. So you can exit Vim, reboot your computer and still undo changes you made. See the help for undofile.

– Bram Moolenaar (Vim maintainer)

If you use Neovim (and you should), just add set undofile to your init.vim.

Otherwise, add this to your vimrc:

" Keep undo history across sessions, by storing it in a file.
set undolevels=1000
if has('persistent_undo')
silent !mkdir -p ~/.local/share/vim/undo > /dev/null 2>&1
set undodir=~/.local/share/vim/undo
set undofile
endif