I use fish because I have better things to do than tweak my shell configuration and debug shell plugins.
When I tried oh-my-zsh and prezto (I think?) they came with tons of plugins that performed badly and made it hard to get things done (specifically, they ran git status synchronously on every new prompt, which does not work well in a moderately large repo). Fish had similar features but wasn’t horribly slow, so I use it.
I use it in flatpak, and controllers work properly. The biggest downside to flatpak is that I don’t know how to debug it when things go wrong, but so far, nothing has gone wrong enough for me to move away from flatpak for the last 3 years.