6 ms·
They probably traded a really nice iOS codebase that had been maintained and improved upon for something that is going to end up with tons of special cases for
by iamleppert 10y ago
They probably traded a really nice iOS codebase that had been maintained and improved upon for something that is going to end up with tons of special cases for when the UI is running on iOS/Android etc and make it incredibly difficult to test, reason about.
Instead of improving the code on each respective platform, you end up with an inbred red-headed step child that shares the limitations and thorns of each, all smushed together.
Now, making a change that once was once limited in scope to a single UI on Android now has the potential to affect both apps in new and exciting (read: unpredictable) ways.
I've been down this path before. There's something incredibly satisfying about reusing code, but there's such a thing as too much of a good thing.
I'd like to see a case study done in a few years once the whiskers have had some time to accumulate on this codebase.
Steve Jobs knew about the perils of this development methodology which is why he specifically put his foot down on technologies like Flash -- which (let's admit it, folks), React Native really has more in common than we'd like to admit.
- taurath 10y agoAs a business decision, it's outsourcing expertise of the platforms to Facebook, which has plenty of resourses working on the problem. True it's been the holy grail as long as I've been a web dev, but outside of a bit of platform lock in risk it seems like it's come a long way with relatively simple apps like Instagram. It's trading expense for risk.
- iamleppert 10y agoDo you really think there's much expense to having two code bases for simple apps (as you said) like Instagram? If these apps are written properly most (all) of any custom logic is done server side and they are just presentational only. In addition, a good developer/engineer/team that's properly focused on mobile (the size of the team of Instagram) should have absolutely no problem supporting two native codebases.
- taurath 10y agoThink of it as not 2, but 3 different languages. Say your backend is node - your JavaScript developers can all work across the stack. You can keep code standards more or less the same across the whole company.
- bennyg 10y agoSo you haven't used RN then?
- LeoNatan25 10y agoI have, and most of what is written there I find correct. Wouldn't go as far as the Flash stuff. Mostly, it's down to the terrible web ecosystem and JS. Feds love it, but they don't know better. Native developers do, and most of the ones I've worked with have suffered a mental toll on having to work with RN. Now, is it an understandable from a management standpoint? Sure, especially at a company like Facebook, where there is a lot of fed experience. Does that make it a good technology? Not at all. It's a terrible compromise that has only one purpose - allow feds to develop on mobile. If only cross-platform mobile development was a concern, something like Xamarin is a lot more technologically sound, but still a big compromise.
- bennyg 10y agoFeds? Dude, I've been developing on the iOS platform since 2011 and Android not much later than that. I've developed in Xamarin, and RN has a MUCH better development toolchain and dev experience. I really don't understand the JS hate. I'm using typescript for RN development and I have had 0 problems so far. JS/TS dev velocity is just so much better than ObjC/Java. Swift is a huge step in the right direction.
- LeoNatan25 10y agoDo I really deserve the "dude" treatment? Not sure how you developed with Xamarin, or how long ago, but it most definitely does not have worse toolchain development. Starting with a proper IDE, to compilation, to native-interop, to performance, to actual base library that exists. As a side note, it seems http://subvertapps.com http://subvertapps.com is down.
- bennyg 10y agoThanks for pointing that out, forgot my old site was still in the profile. What do you mean by feds? That's still a very confusing statement. Switched off of Xamarin about 8 months ago and haven't looked back. My organization had a ton of problems with Xamarin, without honestly that much gain at all. We still needed specific devs for Android and iOS. Sharing component and state code has been an absolute boon in productivity and speed in getting a world class suite of apps out. That plus a React stack for Web means I can help out on Web with no ramp up, and vice versa.
- tracker1 10y agoA lot of the views mentioned were specifically poorly-performing web views... now they're well performing React Native views, and apparently sharing more code. React Native (node-style cjs or es2015 module) based applications don't have to be poorly written, or ill-tested. I think a lot of your bias is unfounded, since Steve Jobs saw only web applications on iOS initially.
- hakanito 10y agoI would guess one reason for Instagram to go the RN route is simply easier hiring. For every really good iOS/Android developer, there are probably 10 really good web developers that easily can pick up RN. As a web developer myself, it's a full time job to keep up with the JS ecosystem alone. I tried learning ObjC a few years back but gave up because of limited time, weird syntax and very slow feedback loop. Now I am stoked that I can finally build native apps with the web tech I spent so much time learning, and I don't think I'm alone in that regard.
- weixiyen 10y agoInstagram is the last group that would have problems hiring iOS and Android developers. I'm almost certain that's not the reason for the switch to React Native. The main reason to switch is that the user cannot tell the difference for their use case, and they get to iterate faster.
- Bahamut 10y agoI'm not sure if this is still the case, but I remember hearing a year and a half ago or so that the Instagram team was still pretty small then. FB is pretty lean in terms of number of frontend devs - at that time I remember being told the number was ~250 or so, which has probably grown since then.
- hakanito 10y agoYeah it's certainly not the main reason. Perhaps just a nice side effect, but I don't think it's a negative one
- rimantas 10y agoThe thing is that any good iOS/Android developer will know the platform they are working on while good web developer may have no idea what native SDKs offer and end up reinventing the wheel, badly.
- hakanito 10y agoGood point! However I would assume any (smart) developer would be aware of this and does the research, as always when in foreign territory..
- crispytx 10y agoI've never used React Native, but I have done a lot of messing around with Apache Cordova / PhoneGap. From my experience, you're probably better off just developing your apps the "standard way" with Android Studio or xcode. I'm sure React Native doesn't have the exact same problems as PhoneGap, but I bet there are some problems. If there weren't any problems, the iOS and Android codebases would be nearly identical. But that's just my opinion... man.
- oakesm9 10y agoI worked on a medium sized RN app for both Android and iOS which dealt with the camera, photos and the file system. It was 99.98% the same with only 50 lines of _my_ code difference between then (this obviously excludes framework and library differences).
- whatever_dude 10y agoThe problems are different. RN is not using a web view. It's not comparable at all to Cordova/Phonegap. It's really more like Xamarin with code running in a JS engine and with somewhat easier native code integration.