<story><title>Flutter is the most popular cross-platform mobile SDK</title><url>https://stackoverflow.blog/2022/02/21/why-flutter-is-the-most-popular-cross-platform-mobile-sdk/</url></story><parent_chain><item><author>lachenmayer</author><text>Flutter suffers on iOS because it completely takes over the render surface (ie. it renders everything using Skia), and doesn&amp;#x27;t offer any escape hatches for native components. In a way, this is an amazing approach: it completely sidesteps a lot of the platform-specific woes that plague React Native, and makes it much easier to support completely new platforms (ie. if you can get Skia to run on it, it can probably run Flutter).&lt;p&gt;But particularly on iOS, the native components have some &lt;i&gt;incredibly&lt;/i&gt; subtle behavior (eg. the &amp;quot;fling&amp;quot; gestures from UIPageViewController, the native modal animations, overscroll, etc.), and these are extremely difficult to get right.&lt;p&gt;React Native&amp;#x27;s story for native inter-op has recently become miles better with JSI, which allows native&amp;lt;-&amp;gt;JS FFI at much better performance than the previous approach. This has enabled libraries like Reanimated 2 (&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.reanimated2.com&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.reanimated2.com&amp;#x2F;&lt;/a&gt;) and Gesture Handler 2, which take full advantage of this and get React Native apps tantalizingly close to &amp;quot;truly native&amp;quot;-feeling.</text></item></parent_chain><comment><author>HillRat</author><text>My former firm put a lot of effort into Flutter as a preferred alternative to RN or native app dev -- including standing up a lot of onshore&amp;#x2F;nearshore&amp;#x2F;offshore experience -- but we never were able to to make it a viable alternative on anything other than small or trivial apps, due generally to performance problems, weird iOS corner cases, hard-to-debug crashes arising from deep within the framework, and sharp edges on their emulated components. From a governance perspective, we ran into difficulty rapidly spinning up new dev capacity relative to RN (where you can have a web developer productive within a few days, as long as they&amp;#x27;ve got a mobile dev running their pod to oversee integration and build). I&amp;#x27;d love to see Flutter become a strong alternative, but I&amp;#x27;m not sure Google is willing to drop enough of its NIH syndrome to meet developers where they are, rather than where they want devs to be; until then, it&amp;#x27;s a tech to push further out on the radar until it&amp;#x27;s more battle-tested, especially on iOS.</text></comment>
<story><title>Flutter is the most popular cross-platform mobile SDK</title><url>https://stackoverflow.blog/2022/02/21/why-flutter-is-the-most-popular-cross-platform-mobile-sdk/</url></story><parent_chain><item><author>lachenmayer</author><text>Flutter suffers on iOS because it completely takes over the render surface (ie. it renders everything using Skia), and doesn&amp;#x27;t offer any escape hatches for native components. In a way, this is an amazing approach: it completely sidesteps a lot of the platform-specific woes that plague React Native, and makes it much easier to support completely new platforms (ie. if you can get Skia to run on it, it can probably run Flutter).&lt;p&gt;But particularly on iOS, the native components have some &lt;i&gt;incredibly&lt;/i&gt; subtle behavior (eg. the &amp;quot;fling&amp;quot; gestures from UIPageViewController, the native modal animations, overscroll, etc.), and these are extremely difficult to get right.&lt;p&gt;React Native&amp;#x27;s story for native inter-op has recently become miles better with JSI, which allows native&amp;lt;-&amp;gt;JS FFI at much better performance than the previous approach. This has enabled libraries like Reanimated 2 (&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.reanimated2.com&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.reanimated2.com&amp;#x2F;&lt;/a&gt;) and Gesture Handler 2, which take full advantage of this and get React Native apps tantalizingly close to &amp;quot;truly native&amp;quot;-feeling.</text></item></parent_chain><comment><author>sarsway</author><text>A few years ago I would have agreed that the native subtleties must be a top priority for user experience, but these days I don&amp;#x27;t think it matters that much anymore.&lt;p&gt;Flutter&amp;#x27;s UI can&amp;#x27;t match native components exactly, but they do a very good job, and I don&amp;#x27;t think the vast majority of users would be able to notice the difference or cares that much.&lt;p&gt;The reality is, the native UI homogeneity is long dead anyway. Every app, website, brings it&amp;#x27;s own set of UI components and styling. It&amp;#x27;s all inconsistent and people are used to it.&lt;p&gt;It really does not matter whether your modal dialog is native or not, as long as it follows basic abstract UX conventions of looks and behavior.</text></comment>