They all suck in their own unique way! For me I can tolerate the way Linux sucks, and for others it's something else. But I think we can all agree that bitching about operating systems is great catharsis.
Mac won't let me do what I want, and offers no explanation and the forums are filled with people telling me why what I want is wrong.
Windows has a way to do it, but it's hidden behind 17 menus from 8 eras if UI design, and it just won't shut the fuck up and listen to me. It has needless animations for everything, and trys so hard to be friendly that it's just infuriating.
Linux let's me do the thing. It gives no directions on how to do the thing, and if I do it wrong, it doesn't even tell me that things are fucked until six months later when I discover I accidentally told it to write the kernel logs to the bootloader and everything is on fire.
I prefer punching myself in the gonads to being called stupid or jerked around, so that's why I use Linux.
This is why KVM/QEMU with virtio drivers are massively helpful in using windows specific software without needing to dualboot on short notice. Proton also helps run many games on Linux, which is Windows only. Too bad the biggest strength is also a weakness. It's just a pain to set up and figure out problems that will happen from inexperience
Linux sucks for natural reasons. It's easy to tolerate because it's not trying to fuck with you, it's just a consequence of being a hodgepodge of software written by nerds for nerds. Windows sucks for malicious reasons. Microsoft is intentionally making it worse, to make more money, and that pisses me off. MacOS sucks because it assumes you're an idiot, and wants to protect itself from you. I may be an idiot, but that shouldn't stop me from breaking my own machine, god damnit!
If your app needs a lot of native modules Expo simply doesn't cut it. Developing iOS apps without running an iOS simulator is a lot of pain. In my early days of development my team actually tried this. There are too many quirks for each major mobile OS (Android & iOS) that makes it a lot of pain during testing if you don't at least try to run it on the simulator.