Shipping the iOS app — three architecture rewrites later
We started in React Native. Animations were janky and the keyboard-shortcut model (yes, mobile keyboard shortcuts — external keyboard support is a real feature) was painful.
We rewrote in Swift. Animations were buttery. The team velocity dropped by 60% because every feature now required a separate iOS implementation.
We rewrote *again* in React Native, but with Skia for the issue-board canvas. We get native-quality scrolling and animations on the parts that matter, and JS-driven UI for everything else. The math: ~80% of screens are shared with the web codebase; the 20% that aren’t are the screens that justify the cost.
Lessons: don’t use platform-specific code as a reflex. Use it where it pays — and instrument the cost of *not* using it before you reach for it.