React

Why I have a problem with React the library and spend a lot of time talking to my therapist

UPDATE: just to clarify that any implication that Dan Abramov was having a Twitter break because of a tantrum was unwarranted. It seems he was taking a self-care break after dealing with all the awfulness of Twitter. We feel you, Dan.


So, #ReactGate has become a thing. What's been fomenting for a while blew up last week, with two prominent White Men In Tech having little tantrum Twitter breaks, and a wonderful woman of colour working as a dev/designer feeling she is no longer welcome in our industry and planning to leave as soon as it's financially possible.

I'm not going to try and describe the events that led to these particular events - at the time I was happily off Twitter and am dependent on reconstructions of the whole thing. Suffice to say it has raised serious issues about how the tech community tolerates and allows the far right and white supremacists within its ranks.

But I do want to present my own particular reasons for not enjoying the principles and philosophy behind React and how I do not therefore find the React community a pleasant place. These reasons are partially related to the events above. But not totally.

Some definitions

Let me set out some of my base assumptions and definitions before we start.

  • React is an inherently client-side technology.
  • While it can be used purely on the server (I often use it this way) you lose most of the core functionality, turning it into a simple renderer for JSX components, offering no fundamental advantage over any other server-side language.
  • Client-side means that a sparse HTML page waits for a JS app bundle download and parse before the app renders most markup into the browser from JS, on the device itself.
  • Yes, I know you can use universal rendering and hydration of components to get faster initial page speeds.
  • But that does not remove the fundamental bias that a mostly client-side stack entails.
  • As in, now the computational and rendering cost is borne by an individual users hardware and browser.
  • There is a reason that Facebook (ha!), Twitter, Reddit, AirBnB, Uber, whatever, push you to use their native apps over their browser apps: because the performance of a browser app sucks compared to a native app.
  • (Fucking come at me if you disagree and I'll show you Instagram or Twitter web apps running like snails on my mid-budget Android phone purchased just this year.)
  • Mobile devices simply don't have the CPU and memory to cope well with client-side JS apps.
  • React-based client-side apps run moderately well on laptop and desktop devices, as they generally have more CPU and memory available.
  • If React was used as one of many technologies, purely for non-critical user journeys, augmenting server-side rendered markup, then I don't think most of the issues we have seen of late would arise.
  • However, React has been pushed not just as a nice little "V in the MVC".
  • It has become something more. Now people expect entire sites and apps to be written in pure client-side JS, and that this JS is React (and some friends).

A vague and not necessarily correctly ordered timeline of React and the Web post 2013 and why it angers me

I'm not going to even bother writing this up into paragraphs. This is flow of consciousness. You get my feelings here.

  • React emerges blinking into the world, fluids dripping from its rapidly-hardening carapace.
  • In classic fashion, the most privileged 1% of developers (as in those with the most free time - young, white, able-bodied men) saw the newly released React and fell over themselves to be in on The Latest Interesting Technology.
  • In a previous age (The Web That Was) these code trends would burn out after a year or two. A new library would appear and everyone would change direction and stampede to use that instead.
    • Developers are fickle creatures who get lured by the shiny very easily. (Don't deny it)
  • However this particular trend had a nuclear-powered fucker behind it: Facebook, Inc.
  • Facebook has always been an engineering-led company (oh, it's not just an enabler of genocide - it's so much more!).
    • As such it feeds on a steady sacrificial stream of young psykers developers that it can use to make money before they burn out or fuck off.
  • Someone, somewhere, realized that releasing and popularizing the library that they used for their own projects would likely get them more more sacrificial developers to feed the Golden Throne of the Emperor of Mankind their insatiable engineering turnover.
  • By making their framework popular, they would have:
    • a) increased visibility in the tech community
    • b) have a pre-trained source of candidates for their engineering department.
  • So Facebook made React open-source.
  • This release coincided with a great new intake of developers into the community, as dotcom 2.0 actually managed to find purchase and the industry took off. Developers were in demand throughout the industry and development was seen as a lucrative career.
  • These new devs were heavily trained by a combo of corporate-sponsored online materials, blog posts, video courses, and by the formation of bootcamps.
  • The Web That Was, a place of chaos and malleability, was suddenly seen as an impediment to this process of training sacrificial developers, as it required acknowledgement of variety and empathy with the infinity of technology and human combinations.
  • The Web That Was was seen as needing a lot more artisanal work.
  • Big Corporates twirled their non-existent mustaches and realized that it's easier to train people to use to work on a factory production line, learning a set of APIs, than it is to train them to see the Web as a precious resource that is inherently chaotic in nature.
  • BTW, I'm not blaming developers in all this - under Capitalism you always need to follow the money, and web development suddenly became a well-paying career. It was always going to happen.
  • Good aspects of this movement (such as the design systems community, "Composition over bespoke design", excellent testing of components) get lost behind the Lust For Engineering.
  • The commodification of the Web is fueled by React.
  • As each month passed, more and more people suffered FOMO-induced panic, and decided to move over to React.
  • In synchronicity, recruiters saw that this weird React thing was being spoken about by their tame developers. They started asking for it as a matter of course.
  • Web development, at least on the 1% of the loud bleeding edge developer crowd, suddenly went from a "soft" design-based discipline, to a "hard" engineering-based discipline, fueled by the engineering-focused React library, and the engineering-focused and corporate-sponsored community that surrounded it.
  • The old Frontend Developer roles, that covered user-focused design and coding, were suddenly forced to crystallize into either Frontend Engineer or Designer/UX roles. "Hybrid" roles were suddenly rare in the 1%.
  • The 1% of the industry found "validity" in becoming engineering-focused. A role that was coded as Feminine and looked down on by "serious" engineers became Masculine and something to aspire to.
  • Questions about "what technology is suitable for this particular project?" suddenly became replaced by "let's use React - everyone is using that and it saves us worrying about that weird frontend stuff".
  • Progressive Enhancement got almost wiped out as a concept. Dealing with older-devices and people in network-poor situations were seen as hindrances.
  • The web community suddenly found itself being told how to do things by Thought Leaders and JavaScript visionaries. What was a plurality of technologies and platforms suddenly became an attempt to consolidate everything under a single platform.
  • React expanded out from the Web.
  • Android and iOS developers, who had until now been enjoying their lives, suddenly found their careers being targeted by React Native.
  • Why pay for expensive native platform developers when you can use JavaScript and React for everything?
  • Native platform developers suddenly find themselves being forcibly retrained as React Native developers.
  • The concept of "We Live In A Meritocracy" becomes firmly implanted in the community.
  • Tech, and knowledge of heavily corporate-sponsored libraries like React, are seen as ways to get further in ones career, and get on top of the great steaming capitalist shit-heap.
  • Learning React is seen as a meritocratic liberator.
  • The hold of React on the general web community tightens.
  • Meritocracy results in the erasure of any kind of Intersectional thinking.
  • Minority voices find it hard to be heard when they speak about perceived problems in the React and the wider tech community. ("He can't be problematic - he answers a lot of questions online and doesn't use racial epithets!")
  • We get to the point were questioning or mocking the React library is seen as Uncommunity like.
  • Criticisms of React become attacks of the Community. Criticisms of the community become attacks on React.
  • This is a natural outcome of The Social Media Age. Polarization of views is inevitable, as Centrism crumbles.
  • As the general tech community is validated for being more masculine-coded, masculine behaviors emerge and get stronger.
  • People fight back.
  • Codes of Conduct emerged.
  • uh oh, Shaggy. React doesn't have a code of conduct. (unless you count it glomming off the vague and not very useful Facebook Code of Conduct).
  • We reach today, where two prominent React community leaders quit Twitter rather than deal with accusations of emerging white nationalism and machismo-fueled poor behavior.

