i don't remember when i started using mutt, but i sat at a table with michael elkins at LUG meetings, and tried to be funny by saying "i didn't write mutt, it was me"
i have been using mutt for more than a decade after that, until i discovered sup (supmua). for me one of mutts's big weaknesses (and that of every other commandline client) was that it could only keep one mail folder open at one time. at some point i had four instances of mutt running in parallel in multiple screen/tmux windows so that i could switch between folders without having to reopen each one.
sup fixed that by allowing me to open multiple views and keeping state while switching between them. it also replaces folders with tags and an extensive search interface with saved searches that can be treated like virtual folders.
i haven't looked back.
sup inspired notmuch, that brings the search feature to other mail clients (including neomutt) but i don't know if neomutt also keeps state between views. i am sticking with sup because of that.
I use notmuch on Emacs (yes, found it after seeing sup).
For those who don't want to use Emacs, notmuch has other clients: https://notmuchmail.org/frontends/
alot was one of the early ones and last I checked (years ago) was quite featureful.
For people who want something other than mutt, I strongly recommend something based on notmuch. It also comes with Python bindings so it's easy to write complex rules to filter incoming email.
Can notmuch or sup somehow store the tags on the IMAP server?
If I were to ever leave GMail (and there may be reasons to do so), it would be pretty painful for me to stop using tags. Folders don't cut it; many of my incoming emails have 2-3 tags. To have tags on my laptop but not on my phone (even in a rudimentary way) would be painful, too.
I can imagine that tags could be stored in some hidden / special folders, and a conforming client could be able to at least read them and synchronize with the local mail DB.