I think Fish is fantastic, but just can't use it because so many things rely on either Bash or Zsh. I've settled for a modest ZSH setup with Prezto and I'm pretty happy.
In my years as a dev I haven't found many true dependencies on Bash/Zsh. For Ruby, rbenv and other solutions worked. For Python, there was virtualfish to make virtualenvs work properly. Although now pyenv works out of the box with Fish. Other than that, simply adding a shebang to scripts is sufficient.
That being said, I don't go and convert the shell of all my AWS instances to Fish. I just keep my local shell as Fish.
I've been using fish for years now and cannot remember the last time something broke because it required bash but was run by fish.
One thing I do differently than most is I don't make fish my system-wide default shell. I leave that as whatever the system default is. Instead I just make fish the default shell within the terminal emulator I use.
Never had an issue with it, and it is much easier to setup as well.