I use a mono repo setup with “web”, “native” and “shared” using react and react-native. All of my logic and fetching code is hook based, and that can be 100% shared. I have to make a web interface and a native interface, but they are so different it’s nice to split on the UI. I wouldn’t want to have a desktop UI that I also show in an app, it just wouldn’t look good. All in all I probably share ~70% of the code. It’s all in typescript and really nice dev experience.
Maybe I’ve not been in the react native ecosystem long enough but it seems relatively painless. Granted I’m mostly displaying data, some icons, and buttons so YMMV