71 ms·
Building all of our new mobile apps using React Native
- chadlavi 7y agothe example react native code they give in this image would error out: https://cdn.shopify.com/s/files/1/0779/4361/files/ReactJSvsReactNative.jpg https://cdn.shopify.com/s/files/1/0779/4361/files/ReactJSvsR... Text has to be in a <Text>
- bil7 7y agooh no, how will anyone understand the graphic now?
- ericlewis 7y agothey changed it I think to be more incorrect, you can't put text in a View.
- harrisonjackson 7y agoYou cannot see the imports. import {Text as View} from 'react-native'; All good!
- chadlavi 7y agothis is truly evil
- stickydink 7y agoIt seems they fixed it! https://cdn.shopify.com/s/files/1/0779/4361/files/React_Native_Blog_Post_2.jpg https://cdn.shopify.com/s/files/1/0779/4361/files/React_Nati...
- Nextgrid 7y agoAirbnb said the same back in the day. Guess what happened then? https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a https://medium.com/airbnb-engineering/sunsetting-react-nativ...
- hota_mazi 7y agoAnd in a couple of years, "Why we are moving away from React Native at Shopify". Not slamming React Native but the sensationalistic headline. Anyone with a bit of experience in software should know better than making this kind of silly proclamation about the future of your software stack.
- chrisan 7y agoMan first thing I thought of. Seems like if you try to proclaim the future you end up eating your words
- skinnyasianboi 7y agoMy first thought was the Airbnb article "React Native at Airbnb" https://medium.com/airbnb-engineering/react-native-at-airbnb-f95aa460be1c https://medium.com/airbnb-engineering/react-native-at-airbnb...
- liamcardenas 7y agoI understand how examples like this stick in people's minds, however, just because one company decided not to move forward with a technology doesn't mean that all companies will do the same. Facebook has continued to use it, Microsoft has begun using it heavily, Twitter uses it on the web[0], Discord has been very happy with it -- and countless other examples. [0] https://github.com/necolas/react-native-web https://github.com/necolas/react-native-web
- deleted 7y ago[deleted]
- elicash 7y agoI don't think anybody read the headline and assumed that no other technology would ever be used at Shopify.
- seanalltogether 7y ago
- newfeatureok 7y agoHonestly I think the future of mobile will just be... mobile websites. What's missing until regular websites have parity with mobile apps in functionality? - Accelerometer and all sensor support (some of these are already supported on various browsers on various OSes) - Background support - Bluetooth - WiFi - Better notifications - etc. Sure there will always be a need for native, but 99% of apps don't need any of that stuff, really. Though I suppose both Apple and Google have an inherent interest to gatekeep. Looking at my own most used apps: - Messenger - Mail - White Noise - Teams - Google Maps Literally all of them could be implemented as responsive pages with acceptable performance. There are a small number of companies that don't bother with mobile apps, Craigslist being the most notable of them until a few months ago. Part of the issue though is that the app stores give you a lot of visibility and to get that visibility you need to be in the app store. Sure you can use a web view, but in some ways that's even worse than just a responsive website because now you have to deal with the abstraction of your site that is a WebView. Not to mention the temptation to try for "best of both worlds".
- privateSFacct 7y agoLook at your most used apps - none of them are "responsive pages". That should tell you something. Folks who have tried responsive pages haven't done that well. I am curious - what is the most popular responsive webpage on iphone would people say? I'd like to check out the current leader in this space.
- hopia 7y agoGoogle?
- akmarinov 7y agoI use Facebook's as I don't want Facebook's grubby hands using private APIs on my phone to get every bit of data they can. At least the browser limits them.
- edgyquant 7y agoPlus the facebook app eats battery life. IME my phone battery lasts all day unless I install facebook: then it lasts a few hours.
- secondo 7y agoArguably the biggest concern with React Native is that it is controlled by a single entity, Facebook, and that they are not one of the leading mobile platforms who from a business perspective have strong incentives to ensure the future of their respective app eco systems. Facebook's incentives with React Native are somewhat unclear. This is a big, yet often unspoken, reason companies are vary of depending on React Native for their mobile stacks. With more large companies such as Microsoft, and now Shopify getting behind React Native those incentives will have to please a larger group and should become much more aligned with mobile developer communities at large - and not just Facebook's desires. If Shopify manages to play an active role in the development of React Native and expand the project beyond the sole control of Facebook then React Native will become a much more viable option for companies who for political reasons have refrained from using the technology.
- malloreon 7y ago>>> Facebook's incentives with React Native are somewhat unclear I always figured this conversation happened: 1: "We have all these engineers who write javascript but users are switching to native apps. what do we do?" 2: "We could retrain them all." 1: "That would be expensive and time consuming." 2: "We could fire them all." 1: "Also expensive and time consuming." 2: "Wait, what if we made it so you could write native apps in javascript?"
- zarmin 7y ago1: "Great idea. Which version of Electron should we use?"
- deleted 7y ago[deleted]
- malloreon 7y agoThe second/third paragraphs of your comment could be find/replaced Shopify for Airbnb from 2-3 years ago and fit right in.
- oakesm9 7y ago
- glisom 7y agoGood luck, lol
- xyby 7y agoIs there a reason that the web is not a target of react native? It seems somewhat insane to have a cross platform approach and leave out the biggest platform of all, the web. Or - looking at it the other way round - what approaches are there to take a working pwa website and turn it into an app? What advantages over such an approach can react native bring to the table?
- chadlavi 7y agoreact-native-web exists: https://github.com/necolas/react-native-web https://github.com/necolas/react-native-web
- hn_throwaway_99 7y agoMaybe you've heard of ReactJS?
- rpeden 7y agoIt is, and it's even mentioned and linked to in the article.
- harrisonjackson 7y agoThere has been a large push to support web as a target in react-native by expo. https://docs.expo.io/versions/latest/ https://docs.expo.io/versions/latest/ Depending on the complexity of your app - expo is the best place to start with react-native. Their managed workflows allow you to write in 100% javascript w/ a lot of the native libraries already linked an exposed in JS. If you need something they haven't bundled already then you can eject and have a good starting point. Expo web is still fairly new but they seem to have prioritized it as highly as support for Android and iOS.
- yesimahuman 7y agoThe Ionic team recently released React support so you can build a PWA using React and target iOS, Android, web, and electron. Uses Capacitor under the hood for full native access. It’s been getting a lot of usage since the release: https://ionicframework.com/blog/announcing-ionic-react/ https://ionicframework.com/blog/announcing-ionic-react/
- sandGorgon 7y agoAnyone know where React Native stands in modern development - especially when compared to Flutter and the upcoming Compose. All the native frameworks are also React inspired. I personally love the work done by Airbnb for its Android MvRx framework. Again, React inspired
- jamil7 7y agoReact and it's model are great. React Native on the other hand is leaky, heavy and you'll spend a bunch of time fiddling with packages, upgrading them, tracking down weird linking issues and ultimately writing some Objective-C / Java code to debug / glue / fix whatever native API you're dealing with. Thats only from my experience though. I would much rather the Compose / SwiftUI direction.
- gnusty_gnurc 7y agoThis is exactly my experience too. It’s an absolute nightmare juggling three package managers at once.
- Eric_WVGG 7y agoI had a similar experience. I was also frustrated by the Redux stack, which was odd because I quite like it on web. But in RN, I kept thinking over to how networking and data work in Cocoa Touch and Swift and wondering why we were building these byzantine solutions to problems that iOS already had built-in, elegant solutions for. Now I’m digging in to SwiftUI, which seems to take best from AppKit and React... I don’t think I’ll be doing another RN project.
- deleted 7y ago[deleted]
- gargs 7y agoTranslation: we don’t see mobile experiences driving our growth.
- ziftface 7y agoWhy is that an equivalent statement?
- LeoNatan25 7y agoIf mobile was important enough for them, they would have invested in proper mobile development. Clearly it is not.
- gargs 7y agoCompanies invest in growth areas. Mobile experiences are driven largely by interactive native elements using the latest platform specific API.
- canistr 7y ago"In order to best serve our retail merchants and learn about React Native in a physical retail setting, we decided to build out the new POS natively for iOS and use React Native for Android." Unbelievable, really. The previous paragraph literally mentions the importance of performance. facepalm
- wdb 7y agoWhy do they use RN for Android but not for iOS?
- KaoruAoiShiho 7y agoCan anyone from Shopify directly address the points brought up in the Airbnb posts.
- Androider 7y agoShopify CEO expressed his thoughts on the matter quite succinctly https://twitter.com/tobi/status/1222551057798090752 https://twitter.com/tobi/status/1222551057798090752
- KaoruAoiShiho 7y agoCool, though I'd argue *too succinctly. Go into it please, for the sake of the community.
- dmamills 7y agoThe Shopify CEO is going to be pretty disappointed when he finds out all of those diamonds are actually just npm audit fixes, dramatically out of date packages, and strange platform specific behavior regardless of the "write once, run everywhere" tagline.
- irjustin 7y agoI'm always scared of these headlines for companies who aren't greenfield. Shopify is a perfect case for RN. Write once deploy both platforms. The issue that gets glossed over is for existing apps that have to do the data and abstraction layer on top of native codes. It starts to become prohibitively expensive to maintain the native, RN, and data layers unless you're willing to rewrite the native side. Airbnb fell into this problem[0] and so did my old company. I love RN for what it is and can do, but big companies that hop on and then are forced to hop off because of internal politics makes it a difficult case for RN because then it becomes "look, RN didn't work out for Airbnb or Shopify..." I hope for the best of luck and success to the RN engineers. [0] https://medium.com/airbnb-engineering/react-native-at-airbnb-f95aa460be1c https://medium.com/airbnb-engineering/react-native-at-airbnb...
- ronlobo 7y agoCurious to hear more about their deep dive into Native, Flutter and React Native as possible technology choices. Hopefully, React Native is not a nosedive ;)
- k__ 7y agoFlutter and React-Native are different directions, I think. For higly customized UIs (think Ableton Live, Photoshop, Excel, etc.), I'd say use Flutter, because of the non-native rendering, it will look the same everywhere. Otherwise use React-Native.
- oakesm9 7y agoExactly this. They are very different systems. Flutter renders onto a "canvas" and has a completely custom implementation of "native-like" views for each platform. They need to reimplement everything about platform views from scratch. React Native lets the native OS render actual native views, but lays them out and controls their properties using Javascript. You get the native behaviours "for free", but you do sometimes end up in the lowest common denominator position.
- k__ 7y agoYes. The common denominator isn't as low as one might expect. I'd guess at least 90% of all apps could be easily done with React-Native.
- SlowRobotAhead 7y agoSure. But what if the entire world doesn’t want to learn JavaScript? What if you don’t already know HTML, CSS, and JS? RN makes ZERO sense at that point. As a C developer, man, Flutter looks pretty damn logical!
- k__ 7y agohttps://mobile.twitter.com/LinguaBrowse/status/1220695261246382080 https://mobile.twitter.com/LinguaBrowse/status/1220695261246...
- fredgrott 7y agoHahaha ahaahah gee what happens when Android Fuchsia hits oem devices this year? CES surprise coming..
- Androider 7y agoIn the unlikely event that Fuchsia ever makes it out without being strangled by the rest of the Android organization, or someone high-up waking up and taking a look at it (eye of mordor style)... absolutely nothing? For the next 5-10 years at least as Android devices are slowly replaced in the marketplace with Fuchsia through device turnover rates alone. You think Android version upgrade stats are abysmal today? And you want to replace the whole base OS? Good luck with that.
- wvenable 7y agoI don't understand why so many large companies use platform abstractions. At a certain size you're big enough to have an iOS team that develops natively in Swift/ObjC and an Android team developing natively in Kotlin or Java. Developing directly for the platform, with expertise in that platform, is a proven long term bet. Screwing around with platform abstractions seems much riskier. The situation is a lot different if you're a small organization (or individual) and just don't have the resources for platform specific experts.
- Androider 7y agoHeadcount is the biggest expense in almost all companies. Larger companies also have larger and more complex apps, so while a small company may have a small iOS development team, large companies have massive iOS development teams. Massive team * number of platforms = serious money. You also get into all kinds of platform and feature parity issues. "Why can't we do X on Android but only on iOS?", "Well because they're two different teams, with different PMs, developers and release schedules. And please don't ask about the web team, who are in <different city>". Using abstractions you can have one massive "core" team, and several smaller platform expert teams. On the face of it, it makes sense.
- wvenable 7y agoBut developer headcount doesn't scale to the size of the installed base. Whether you have hundred-thousand users or a million users, you don't need a larger development team. Once you have a reasonable-sized team that can make the app, you don't need any more developers, no matter how successful your app is. Having different teams for different platforms might result in a slightly larger headcount my point is that risk isn't worth that meager benefit if you can afford it. You're still going to need platform-specific knowledge, and then the abstraction knowledge, and you're still deploying to multiple platforms! You also don't need to let the technology choices drive the team structure. You can share a huge number of resources between iOS and Android including planning, management, assets, etc. Sure you're building two different apps but you don't need to keep those teams in different cities.
- sandGorgon 7y agoI think one of the coolest things that Shopify is doing is this: We’re sponsoring Software Mansion and Krzysztof Magiera (co-founder of React Native for Android) in their open source efforts around React Native. and We are working with Discord to accelerate the open sourcing of FastList for React Native (a library which only renders list items that are in the viewport) and optimizing for Android. Basically RecyclerView for React Native.
- LeoNatan25 7y agoWithout synchronous view layout, it's not really possible to have a truly recycling view without many warts. We've (Wix) been hacking at this for years, and it's not possible. You either block the UI or view flash for the user if fast enough scrolling is performed. Facebook engineering promised synchronous layout will come at some point, which will open the door to that.
- liampronan 7y agoIs Wix moving away from React Native at this point?
- LeoNatan25 7y agoNo
- liampronan 7y agoThanks for the info - I’m a big fan and very appreciative of Wix’s RN contributions!
- rhodysurf 7y agoTheyve said Fabric comes out probably mid 2020 I think, which I am hopeful for
- sandGorgon 7y agoWhat about Flipkart's https://github.com/Flipkart/recyclerlistview https://github.com/Flipkart/recyclerlistview ?
- Despegar 7y agoApple really needs to start using the stick more with respect to the inferior-to-native cross-platform frameworks. I hope that's the strategy after SwiftUI matures.
- anon9001 7y agoShopify is right to use React Native. I build an app with React Native Web and we produce Android/iOS/web from the same code base with 3 developers. No, it's not perfect. Yes, JS can be awkward and confusing. Yes, a truly native app built by expert platform-specific developers would be better. But I'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't need to know any objc/swift/java/kotlin to build the product. Our product is consistent, because it'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. We've been shipping this way for 2 years and I would strongly recommend it to everyone. Also, before people jump in with "But RN is slow and bloated!", it'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.
- wdb 7y agoDon't know last time I tried React Native and wanted to use some cool feature of iOS. I either had to write my own RN plugin in Swift/ObjC or wait for someone else to do it.
- npo9 7y agoYou say that like writing plugins is hard or undesirable.
- harrisonjackson 7y agoExactly - this is native code that would need to be written either way, right?
- freehunter 7y agoThat's what I don't understand when people criticize frameworks like React Native... "I didn't like that I had to build 15% of the app in native code, so I ditched RN and now have to write 100% of the app in native code, but twice and in two different languages"?
- tombert 7y agoI keep putting off learning React Native, largely because I don't really do a lot with JS anymore. I know that there exists ClojureScript bindings to React-Native...does anyone here have any experience working with them?
- TheMagicHorsey 7y agoI wonder if Shopify did their homework and looked at Flutter. Flutter seems to meet their objectives more than React Native does. And as an added bonus, Flutter is easier to reason about, has edit and continue, and is more performant. Perhaps the use of Dart instead of Javascript was a deal killer though?
- htormey 7y agoThey talk about looking at flutter in the article.
- SlowRobotAhead 7y agoThey use the word once to say “we did a deep dive”. It’s never mentioned again.
- Androider 7y agoIt would be pants-on-head insane for a company like Shopify to go all-in on Flutter. Is Flutter going to be around 10 years from now? Can Shopify support Flutter on their own if nobody else is using it 10 years from now? I don't mean that technically the license would allow them to, but can they in practice field the manpower and skills to do so across all the platforms they need.
- SlowRobotAhead 7y agoI don’t know much about RN or Flutter; but why is it “insane” that flutter cant exist in 10 years but RN will still be king? Why can’t RN die within 10 years? Because it’s been around since 2013 vs 2017? Because you like one more than the other? I have concerns about Google’s commitment to Dart/Flutter, but I’m not sure one scenario is pants on head insane and the other just fact.
- Androider 7y agoReact Native could very well fall out of favor in the next 10 years, but the amount of companies using it today means there is a sufficient base to share the maintenance burden with, of which Shopify could potentially carry a large amount because of the significant overlap with the rest of their tech stack. If Google becomes disinterested in Dart, could Shopify step up and maintain it? Seems unlikely, and why on Earth would they want to, it's nowhere close to the rest of their competencies? If for one technology you can extrapolate from today out to the next several years at least, and the other's path is effectively entirely opaque and at the whim of another party, it's a company-killer level risk to bet on the latter. Put it this way, if Google drops Dart/Flutter tomorrow, Google will be just fine as they have very little skin in the game so to speak. Technical reasons one way or another are completely overshadowed by the business risks, as the landscape is today (which will change over the years, but Shopify is making their decision today).
- deltron3030 7y agoStrange that they didn't mention hiring as a reason, it's maybe even the main one. React is for the frontend what PHP was for backends in the 2000s, that's what most frontend devs know. Svelte would be a better fitting comparison to Rails in 2004.
- jammygit 7y agoWhy do they begin justifying by talking about 70% of buyers using mobile? Completely off topic
- SlowRobotAhead 7y agoIsn’t that them starting by declaring that mobile is really important to them so they didn’t take this choice lightly?
- hugey010 7y agoI thought the cool thing to do was declare React Native dead for your org, not the new hotness?!? I try to re-evaluate my opinion of the mobile ecosystem monthly, and would love to know how people agree / disagree with my rankings: 1. Just make a web page 2. Native iOS & Android 3. Flutter 4. Some ordering of remaining cross-platform tools depending on requirements. (React Native, Vue Native, Xamarin, Ionic, Titanium, PhoneGap, Kony...)
- pjmlp 7y agoI have a different order: 1. Just make a web page (specially since many apps are just pretty CRUD ones) 1.1 For certain devices WebGL/WebAssembly can eventually also be an option 2. Native iOS & Android 3. Native iOS & Android with server side driven code for the business logic (maybe even UI layouts) 4. Native iOS & Android for the views with C++ for business logic 5. Your point .4 regarding cross-platform tools I don't have high hopes for Flutter, with Chrome and Android teams also pushing for their own solutions, and its dependency on Dart.
- hugey010 7y agoTotally agree with your 3 and 4. I've had, to my surprise, the most success with Flutter. (I've built multiple React web apps and spent way longer attempting React Native.)
- jamil7 7y agoApollo Server and it's associated iOS and Android clients can make your 3rd option really easy to pull off as it generates your CRUD logic and model code.
- jdmg94 7y agoif only they could figure out their caching...
- trevyn 7y agoReally depends on what you’re making. Personally, I find RN much more productive than native iOS, for the areas where it is applicable. The hot reload is quite magical. Also, you can push JS updates without needing to update the app in the store, which is a huge plus.
- bfrog 7y agoGood luck, you'll need it
- wdb 7y agoI am always wondering what the difference is between writing three differents targets, iOS, Android and Web using RN (even Flutter is a better choice imho). Basically you want to share the business logic between them. You still need to spend time to write UIs for iOS and Android which following interaction paradigms of the platform. Personally, I can't stand iOS apps that look like Android. Currently, I am happily working on a project where I write all the business logic in Swift and share between the web app (WebAssembly) and the iOS and Android app. The only bit that I customise is the UI part. I quite enjoy this approach. (I have to admit for me writing native mobile app in JavaScript/TypeScript feels wrong. Guess, I don't like that language enough)
- arbhassan 7y agoMeanwhile Shopify's CEO. [1] [1]https://mobile.twitter.com/tobi/status/1222551057798090752 https://mobile.twitter.com/tobi/status/1222551057798090752
- sixstringtheory 7y agoOof, not classy. I think every developer has had the experience where you think you're so close to the finish, just one more thing... and then hours, days, weeks have gone by. How can he be so sure they're going to strike it big? This is a pictographic sunk cost fallacy.
- amikazmi 7y agoI read it as "they didn't continue long enough to get to the benefits, as we did", i.e, they already reached the diamonds.
- sergiotapia 7y agoWe're moving away from react native at Papa. Too brittle, too cumborsome to iterate with, feels slow and every build required a prayer and small sacrifice to Cthulhu. We're using Ionic 4 now with capacitor, the dev workflow is much better, literally testing on the browser with autoreloads when code changes. Couldn't be simpler. So far I like it a lot. We're using React so it's just like writing a SPA, only Ionic has a ton of UI elements out of the box like tab navigation.
- fmakunbound 7y agoGood for you Shopify, but I fully expect you’ll switch to some new hotness in a year or two.
- The_rationalist 7y agoWhy not ionic react? https://ionicframework.com/blog/announcing-ionic-react/ https://ionicframework.com/blog/announcing-ionic-react/
- SlowRobotAhead 7y agoSubset of a subset would be the first reason I would come up with.
- aikah 7y ago> Why not ionic react? https://ionicframework.com/blog/announcing-ionic-react/ https://ionicframework.com/blog/announcing-ionic-react/ React Native uses the Native Components of the platform for UI. Thus Native. Ionic React is basically a web app, this is Ionic with React instead of Angular. So basically React Native == use native GUI components. Ionic React = uses HTML/CSS in a webview embedded in a Native App, just like Phone Gap/ Cordova, Ionic is just a framework on top of HTML/CSS, React Native is not.
- The_rationalist 7y agoMost react native apps have a custom UX but needs native plugin access. This is the point of ionic react.
- aikah 7y ago> Most react native apps have a custom UX but needs native plugin access. This is the point of ionic react. No, most React Native apps use the Native platform UX, that's the point of using React Native. As for plugin access, well I don't see how Ionic React solves anything, since a plugin by definition needs to be developed in the native language of the platform (Java or Swift).
- Andrex 7y agoWhy was the title changed? It differs from the original article's, which I believed was the guideline.
- OzzyB 7y agoShopify should stick to making ecommerce sites and leave the mobile engineering evangelical space to those who's businesses are dependent on mobile and have the necessary experience. In short, the future isn't React Native, unless you have a time machine that will allow you to go back and rewrite it.
- Hates_ 7y agoSo even though they develop apps that have millions of downloads or that businesses rely on for their in-store point of sales, you don't consider Shopify qualified to speak on mobile development?
- OzzyB 7y agoNo, I don't consider an established tech company with "millions of downloads that businesses rely on" choosing a webstack devkit for their mobile development serious.
- apl002 7y agoAll I can is, as a RN Developer, I love it. I love being able to use 1 language for both app platforms. The RN community is amazing. Many of the comments here talking about outdated packages were likely burned by RNs early days when it was <0.40. RN has come along way since then. Its been a while since I ran into an issue updating packages or couldn't find a lib for something I needed. There is also great resources when you want to handroll something yourself. Migrating an existing native stack to RN might not be the answer, but anyone looking to get their startup off the group should consider RN. Its fast development and converting a React web dev is super easy.
- tannedNerd 7y agoAnd I as a mobile native developer for both android and iOS on the other hand now know to skip talking with Shopify for future jobs as I hate RN and the performance hits and non standard UI it introduces. So we both win!
- tekstar 7y agoThe sad thing is, all* their tier 1 mobile apps are still ios/android native and are not going to be rewritten, so they still need native devs. But after this blog post native devs will be a lot harder for them to find and hire. * except for POS for Android which apparently has been rewritten, but not yet released, in RN.
- burnJS 7y agoI guess I'm old, but I can't believe that many people shop on their phones. You have limited screen space and your ability to input data efficiently is limited. It just seems like a really poor medium for researching a purchase. Guess I'm a dinosaur.
- TulliusCicero 7y agoI shop on my phone, mostly Amazon. Probably not for serious/expensive purchases, but there's tons of things that don't qualify for that. I buy a lot of kids' books, for example, I just look at the cover and description, read some reviews, and pull the trigger. Lots of little electronics too, like cables/adapters.
- neurostimulant 7y agoMany online marketplace give discount when you purchase via their mobile apps. Kinda make sense as they can harvest a lot more data from installed app (compared to web) and spam push notifications daily to drive up sales, so they push hard to make people shop from their mobile apps instead of desktop web store.
- awinter-py 7y agolow quality of tooling in mobile has been a reality forever and the vendors are not only unwilling to change, they've doubled down on poo-flavored buildsystems that are impossible for the community to fix this stuff is life or death, and also impossible without giving up on native: > React Native on both iOS and Android and shares 95% of the same code > less crashes on iOS than our native iOS app > an Android version launched > team composed of mobile + non-mobile developers. (impossible on native because of the multi-day process required to build an ios app for the first time) > The team also came up with this cool way to instantly test work-in-progress pull requests. You simply scan a QR code from an automated Github comment on your phone and the JavaScript bundle is updated in your app code updating is illegal on the app store, but it's hard to kick out shopify. this is a shot across the bow
- trevyn 7y ago>code updating is illegal on the app store This is not true, the restriction is to “download, install, or execute code which introduces or changes features or functionality of the app.” (And, of course, internal users & builds can do whatever they want.)
- tannedNerd 7y ago"(impossible on native because of the multi-day process required to build an ios app for the first time)" What??? how is it multiple days to build an app for the first time? It takes minutes and if you are being pedantic by including App Store review it tends to be under 24 hours for new apps and under 6 hours for app updates now. Plus you can distribute to your own team instantly through TestFlight.
- awinter-py 7y agoinstalling the right version of xcode & getting required libraries -- my experience may have been particularly bad because of the ios 13 / swift 5.1 release, but the fact that these tool versions are linked to the xcode version is the root cause here
- 7y ago
- 22byebye 7y ago<< Flutter vs React Native: A detailed Comparison 1. Performance Mapping down the performance is the best way to find the ideal framework for mobile app development. Flutter is ahead when it comes to performance among other frameworks is due to Dart. Dart code is compiled to native machine code. And also the JavaScript layer is helpful when integrating with native components and eliminates the JavaScript bridge. React native offers exceptional performance for developers while developing an application in a native environment. But developers sometimes face issues while running the hybrid application architecture. On the other hand, Flutter allows developers to reuse the existing code. Flutter is in the leads in performance in comparison to React Native which uses JavaScript Bridge. >> Source: https://dev.to/agiratech/flutter-vs-react-native-what-to-choose-in-2020-49ej https://dev.to/agiratech/flutter-vs-react-native-what-to-cho...
- ppeetteerr 7y agoI'm surprised no one is mentioning this: "At the beginning of 2019, we did a 6-week experiment on our flagship Point of Sale (POS) app to see if it would be a good candidate for a rewrite in React Native. We learned a lot, including that our retail merchants expect almost 2x the responsiveness in our POS due to the muscle memory of using our app while also talking to customers. In order to best serve our retail merchants and learn about React Native in a physical retail setting, we decided to build out the new POS natively for iOS and use React Native for Android." So it's okay to build Android and less important apps using RN, but their flagship iOS POSS is off limits?
- Despegar 7y agoThat really just says it all doesn't it? It's basically an admission that the use of cross-platform frameworks is worse for customers/users, but they're going to ignore that to optimize for their own software engineering org.
- apl002 7y agoyou act like whatever something is right now is the same in the future. It's quite possible they see RN as the future for all products and easing there way into things. Maybe they are struggling to find Java/Kotlin devs and have a surplus of Swift devs. So no, that does not really just say it all.
- sandofsky 7y ago> Maybe they are struggling to find Java/Kotlin devs and have a surplus of Swift devs. Based on AirBnB's experience, now you need to find React Native devs in addition to Java devs.
- sb8244 7y agoI assume it's easier to find a handful of skilled Android developers rather than staffing an entire engineering org with them. From my experience with RN, you do need to get into the native bits, but most of the development will be not native. So the number of skilled native device engineers required should be less.
- ameixaseca 7y agoReact Native sounds like a mistimed bet now. Maybe 3-4 years ago, but at this time? There are a number of better alternatives. I spent some time working on a RN project, and even though the whole idea of declarative interface, state update, etc is interesting, it is not exclusive of RN - and there is the whole rest of the story: RN libraries are a mess and usually buggy, there is virtually very little compatibility between native and web, and.. have anyone ever tried updating a RN codebase? I remember we had to recreate the full project and copy the files manually because everything was broken beyond any hope, this after spending a full week trying to fix the build. For Shopify seem that even a PWA could fit, and would be much more compatible, reliable, etc. By the way, one of their justification is "in-house know-how", which I heard so many times before... This is usually how you justify crappy decisions by using inferior technology and then spending 2x the effort to try to fix it. I hope it doesn't happen with them, but it does like like that's the way they are heading to.
- Androider 7y agoIt's interesting how differently you can look at things. I would consider the best time to start a React Native project to be sometime next year, and after 1.0 ideally. It's exactly when you jump on the bleeding edge that you end up with cuts and bruises. For every new shiny thing you'll be trading your current known problems for a set of unknowns and the inability to even Google-search for the solution. Let the tinkerers do the bleeding, and only once they've buffed the sharp parts can you as a company like Shopify start to bet on it. It seems module and library handling was just revamped in React Native (not a user myself yet, perhaps next year), so thank you for your sacrifice. Developers picking up RN today will hopefully have a smoother experience.
- ksec 7y agoI wonder if that mean Rails will be moving to React Native as well? DHH [1] said they will reveal a major new technical direction for building web apps. [1] https://twitter.com/dhh/status/1214962255785119744 https://twitter.com/dhh/status/1214962255785119744
- BharathMG12 7y agoWe did multiple experiments on server driven UI for our mobile apps. 1) Using native app - Sending layouts in JSON and using Flipkart Proteus library in Android to render them. This only enables appearance changes and not behaviors. So we really didn't server driven LOGIC. 2) Using Flutter - Wrote the wrappers for Flutter widgets. Those wrappers basically just converts JSON to Flutter widgets at run time. And also enabled actions to be server driven. The complete app was made server driven using this approach. The only problem is, too much of abstraction in the client made the code base very messy and hard to reason. 3) Using React native - The biggest selling point for using react native is, codepush feature. We didn't have to write dumb client wrappers which expects JSON from server. We can just write normal JS code and deliver it to client devices without making app update. This enables really rapid experimentation for product features. We are currently developing this.
- yagodragon 7y agoThe web and its ecosystem are huge. The browser is essentially the new OS and no matter how complex and quirky js, react and the rest of the tools are, we're gonna stick with them for a long time. Big technological advances like PWA's, WASM and rendering engines like servo and webrender are only gonna shorten the gap between native and web UI experiences. Look at what happened to the desktop. Native UI development became a niche and even apps like photoshop are now just websites(figma) or electron apps. This is eventually gonna happen to mobile development as well. There will be no need to create native apps for most cases and no need to use those centralized app stores to "install" apps on your device. That being said the web is not quite there yet and that's why solutions like react-native and flutter exist. I don't believe that react-native is the future. Many people have explained in great detail why the idea and the execution behind RN are just flawed and why it makes development hard and complex. Heck, it doesn't even eliminate the need for native developers. React-native is just a transitional tech we'll use until the web and PWA's become good enough for 95% of the cases. The future of RN is the Web. On the other hand, flutter and dart seem to solve all of the problems we have with UI development. It's an amazing tech that combines all the best ideas from QT, flash, java swing, delphi and react-redux in one project that is completely free and open source. It's what we've always dreamed existed in the UI world. The development experience is great and designers seem to love it as well. Despite its advantages, flutter is still a huge bet and i can't see a world where everybody writes in Dart. If I had to make a guess, I'm still betting on the web in the long run and hope flutter captures a small market share among frustrated mobile/web devs and designers. I just can't see react-native anywhere in between.
- jiofih 7y agoI’m really eager to hear how they deal with data in their RN apps. To me that’s always the place where the most complexity and bugs lay hidden.
- yoshimiagava 7y agoThis is amazing team for spotiteam and all users! Congrats!
- mleonhard 7y ago> The first is a tooling team that helps with engineering setup, integration and deployment. The second is a foundations team that focuses on SDKs, code reuse and open source. They have a whole team to set up tooling for React Native. I wasted many days trying to do this work on my own. They also have a whole team for evaluating 3rd-party libraries that provide functionality missing from React Native, such as letting the user hide the keyboard on iOS. I wasted weeks on this and finally gave up on React Native and switched to Flutter. I think React Native needs some attention from user-focused PMs and engineers before it is ready for adoption by small teams.
- tr33house 7y agoHow has flutter compared?
- xeonoex 7y agoNot OP, but I've tried all of the big SPA frameworks (not specifically react native though) and I decided to use flutter for a non-trivial side project and I don't ever want to touch the big SPA frameworks ever again. Flutter is also fast, pretty lightweight, and good on battery. It feels native on iOS and Android. I have little Android development experience (side project years ago) and no iOS experience. It's easy to setup, install, and it just works. I develop on Windows and Mac with a .NET Core backend and communicating via GRPC. Deploying the backend to a CentOS server. No issues running anything on Windows, Mac, or Linux, surprisingly. Whenever I have to use node, everything randomly breaks when switching environments. (Maybe I'm just bad with node/webpack and all that, but there is way too much I have to know to just build something).
- Thorentis 7y agoI'm considering using Flutter (instead of Ionic which Ive been using for mobile up till now). In terms of Node breaking when switch platforms - are you syncing the node_modules folder between machines somehow? Don't do that. Doing "npm install" will sometimes install binaries specific to a platform that won't work across them. Put node_modules in your.gitignore, and sync between machines using version control rather than something like Dropbox. I used to just put the whole project in Dropbox but ran into too any issues between Mac/Windows.
- topherPedersen 7y agoAs a solo/indie developer I love React-Native. Attempting to develop for Android and iOS at the same time is absolutely daunting. Maybe someone out there can do it, but it was simply too much for my brain to handle. But with React-Native I don't have to worry about any of that. I just write code and it doesn't matter what device people happen to be using.
- mellosouls 7y agoThis is an interesting read and may be the full story, and a completely justified strategy. But at the risk of sounding cynical, I'd be interested in any political motivations - if he's a new VP, it wouldn't have been unheard of for unnecessary swashbuckling Transformation Projects to be kicked off under the new regime for no obvious reason. Complete conjecture, I have no inside knowledge, just have seen this happen time and time again.
- brailsafe 7y agoIt happens all the time. At a large corporate place I was working frontend at, our dpmt manager spent almost no time with the teams and all time concerned with outout metrics. When his boss looked to be retiring and the prospect came up to get his job, he started a new year by—seemingly with no knowledge of how things were working—by shuffling all the teams based on how he thought people should be organized. He then kicked off two or three major tight deadline high budget projects with those new teams, and proceeded to take a vacation. Needless to say there was a lot of turnover, I got terminated, projects failed, and he got his promotion somehow.
- mellosouls 7y agoYep. I'm more than a little sceptical these days when these big projects are announced - especially with new managers.
- garrettlarson 7y ago> As a contrast, none of the Top 10 most valuable Y Combinator companies use Java; largely considered the battle tested enterprise language. I’m not sure what this is based on, but Airbnb uses Java pretty extensively.
- ChrisMarshallNY 7y agoI used to be a cross-platform framework skeptic (Disclaimer: I have written a LOT of cross-platform, low-level code over my career). I am less of a skeptic, nowadays. I think that it makes good business sense for most connected apps. Also, the quality and stability of the frameworks has increased. It really stinks to spend two years training your team on a framework, only to have said framework suddenly float to the top of the tank, belly-up. React seems to have settled in for a long stay. It's kicked its shoes off, and grabbed the remote. That said, it won't affect me. I tend to write stuff that controls devices, so my code needs to be pretty "bare bones" native.
- mahgnous 7y agoSo they decided to join what the rest of the world has already been doing for years? Why announce that?
- mahgnous 7y agoSo they decided to do what the rest of the world has already been doing for years? Why announce that?
- dana321 7y agoI'll just leave this here. https://devrant.com/rants/320156/i-hate-react-js-with-a-fucking-passion-it-sounds-great-on-paper-but-once-your-pr https://devrant.com/rants/320156/i-hate-react-js-with-a-fuck...
- deleted 7y ago[deleted]
- jaimex2 7y ago15 years in the industry has taught me to always have an exit strategy. React is the cool thing now but it wont be in 5 years. Make sure you can decouple and reuse your APIs with whatever comes next. And always remember that a native app will always give the best experience. Cross-platform tools aren't perfect and sometimes the cost of 'write once debug everywhere' is higher than 'write everywhere' especially if you suddenly need to do something niche.
- tebbers 7y agoI don't know about that. React was the cool thing 5 years ago, and 5 years later it's still the cool thing judging by how many jobs are out there for React and React Native developers.
- hrpnk 7y agoShopify is associated with e-commerce shops. It would be much bigger news if this would be about an app for core e-commerce journeys, but Spotify builds Apps mostly for the merchants or in-store use cases where customers physically are already paying for a product. Performance matters less in such use cases as merchants or customers are already locked-in in the purchase flow and a drop out would be more costly for them (no sale). This is in no way comparable to AirBnb use cases. The use cases they migrated to React Native are rather simple - a list of orders, which customers will choose to use in order to get the status of their order - the customer's need is very high and optimization here does not bring much business value (conversions). The POS use case is stronger due to the expected responsiveness that is required, though it can degrade slowly over time and will not be noticeable (boiling frog) like in phones.
- jiofih 7y agoSo what? A customer facing e-commerce app is nothing but search, a list of results, filtering, a product page, photo gallery and checkout forms. RN has no trouble hitting full native performance all around (I’ve watched multiple apps built in this space).
- adechywakilidod 7y agoNotification
- fredgrott 7y agoLet's see directly couple UI front end to OS updates...yeah that will really speed up cross mobile platform development won't it? Or one could decouple completely which is Flutter's main mission as a front end framework Sounds like some CTO-type in over their head
- Jemm 7y agoWhy emulate facebook’s app strategy? Their apps are a UX nightmare Accessibility is horrendous as is power draw.
- linusjs 7y agoThere is really no technical reason why mobile can't be predominantly web-based now. Electron applications like vscode and figma show that you can make great software without any native code. Combine this with the fact that newer mobile phones are extremely fast, it just doesn't make any sense from a technical perspective why we need to use native all that often anymore.
- nojvek 7y agoI’m a bit bullish on ReactNative. Well on UI controlled by JavaScript that work a consistently across different platforms. I acknowledge Flutter from Google is making rounds but Dart simply doesn’t have the ecosystem and reach that Javascript does. Standard web html always seems to be quite laggy in mobile browsers. Basic things are quirky like the location bar is conditionally visible when scrolling up but not scrolling down. This changes the viewport. Web rendering doesn’t seem to be as efficient and rich as native UI.
- adechywakilidod 7y agoJ'aime beaucoup l'application merci