I've been talking about this rise of this awfulness for the last 3 years. Lots of other people have been screaming about it. It's not new.

The popularity of React is fueled by corporate-sponsorship, a tech industry seeking validation by becoming Hard and Masculine, and aggressive Capitalist principles (validation through work, market dominance, a continuous supply of skilled Labor) that result in Things being placed before People.

Sound familiar to anything?

I'm not gonna say what. You figure it out. (Hint: think white shirts and garden centre torches)

Fight back

  • Support the plurality of technology.
  • Fight for the user at every step.
  • Advocate for using the most simple solution to solve any given problem.
  • Push back. Say "no".
  • Become craft professionals. Don't become factory workers. (yes, still labor-based, but I don't think anyone is going to listen to me about instigating a global revolution against capitalism and ushering in a post-capitalist age)
  • Amplify stifled voices - Black, Indigenous, and people of colour, women, trans people, disabled people, etc. (The concept of meritocracy is inimical to the lived reality of Intersectionality)
  • Stop playing on Codepen when there's shit to be sorted.

Ah fuck it. Here's my thoughts on React - why I've found it and what it represents problematic even before recent events.

https://www.sonniesedge.net/posts/react

Webmentions

  • ❤️ (Likes) x 756
  • ♻️ (Reposts) x 387
  • 💬 (Replies) x 104
  • 🔖 (Bookmarked) x 1
