There's a cross-platform option that will give your users the best experience but will also be the most amount of work: make a separate - native - UI per platform.
By this I mean put as much of your core logic and functionality as possible into a shared library, and then make a separate Swift/WinForms/whatever codebase for the UI of each native platform you want to target. Each UI app would call into your shared library.
There is a bit of duplicate work in making separate UIs, but the UX is far superior (IMO) and you have the advantage of not needing workarounds or plugins to access platform-specific features.