<story><title>Building all of our new mobile apps using React Native</title><url>https://engineering.shopify.com/blogs/engineering/react-native-future-mobile-shopify</url></story><parent_chain><item><author>anon9001</author><text>Shopify is right to use React Native.&lt;p&gt;I build an app with React Native Web and we produce Android&amp;#x2F;iOS&amp;#x2F;web from the same code base with 3 developers.&lt;p&gt;No, it&amp;#x27;s not perfect.  Yes, JS can be awkward and confusing.  Yes, a truly native app built by expert platform-specific developers would be better.&lt;p&gt;But I&amp;#x27;m able to ship this product with less than half the team size I would need for native development.  JavaScript developers are cheap to hire, and they don&amp;#x27;t need to know any objc&amp;#x2F;swift&amp;#x2F;java&amp;#x2F;kotlin to build the product.&lt;p&gt;Our product is consistent, because it&amp;#x27;s the same code across platforms.  The business people paying us to build the app are thrilled at how quickly we can turn around features.&lt;p&gt;We&amp;#x27;ve been shipping this way for 2 years and I would strongly recommend it to everyone.&lt;p&gt;Also, before people jump in with &amp;quot;But RN is slow and bloated!&amp;quot;, it&amp;#x27;s actually not.  The performance is just as good as truly native and the binary is small.  The real downside is having the app not feel native, but only developers seem to notice.  Pragmatically, most apps are so bad that if your Android app has an iOS look-and-feel nobody seems to care.</text></item></parent_chain><comment><author>fingerlocks</author><text>&amp;gt; they don&amp;#x27;t need to know any objc&amp;#x2F;swift&amp;#x2F;java&amp;#x2F;kotlin to build the product.&lt;p&gt;I have a hard time believing this, and I&amp;#x27;ve been making apps on both platforms for &amp;gt;10 years. And I &lt;i&gt;love&lt;/i&gt; react-native. My latest day job is basically forking popular react-native packages, often rewriting them in Swift, fixing numerous bugs, and adding features specific for our company.&lt;p&gt;And all this experience has taught me that in no way can you expect anything but the most basic, ugly CRUD app from a JS dev. I have tried many times to assign &amp;quot;just&amp;quot; the cross-platform code to a javascript person and it never works.&lt;p&gt;What do you do when there are native build errors? Xcode needs to be upgraded, or parts of your RN modules are deprecated? Gradle files need to be actively maintained. There are features and UI behaviors that are difficult to grok without some background on the individual platforms (e.g., push-notifications). There&amp;#x27;s also &lt;i&gt;combinations&lt;/i&gt; of packages that can break your app- &amp;quot;react-native-sound&amp;quot; and &amp;quot;react-native-audio&amp;quot;, the sound and microphone packages respectively, modify the same singleton on iOS. Adjusting settings in one breaks the behavior in the other! How could a JS dev possibly hope to solve something like that?</text></comment>
<story><title>Building all of our new mobile apps using React Native</title><url>https://engineering.shopify.com/blogs/engineering/react-native-future-mobile-shopify</url></story><parent_chain><item><author>anon9001</author><text>Shopify is right to use React Native.&lt;p&gt;I build an app with React Native Web and we produce Android&amp;#x2F;iOS&amp;#x2F;web from the same code base with 3 developers.&lt;p&gt;No, it&amp;#x27;s not perfect.  Yes, JS can be awkward and confusing.  Yes, a truly native app built by expert platform-specific developers would be better.&lt;p&gt;But I&amp;#x27;m able to ship this product with less than half the team size I would need for native development.  JavaScript developers are cheap to hire, and they don&amp;#x27;t need to know any objc&amp;#x2F;swift&amp;#x2F;java&amp;#x2F;kotlin to build the product.&lt;p&gt;Our product is consistent, because it&amp;#x27;s the same code across platforms.  The business people paying us to build the app are thrilled at how quickly we can turn around features.&lt;p&gt;We&amp;#x27;ve been shipping this way for 2 years and I would strongly recommend it to everyone.&lt;p&gt;Also, before people jump in with &amp;quot;But RN is slow and bloated!&amp;quot;, it&amp;#x27;s actually not.  The performance is just as good as truly native and the binary is small.  The real downside is having the app not feel native, but only developers seem to notice.  Pragmatically, most apps are so bad that if your Android app has an iOS look-and-feel nobody seems to care.</text></item></parent_chain><comment><author>crystaldev</author><text>&amp;gt; No, it&amp;#x27;s not perfect. Yes, JS can be awkward and confusing. Yes, a truly native app built by expert platform-specific developers would be better.&lt;p&gt;This can&amp;#x27;t be understated. You can always tell when you&amp;#x27;ve opened a React-Native (or similar &amp;quot;portable&amp;quot;) app. It always feels like shit.</text></comment>