^^ This.
I'm a huge believe in shared code, but it's very difficult to have a fully-shared codebase without any quirks. I'd rather focus on making most of a project shared, and then invest time in smoothing over any interop issues to make the platform-specific things easily writeable, rather than trying to go all-in on a platform-agnostic solution that works for only a small portion of use cases.