See the entire conversation

There’s a rumor React Native was abandoned in the main Facebook app. Anyone heard similar/different?
121 replies and sub-replies as of Jun 03 2018

Sources close to the matter have confirmed they’re moving away.
Wow that's big news
It’s also not true
Definitely interesting to hear. I didn’t even think/know they were using it in the main app. Curious to see what this does to RNs future.
This is not true.
Interesting. The narrative I’ve heard is that it was nixed from the main timeline, and generally moving away. Not an active rewrite. Only heard this around the main app.
Blood Donations, Crisis Response, Privacy Shortcuts, Access Your Information, Wellness Checks are recent projects in the main app mentioned in F8 keynote that use RN. (The whole Oculus Go mobile app as well.) More to come. RN hasn’t been used yet in News Feed but that may change.
Have any teams moved away or internally discouraged its adoption?
I’m not remembering any that moved away (but there may be some; dozens of teams have used RN so it’s hard to track them all). But you’ll find diehard native devs who dislike RN at any medium or large co, including Facebook.
You forgot about Marketplace. 😅
I was quoting features that decided on RN more recently. :) But yes, Marketplace is I think ~100 different screens, used by 800M MAP, and built entirely in RN (with no plans to change that).
Nymore on the Func front? Seems some Facebook OCaml love. Google is going head first into Swift for Tensorflow. I’m sure having a side effect free type safe code base with well thought out composition could benefit such a large codebase!? Fb working on their own func based tools?
It remains the case that the majority of professional programmers find functional programming hard to work with despite its many merits. I wouldn’t call Swift functional though.
One can argue JavaScript was one of the first functional programming languages. I believe Douglas crockford said that at a talk at google. Is there any move towards something more typed? First class TypeScript support for example? Or some proper nav APIs like what AirBnb tried?
If you look at recent commits, we’ve been actively investing in upgrading core React Native code paths to use Flow types. But this is for more reasons than just catching mistakes; also, cross-language interop.
Interesting. Is that something Facebook is looking to do more of?
Does that mean this is an inaccurate rumour or are there still legitimate reasons why Facebook might be reducing RN code for some other reason?
Oculus rooms and venues too! Heck we’re doing *3D* react native, and are only going to invest more.
would be immensely helpful for a write up on effort and cost reduction by switching to / investing in RN from a business lens, a big challenge for me (and assume many others) is battling the business view of sunk cost into iOS / Android and refusing to fund RN investment
of if you came across any other company that published such a topic, links would be appreciated! everything I came across so far has been almost entirely from a technical lens.
Not sure I can trust people who faddishly put their pronouns in their profile.
As @sophiebits said, it is not true. Here is a response from @yungsters, the manager on the React Native team -
Facebook continues to be deeply invested in React Native. That’s why things still break every now and then. Sorry.
. Also, here is a list of things that our team has been working on this half - youtube.com/watch?v=1hvQ8p…
Facebook continues to be deeply invested in React Native. That’s why things still break every now and then. Sorry.
There are leas than 5 people closer than @sophiebits or me to this matter. We are not actively rewriting anything, but definitely not moving away.
This is not true. Your sources do not seem close to the matter. The team I work with is responsible for the JS Infra around React Native. Next to actual products built with it, module growth has been linearly growing for years.
You can prove this yourself by downloading old and current fb apps and comparing the JavaScript bundle we ship on iOS or Android. We made significant improvements to how we compress but if you deflate and check the modules and code in it, growth is roughly linear and consistent.
Not sure if code is the most reliable metric. My impression of code growth is:
Instead, you just find-and-replace all references to “OldAPI” with “OldAPI_DO_NOT_USE_OR_YOU_WILL_BE_FIRED” and call it a day. Seriously that’s actually the policy. And then people use OldAPI for new stuff anyway because it’s not clear which of the 5 alternatives to use instead.
Of course, it’s just a proxy metric. Others have already pointed out the major products recently announced that were built on RN, including Marketplace which is used by more than 800m people. I was trying to point out you can verify this yourself by digging into the the app.
I may be one of the “sources” mentioned, in which case it’s true that I’m not that close to the matter having left 2 years ago. But Marketplaces was almost finished when I left 2 years ago, yet it still seems to be the only major RN feature anyone talks about.
If the RN team says FB hasn’t abandoned RN then I believe them, and if you read my timeline I’m as much an advocate for the use of RN (where appropriate) as a critic of it. But the external appearance is definitely that internal enthusiasm for the technology has cooled.
You aren’t the source. At this point my only takeaway is companies have politics.
Then stop retweeting random people *not at all* close to the project and start retweeting the actual people that work at Facebook that are saying that that's not true? Maybe?
Or disprove yourself by checking out the source. Otherwise the OP just looks like they are trying to widen the rift between native and web engineers and UI frameworks rather than bringing us closer together.
I’d probably look at daily merges against each platform over time, but I’m just spitballing.
We have that data too as @Vjeux pointed out but unfortunately I cannot give that to you as easily to verify what I’m saying 😄
Did the source mentioned why? And to what are they moving to?
No, but there’s no smoke without fire. Facebook has a history of just abandoning things.
Blood Donations, Crisis Response, Privacy Shortcuts, Access Your Information, Wellness Checks are recent projects in the main app mentioned in F8 keynote that use RN. (The whole Oculus Go mobile app as well.) More to come. RN hasn’t been used yet in News Feed but that may change.
"Sunsetting" in 3...2...1...
Blood Donations, Crisis Response, Privacy Shortcuts, Access Your Information, Wellness Checks are recent projects in the main app mentioned in F8 keynote that use RN. (The whole Oculus Go mobile app as well.) More to come. RN hasn’t been used yet in News Feed but that may change.
Wonder if they’ve still got some three20 buried in there.
Birdies told me they did until 2017. It‘s hard to kill!
The FB app is huge, and I’m pretty sure RN is still being used in various places (a classdump would verify this), but it was decided not to use it in the main newsfeed/timeline, which limits its usefulness since that’s the majority of what typical users interact with.
It is over 100MB bigger in size than GarageBand 6.0.5 for Mac OS X
FB has >100 engineers whose career progression depends on landing a significant new feature in that app every 3 months, so…
They update it a every week and almost ever time it get more obese with a few more MB added
Genuinely curious is that’s a loose definition of what progression is like/dependent on there? Always been curious what it’s like at a larger company with 100s of devs
The operative word is “impact”. You have to have “impact” to get a good review. How that is defined is team-specific but it’s much easier to define in terms of features shipped than fuzzier things like improving architecture or removing code bloat, so those tend not to happen.
Yup. Expect this at most orgs with 100+ iOS engineers, as most just copy whatever Facebook does.
Well, not all orgs...that sounds like an impossible thing to maintain.
Now you've got me wondering how many companies place 100+ engineers on a single consumer platform. The obvious answers are Google, FB, Amazon, and Microsoft - maaaaybe Airbnb/Uber/Netflix too. I'm guessing there are more old-school shops I'm not thinking of too.
But companies on the order of Microsoft, Google, Amazon, or Facebook are more likely to set precedents than to follow them. You get a whole lot of NIH when you have custom internal tech insulating engineers from the OSS community, and unlimited headcount to throw at problems.
Hmmm, on the one hand I kinda get it but I sense that would be frustrating. I enjoy having my impact felt so easily with a team of 2 that we have now, it would be hard to imagine work any different at this point
the incentive structure is so fucked at BigCos, even on small teams. Imagine three ppl sitting on a bug with 8 figure impact for 3 years, with one side saying "concurrency is hard!" and the other saying "dispatch_async(mainQueue) in network stream processing code is fucked"
even after demonstrating that you can just use a GCD queue as a lock and patch it in 2 hours, it's reported back up to management as hackery/witchcraft, and still exists today.
BigCo is my 2nd stop in tech, my first was running a startup for ~5 years. I hoped to learn how to deconflict disputes, I've observed repeatedly that deconfliction means highest ranking person wins, and the dispute is tabled until they leave
I reported a timeline bug to Twitter 5 years ago, it has not been fixed
I still have no concept as to how 100+ people are employed for the one mobile app, especially given how long it’s been around and how mature Facebook as a platform is. Wtf do they all do?
That is depressing since improving architecture, and removing code bloat can be very impactful.
New features don't always have to add bulk to an app. What happens with the Facebook app seems extreme to me (it's larger than most of the top 10 apps combined IIRC though that is an old statistic now) ¯\_(ツ)_/¯
It used to be around 30 to 80MB
There was a concerted effort for years to keep the size below the OTA download limit (100MB), which basically meant dozens of devs landing ingenious hacks to compress the code and assets as they grew. Then they gave up on that, and the app tripled in size within a few months.
Could it be the image format they are using?
The last person I knew who worked at Facebook told me it was basically because people just dump their code into it, separate of existing code, even if it's not a finished feature and that it's just full of dead code. But that was years ago. I'm curious why, too.
This is accurate. Also, there are so many devs and so much code that nobody knows what’s already in the code base, or what any given class does or whether it’s still maintained, so there are hundreds of duplicates of the same utility class or function.
Also, at FB when you invent a cool new API for an existing problem, you aren’t going to go and refactor the 500+ call sites for the old API so you can delete it - chances are, if you did that you’d just break something and piss off some other team you never even knew existed.
Instead, you just find-and-replace all references to “OldAPI” with “OldAPI_DO_NOT_USE_OR_YOU_WILL_BE_FIRED” and call it a day. Seriously that’s actually the policy. And then people use OldAPI for new stuff anyway because it’s not clear which of the 5 alternatives to use instead.
That sounds... disgusting.
I doubt it. At the peak of the size-reduction effort, FB removed almost all static images from the app. All assets were either downloaded at runtime or rendered in code. I daresay that since that was abandoned they may have gone back to just using PNGs or whatever though.
The app size is almost entirely due to the actual binary itself. FB was late supporting 64 bit because adding a 64 bit arch slice would have doubled the app size and put it over the OTA limit. They basically didn’t support it until Apple made it mandatory.
Some examples of tricks used to keep the size down: * Draw all images in code * Hash NSLocalizedString keys * Generate PONSO implementations at runtime * Disable Fairplay encryption so code compressed more efficiently * analyze built binary and de-inline duplicate assembly code!
Another neat trick that we use to keep the size down — use React Native.
React Native and electron are for startup and very small teams. I still dont understand what big companies gain out of it, with lots of risks and maintenance burden, and decrease in customer experience
I lolled at the comparison of one of the highest revenue generating applications in the world to... Garage Band.
ComponentKit has been powering the news feed for a while now, as far as I know. Pretty solid framework.
Yes, it was created specifically for newfeed. It’s not had much adoption outside of newsfeed AFAIK.
also 😉
The entirety of Workflow’s new editor is written in ComponentKit, so I use ObjC++ a fair bit! Happy to review if helpful
I meant *within FB* :-)
ComponentKit is getting adopted both outside the news feed and outside the Facebook app
Ah, then I stand corrected.
A *lot* has changed with respect to the Facebook app and React Native over the past two years.
Marketplace is written in React Native along with a bunch of other features twitter.com/sophiebits/sta
Blood Donations, Crisis Response, Privacy Shortcuts, Access Your Information, Wellness Checks are recent projects in the main app mentioned in F8 keynote that use RN. (The whole Oculus Go mobile app as well.) More to come. RN hasn’t been used yet in News Feed but that may change.
I wish there was a way to follow a specific tweet
Blood Donations, Crisis Response, Privacy Shortcuts, Access Your Information, Wellness Checks are recent projects in the main app mentioned in F8 keynote that use RN. (The whole Oculus Go mobile app as well.) More to come. RN hasn’t been used yet in News Feed but that may change.
Blood Donations, Crisis Response, Privacy Shortcuts, Access Your Information, Wellness Checks are recent projects in the main app mentioned in F8 keynote that use RN. (The whole Oculus Go mobile app as well.) More to come. RN hasn’t been used yet in News Feed but that may change.
When you break your own egg 👌🏻
Blood Donations, Crisis Response, Privacy Shortcuts, Access Your Information, Wellness Checks are recent projects in the main app mentioned in F8 keynote that use RN. (The whole Oculus Go mobile app as well.) More to come. RN hasn’t been used yet in News Feed but that may change.
That rumor doesn’t make any sense. Unless they have a replacement on tap.
Blood Donations, Crisis Response, Privacy Shortcuts, Access Your Information, Wellness Checks are recent projects in the main app mentioned in F8 keynote that use RN. (The whole Oculus Go mobile app as well.) More to come. RN hasn’t been used yet in News Feed but that may change.
*CHIRP* The sound of a million React Native devs...
Blood Donations, Crisis Response, Privacy Shortcuts, Access Your Information, Wellness Checks are recent projects in the main app mentioned in F8 keynote that use RN. (The whole Oculus Go mobile app as well.) More to come. RN hasn’t been used yet in News Feed but that may change.
Hmm..afaik they only ever used React Native partially, because RN came out long after the app was made. Other apps of theirs are full RN. But worrying if it means they're not going to support it :(
Blood Donations, Crisis Response, Privacy Shortcuts, Access Your Information, Wellness Checks are recent projects in the main app mentioned in F8 keynote that use RN. (The whole Oculus Go mobile app as well.) More to come. RN hasn’t been used yet in News Feed but that may change.
When I interviewed in August, they made it sound like no one uses it. They were all about ComponentKit.
There are as many weekly people committing code touching ComponentKit components as React Native components.
when you have a few hundred engineers they’re going to find some work to do, even if they have to keep inventing reasons
honestly not sure if this is serious or sarcastic...
Angular ionic suuperbbb
They were describing
I heard that like last year.
looks like your fears about it being abandoned were on the money
Anyway JS is corralled is doomed. ECMAScript standards for type and object declaration are trash. Also, Oracle owns JavaScript so it’s not a pure free and open source language. It’s only real strength is it’s monopoly on browsers.
I'm waiting to adopt whatever cross-platform solution Snapchat comes up with someday.
I've heard (actual) Reason Native is coming.
Litho and Component kit/Texture. There is nothing like, better app performance than native.
Would be a dream come true to many: “I was right to ignore this shiny new thing that’s RN, just keep doing what I’ve been doing....”
Stop spreading FUD please, RN is a very cool and useful project. Thank you.