Is there a reason fish isn't posix compliant? From my experience (which is rudimentary tbf) there are only detriments due to the lack of sh scripts not working out of the box.
Note how Plan 9 rc is also not POSIX.
Shell scripts have shebangs and work.
Exactly this - I feel like it is a common misconception.
Even without shebang? `bash the_thing.sh` -> done.
Writing a personal utility for myself? Unless it is dead simple I'll go with fish. It'll work with spaces in file names by default, I won't need `while < read`, etc.
Writing anything I need to distribute? sh or bash
I've been using fish for years and years and never once have I thought "oh man I wish this was POSIX" because POSIX was always 3 key strokes away if I really needed it: `sh<CR>` (which, I did not, unless I had to write a portable script and needed a repl)