The cross platform experience will never match the native experience. Think about on the desktop. The only cross platform apps that behave natively on Mac, Windows, GNOME (and derivatives) and KDE are apps tha have completely separate front-ends for every platform. Firefox is an ok example of this, although it in a way forms its own platform rather than integrating with its host, still it pulls it off better than other cross-platform apps. The Transmission bittorrent client is perhaps a better example, it has at least 4 mature front ends: gtk, qt, cli and os x. This is only feasible for a little free software project like Transmission because its UI is fairly simple, it has a list of torrents, a settings dialog and a properties panel.
Most apps that try to be cross platform just use a UI toolkit that acts as a cross platform compatability layer. Qt, GTK, Swing, WxWidgets and Tk all fit the bill. The result is that the app doesn't look good or integrate especially deeply into any platform, except sometimes with the platform the the developers personally use.
There are few exceptions to this rule. One is Sublime Text 2+ which is built on Qt. Without any customization, its theme looks OK, but doesn't match the design language of any platform, and its integration with its host platform is non-existant, everything happens within the sublime text window (no notifications or system tray/menubar widgets, no quick-view previews in Finder or Nautilus, etc). It's possible to improve integration by intstalling a custom theme which lets the user override a lot of the UI design, including the margins and padding, and plugins are written in python and can access a lot of host platform features.
If you want a native experience, you have to write a native app. You can share your business logic by linking to the same C++ code or in the future maybe by using react native and sharing the same non-view code. But your UI-layer has to be tailored specifically to the host platform in order to look good.