How the hell are you getting all these replies on here, Charlie?

Ah, sweet summer child. It's time to send your own Webmention!

Replies

Rachel Lawson 🇪🇺

Really interesting and possibly quite important blog post about the over-use of React by @sonniesedge

2019/08/27, 07:54, CET

let = DCotton💫💥

that was a quite a good read actually 👍

2019/08/27, 08:02, CET

Matt Shaw

ah great read. Thank you. I've felt really uneasy at the abandonment of progressive enhancement but felt like a lone voice sticking up for it in recent workplaces.

2019/08/27, 08:07, CET

Alice

I really wish frameworks and especially react weren't so ingrained. It feels like if you're a self taught beginner and aren't playing along with them you have it way harder to get your entry into the industry.

2019/08/27, 08:13, CET

Lucas Krebs-Pinto

Have you written before on "Become craft professionals. Don't become factory workers". I'd like to read more about this idea.

2019/08/27, 08:15, CET

nick

You're going to have people in your mentions to tell you how progressive enhancement is possible despite the fact no one does it. Note: Rehydration is not progressive enhancement

2019/08/27, 08:15, CET

Tane Piper

Thank you for writing this. Part of me was going slightly worried that it was just me seeing this trend but thankfully not. It's been entirely offputting for me choosing a tech stack, which in itself sounds stupid

2019/08/27, 08:18, CET

Tane Piper

FWIW the day I used "React Bros" in a tweet this happened, and was happily educated that it isn't the entire ecosystem - but it does have a real image issue for sure twitter.com/marcysutton/st…

2019/08/27, 08:22, CET

Sebastian Kleinschmager

Strong words. Have never used React, tbh. Just had a quick look. I'm curious (partly because I liked Angular and somehow stuck to it): do your thoughts apply to Angular as well? I don't know the specific history, but it's also backed by a corporate giant and is "bleeding edge"?

2019/08/27, 08:25, CET

Andrey Savchenko

often when I read React(–adjacent) posts it feels like... authors don’t even *see* the web. their perspective amounts to web being React deployment platform. anything else is “wrong” or “old”.

2019/08/27, 08:27, CET

Dave 🧱

Thanks for sharing this flow of consciousness

2019/08/27, 08:40, CET

Baerree

"the tech community tolerates and allows the far right and white supremacists within its ranks." Shit!!!! I knew it!! Adolf became a react developer after hiding in Argentina. And now the Nazis plan their world domination through the web. You are on the right scent here1!!11

2019/08/27, 08:44, CET

Steve Lee

I missed that sounds nasty and I don't care to know. Sounds like the usual case of a few twats getting out of order but as you say there are other broader concerns.

2019/08/27, 08:44, CET

@gal

That need to politicize everything

2019/08/27, 08:53, CET

Ioannis Mavroukakis

and another deserving follow in my timeline.

2019/08/27, 08:59, CET

Sebastian Silbermann

Really appreciate you including how we got here. This will help anybody who's new or not been paying attention enough. Aside: First time I see your page and I love the design!

2019/08/27, 09:13, CET

sacha harmsworth

lovin' the War hammer 40k references

2019/08/27, 09:15, CET

Adrian Wix

Honest question what about Vue?

2019/08/27, 09:25, CET

I am Schulz

Your 40k references are on point. The internet has been moving from chaotic to people-crushing empire for a long time.

2019/08/27, 09:31, CET

Stefan 🇪🇺

