More to a specific point: I haven't had much of an issue with fish's subshell/backgrounding control. That doesn't mean that there aren't issues, just that my interactive use doesn't trip into them.
I will note that you can write an async git prompt using nothing but fish itself, which I consider an advanced use case for a shell. Check it out: