The old trade-off was speed versus quality: one codebase and a compromised app, or two teams and a great one. That trade-off has mostly dissolved, with a few honest exceptions.
Share the logic, respect the platform
Business logic, state and networking are shared. The last mile, gestures, navigation, platform conventions, is where we spend native effort so the app feels at home on each OS.
Where you still go native
Heavy graphics, deep hardware access, and latency-critical paths still earn native modules. Knowing when to drop down is the difference between a shortcut and a corner cut.
Cross-platform is a strategy, not a shortcut. Used well, users never know.