The following quote (abridged) resonates strongly with me: "the most privileged 1% of developers (those with the most free time - young, white, able-bodied men) saw React and fell over themselves to be in on The Latest Interesting Technology" I stopped trying to follow them. 1/2

2019/08/27, 09:36, CET

Hanzy

Use Vue. It’s fun and inviting

2019/08/27, 10:01, CET

Shahrukh

Speaking of Facebook, here's Zuck hugging a genocide enabler.

2019/08/27, 10:02, CET

NiKo`

At first I was like oh boy what is this again. After reading the post, it makes a lot of sense, so thanks for summarizing and framing all this so clearly. I'm happy to have moved away from using these libs, much happier in the #elmlang niche atm. Small welcoming communities ftw.

2019/08/27, 10:06, CET

Christophe Porteneuve

I somehow managed to miss the entire triggering event/thread for this, but Charlie's post sure is important.

2019/08/27, 10:09, CET

Siavosh Zarrasvand

@sonniesedge Good post. I'm about to finish my first web app using Rust, Actix, Askama, and WASM. Your post is the nail on the head. It brings up the "React way of NOT doing things", I could never get used to that.

2019/08/27, 10:42, CET

ira.

charlieeeeeeee!! As always 🔥🔥🔥🔥🔥

2019/08/27, 10:55, CET

Ali

Political and social ideologies being preached under the umbrella of technology. React got popular because it was the first to provide a practical working implementation of web component, something the industry was seeking for years to be built in the browser.

2019/08/27, 11:25, CET

Jason Bowerman

I don’t understand all the emotive name calling, either. You’d never meet a more considerate and modest developer than Dan.

2019/08/27, 11:29, CET

Clément Romier

Thank you very much ! I'm sure a lot of web workers agree, but communities pressure (at all levels) leads a lot of us to self-censorship. And the problem is larger than just React, and the consequences are ecological too.

2019/08/27, 11:29, CET

Michael Spellacy (Spell)

Spot on! Thank you for writing this! I am a proud member of The Web That Was. :-)

2019/08/27, 11:47, CET

Albert

Thank you. The WWW has always been been about web standards to connect the world. Not about Zuckerberg, Page, Brin or Bezos. Fuck it.

2019/08/27, 11:47, CET

ḅḷäṅḳ

Great points, it's refreshing to see a React analysis that takes into account: 1) It's parent company, it seems devs are great at compartmentalizing 2) The general socioeconomic system, along with its symptoms (meritocracy, dehumanization, monopolization, among others)

2019/08/27, 11:50, CET

nullvoxpopuli

Not that I'm defending react, but more the web in general, apps don't have to be slow on mid range Android devices. They're slow cause either: - no one cares to focus on performance - business won't prioritize, cause measuring value add to the business from performance in hard

2019/08/27, 11:56, CET

Jesse O'Brien

You could replace "React" with any other tech or language that's ever been invented and your rant would be the same. The obviously-and-completely-forced racial/minority/sexism comments don't lend any credence to your observations, instead of comes off as just angry at the world.

2019/08/27, 12:05, CET

Chris

Is this satire? I honestly can't tell.

2019/08/27, 12:12, CET

Benjamin Krall

Just read your post. I want you to know that you’re way off the mark. I disagree with literally everything you wrote. And I think you’re causing more damage than good you think you’re doing. Blaming other people is a bad way to live life.

2019/08/27, 12:28, CET

Mike Ekkel

"Fight for the user at every step.", I've only been on the technical side of things for a couple of months now and I can't fathom why building products doesn't revolve around the user as much as designing the products does.

2019/08/27, 12:39, CET

Katie Sylor-Miller

I think your timeline is missing the huge role that HN & reddit (notorious cesspools) played in the rise of react. I had barely heard of it when the young white male bros on my team were breathlessly excited to undo all my decisions as tech lead. Left a bad taste in my mouth

2019/08/27, 13:08, CET

Jan Fischer

I like React and especially JSX. But no one is stopping you from choosing other technologies.

2019/08/27, 13:31, CET

Tiago Alves

This is why we can't have nice things... People will problematize everything until we go back to the stone age. I don't use React, but React is a good thing! Brought far more good than evil to the world.

2019/08/27, 13:39, CET

Ben Kolya 🇪🇺🏳️‍🌈

I'm principally a React developer but I _love_ this. There's uses for it, sure. It's a powerful and easy to use library, with a solid team behind it. But we shouldn't have a monopoly.

2019/08/27, 13:51, CET

Luke John Steadman

This is fantastic, thank you. “Stop playing on Codepen when there's shit to be sorted” had me laughing 😂

2019/08/27, 13:59, CET

Kevin Renskers

100% agree with you. I’ll always fight for native mobile apps!

2019/08/27, 13:59, CET

Michael Beckwith

Has me a bit hesitant to jump into the React community when trying to stay relevant in web development. Sounds like more I could do well in the PE areas though.

2019/08/27, 14:02, CET

Cory Martin

"Meritocracy results in the erasure of any kind of Intersectional thinking." I want to hang on to that. Thank you!

2019/08/27, 14:04, CET

Kevin Renskers

What is reactgate though?

2019/08/27, 14:06, CET

Wiseau

IIRC, react was pitched (at F8) as the right way to do data binding and that angular and ember's two-way data binding was wrong. I don't see this pitch from other frameworks. Also re: flow vs typescript. I recall flow cult bashing ts saying it doesn't capture some edge cases.

2019/08/27, 14:29, CET

Elihú Garrett ⚙️🌾

Great read! Currently working as a React dev and since then always felt it so unethical and corporativist.

2019/08/27, 14:41, CET

Cameron Shaw

Thanks for sharing! I'm a solo freelancer (barely follow the online communities you mention), but watching the rise of React has been profoundly frustrating, and difficult to articulate. It's just so unnecessary, and forced on us all. I still craft all my html lovingly by hand.

2019/08/27, 14:41, CET

Ivan Čurić

Honest question: I'm an avid hater of React, Facebook and the entire ecosystem surrounding it. It's an aggressive monoculture which is prioritizing rich devs over users, and can run okay-ish on the latest MacBook Pro or an iPhone.

2019/08/27, 14:44, CET

Søren Frederiksen

I really like this Twitter replies/pseudo-comments section you've made. In fact, the whole site seems to be a synthesis of your various "streams" of content: You haven't open-sourced/discussed the means you used to pull these together, have you? Great ideas.

2019/08/27, 14:47, CET

Jonathan Crossland 🇿🇦 🇩🇰 🇬🇧

React absolutely sucks for all sorts of reasons. The learning curve, exclusion of ui people and the bastardization of html are my pet hates. I like html to be clean ans free. I dont like sugar on top if the sugar is for sugars sake.

2019/08/27, 15:01, CET

Shosple Colupis™

People who've never hand coded will drink any kind of Kool-Aid that promises them they won't ever have to, no matter how much denial of reality is involved. A web browser is not a runtime but you'll be murdered for saying so.

2019/08/27, 15:43, CET

Justin McGregor

Good gods yes to every last word of that.

2019/08/27, 15:50, CET

Richard Westenra

Great read, Charlie. I think the most pressing criticism is that the in the timeline section might be better replaced with an , but I'd be willing to entertain counterarguments.

2019/08/27, 16:09, CET

Andreas Møller

I can't say I agree with you but I appreciate your perspective.

2019/08/27, 16:11, CET

Buzz Andersen

Great post. I feel the same way, and in fact it inspired this chart. mobile.twitter.com/buzz/status/11…

2019/08/27, 16:40, CET

Seth

I honestly don't know what I just read... There seem to be several unconnected ideas in here.

2019/08/27, 16:49, CET

Spike Brehm

Great take on the monocultural rise of React and its inherent web performance issues when used client-side.

2019/08/27, 16:53, CET

Maarten

interesting read albeit that the problems with client side JS seen in React aren't as bad with other frameworks/js based solutions imho.

2019/08/27, 17:25, CET

DΛTΛSSETTE

I've often thought there was a slightly sneering, agressive showboating vibe hanging around React but haven't ever been able to say why exactly. Thanks for putting your thoughts out there, hope you don't get too much hatred :/

2019/08/27, 17:29, CET

Samuel Gardner

1 My entry into the industry coincided with the rise of React, and the relative rise of Angular2. Like others of my peers I owe my (recent, and not complete) financial security to knowing these frameworks and so to the thought-leader/bootcamp industry that helped popularize them.

2019/08/27, 17:34, CET

Richard Homewood

This is an excellent post. “Advocate for using the most simple solution to solve any given problem.” 👏

2019/08/27, 17:36, CET

Aleksey Razbakov

It's not only about React, right? Angular and Vuejs feels like part of the story. A week ago I found out that there are design-centric and functional-centric approaches in software. I see that both of them evolving somehow.

2019/08/27, 18:05, CET

Michael Beskin

This is the greatest call to fight for the user I’ve read maybe ever!

2019/08/27, 18:39, CET

boo_ghoul

Having written GUIs in everything from GWBASIC to React over the past 30 years, I find your thoughts mostly irrelevant twaddle. Real engineers use whats best for the job and get on whatever train is fastest

2019/08/27, 18:54, CET

Jonny Frodsham

I’ve worked in web dev for 22 years and it seems everyone is so opinionated these days telling everyone what they should be doing. We have a diverse team and we all help each other, try to make the right choice of tech per project & make it the best it can be whatever the stack.

2019/08/27, 18:57, CET

Jonny Frodsham

It’s a shame you’re having to write posts like this. What has happened to the dev community 🤦‍♂️

2019/08/27, 18:59, CET

tivrfoa

Your site menu is very nice

2019/08/27, 20:44, CET

Denys Vuika

Amazing article, love the style! Thanks for sharing!

2019/08/27, 21:06, CET

Charles Greer

You validate what it's looked like from the standpoint of a web 1.0 person. You have made me glad to be older than these chunkers.

2019/08/27, 21:51, CET

Mallory Moore

Your hair looks so awesome in that pic

2019/08/27, 22:31, CET

Caspar Harmer

I'm so with you. React is BS from Facebook, why can't people see that?

2019/08/27, 22:33, CET

Pascal

Read your article first thing in morning today, and it is damn spot on. I never understood the outcry, till I realized there were a #reactgate thing that went on over the weekend.thanks for the piece, some people have to change their ways, and calling those out is heroism. Danke!

2019/08/27, 23:01, CET

Maher Al~Kendi

Ya the amount of exaggeration in this post is amazing to me. Clear sign if how Western developers live in a bubble 🤷🏿‍♂️

2019/08/27, 23:30, CET

Vershima

Fascinating perspective

2019/08/27, 23:56, CET

🇪🇺 Scimon Proctor 🇪🇺

That was a really good read. I'm happy I've managed to avoid a lot of this craziness by hiding in backend town with my love of Perl (all flavours). But I've seen a lot of it happening over the years.

2019/08/28, 02:42, CET

Carrot

Pretty excellent take.

2019/08/28, 02:42, CET

Gabe

I'm glad someone said it. Coming from a broke family, I think learning React had a *huge* impact in landing dev job w/o degree and being able to support my wholeass family. Always grateful, and I want that inclusiveness for anyone.

2019/08/28, 03:49, CET

claudio

This is great and belongs in a wiki

2019/08/28, 05:48, CET

Brendan Moore

I find the argument resonates and speaks to some real challenging issues we need to sort out. No argument there. However, I would like to fight about the bullet point format. It was very hard to read smoothly. That's all.

2019/08/28, 06:06, CET

Piotr Steininger

I bet @emberjs community will welcome anyone, of any color skin, any gender, origin or any other feature that makes one unique. The framework has it's problems, but I never witnessed anyone behaving badly without consequences.

2019/08/28, 07:53, CET

Hey, @nasa, are you sure?

I don't how I can keep working with React now, I feel dirty

2019/08/28, 09:07, CET

Radoslav Sharapanov

Nailed it. Thank you. Angular/React is the new Flash. Some of us are working hard in the opposite direction: @natuive

2019/08/28, 10:35, CET

Terry Yuen

What you said is true and I felt senior dev have more responsibility educate others. What react can do and cannot do, when one should use react and when should not instead of being so religious sticking to react

2019/08/28, 11:11, CET

Dan Tobias

I was supporting some of those views so far back that it was called "Graceful degradation" rather than "progressive enhancement", and my article on it from 1998 is now of legal drinking age in the US: webtips.dan.info/graceful.html I'm still not on board with all your leftist politics.

2019/08/28, 12:32, CET