frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

React vs. Backbone in 2025

https://backbonenotbad.hyperclay.com/
65•mjsu•2h ago

Comments

mexicocitinluez•1h ago
Components don't live in a vacuum. Which is why comparing one-offs like this make little practical sense in the long run.
justbees•57m ago
I totally agree - the example they give doesn't really need react OR backbone. You could just as easily show vanilla js as the 3rd example and wonder why you would ever even need a framework.

One off it seems fine, but a huge backbone app gets really complicated for me. Show me a huge react app vs a huge backbone app and I will understand the react much more quickly.

"It's verbose, sure, but there's no mystery. A junior developer can trace exactly what happens and when. The mental model is straightforward: "when this happens, do this."

I don't think that's true. A large backbone app has a lot of code that you'll have to trace through multiple files in different directories - the template are here, the functions are there but the endpoints are over there and... maybe it's just the backbone app I have to update but it's much more confusing and abstracted than the react app I also have to update. And don't even get me started with adding a new component. I can drop a new component into the react app and import it anywhere and it's super fast and easy... backbone not so much.

mexicocitinluez•35m ago
Well said and I totally agree.
dbattaglia•35m ago
> I don't think that's true. A large backbone app has a lot of code that you'll have to trace through multiple files in different directories

This is exactly my experience with large scale Backbone apps (from 10+ years ago). Even with extras like Marionette it quickly became a complete nightmare to navigate or maintain. Zombie model and view objects leaking memory was almost inescapable.

I remember in 2013 I introduced Backbone to my current company, hoping to make sense out of our existing jQuery + ASP.Net MVC application. After ~3 months of code from junior and mid level developers (in house and off shore) I began to deeply regret my decision. There was just not enough patterns and utilities in the framework to keep things from going off the rails. We eventually shifted to Angular v1 and it was glorious, things just worked and even the ceremony I needed to add felt worth the trouble for the speed of development we gained.

timcobb•1h ago
I think about React vs Backbone from time to time, too, but have drawn different conclusions.

Backbone was one of my first "JS frameworks". I thought it was neat, but when React came out, I thought "oh, something actually useful, unlike Backbone, which is mostly application framework glue code, but doesn't actually do all that much for me. Concrete huge wins for me from React were:

- Not having to regularly touch the DOM

- Reactive state management

These two things not only made my life as a programmer much easier, but they also developed my ability to build software that wasn't spaghetti.

thedelanyo•50m ago
Does React have built-in state management?
sothatsit•43m ago
useState is the built-in way to manage state in React today. There were also similar mechanisms in class components before hooks came along. This is pretty integral to how React works.

People do add state managers to store state outside the component tree, but a lot of components don't need that.

maxloh•43m ago
They had them from day one.

Class component:

  class Counter extends Component {
    state = { age: 42 };

    handleAgeChange = () => {
      this.setState({ age: this.state.age + 1 });
    };

    render() {
      return (
        <>
          <button onClick={this.handleAgeChange}>Increment age</button>
          <p>You are {this.state.age}.</p>
        </>
      );
    }
  }
Functional component:

  function Counter() {
    const [age, setAge] = useState(42);

    const handleAgeChange = () => setAge(age + 1);

    return (
      <>
        <button onClick={handleAgeChange}>Increment age</button>
        <p>You are {age}.</p>
      </>
    );
  }
gravity13•37m ago
Yes. `useState` is essentially the "two way binding" of React at the component level. You may also enforce two way binding via an external state manager, and pass it to your React components via props.

This is the beauty of React, it's reactive style, that essentially means your UI is always bound to your state.

In Backbone, you do not get this for free, as the problem is that two-way binding in Backbone requires manual re-renders (via jQuery) which are direct DOM manipulations. This is expensive, meaning, it is not performant as your DOM grows.

React solves the problem via it's virtual DOM, which keeps an optimized DOM engine in memory, batching expensive updates onto the real DOM.

This means you get the convenience of your UI always representing your state, which means your code can become more declarative (what you want), and less imperative (what you need to do in order to get it). The author calls this "magic," but as somebody who was a Backbone main turned React main, I call this "sanity."

thomasfromcdnjs•19m ago
A little nostalgic for me, I wrote a bunch of backbone tutorials back in the day.

https://news.ycombinator.com/item?id=3110025 https://web.archive.org/web/20111015073638/https://backbonet...

Other than the lack of imports, 15 years later I don't hate it.

Due to LLM's my thinking about coding has changed quite a bit, I'm far more interested in what is the best way a language can be written such that LLM's can most effectively write it. JSX/declarative is seemingly solid. I think the React community from useEffect onwards is starting to get a bit wishy washy, probably not a great way for LLM's to "think". (something about expressiveness, explicitness and parse-ability)

Kwpolska•1h ago
It feels to me that this specific toy example would be even simpler in vanilla JS. A comparison with a serious, large SPA would be more fair and more informative for comparing frameworks.
almost•1h ago
For something this simple that doesn't need to grow or interact with the rest of the system why would you need Backbone or React? And why would you expect any version to be shorter as it's mostly just the HTML and the data.

I remember writing Backbone applications with lots of deeply nested components. Trying to keep all the state in sync and reacting to events. It certainly wasn't simple and straightforward.

This just feels like a very silly article.

ramon156•1h ago
I'm ready for all the "what about x" comments, because I'm going to check them all. I'm choosing React over anything else right now because of how well my DevEx has been.

I can say the same about Angular, you really need to know how Angular works to know what you're doing. That's the whole issue with these frameworks. At least React doesn't try to abstract too much

jgalt212•21m ago
And the LLMs are better at React than other frameworks. You need less React devs now than other frameworks. And with greenfield project with the compiler, it seems like an easy path. We don't use React, and I would not choose to do so, but LLMs + Compiler make it a great default for shops starting new apps.
lelandfe•51m ago
Try typing a full word into each password box.

Then, try to undo (Cmd/Ctrl-Z, etc).

Backbone's undoes the typing, one letter at a time. React's behaves correctly and undoes the whole word.

Good job, React (I still see "controlled" inputs on the web today falling prey to the former)

saxenaabhi•41m ago
wait, why is undoing by word better? I like backbone's approach!
lelandfe•22m ago
https://jsfiddle.net/pn6bzyhk/1/

Native behavior for comparison. React is following it; Backbone is not. The native behavior on macOS, for instance, undoes all three words in one action: https://imgur.com/a/jKl5exU

(Not your fault: most people misremember this...)

BoredPositron•36m ago
Deleting the whole word is not the correct undo...
VladVladikoff•27m ago
Why is overriding native browser behaviour “better”? I don’t get this line of thinking at all. It’s like those js libraries that hijack scrolling behaviour only to make it more clunky and less responsive than native scrolling.
preommr•49m ago
???

I absolutely failed to follow the logic of this article - is there any?

The toy examples having the same amount of code is meaningless. They're saying it's bad because react is more complicated. But this works in react's favor that simple examples are simple.

It's also meaningless because it's a toy example. Even if the react code was half the size of the backbone, you could still use the strawman of "react's complexity isn't worth saving 5 lines of code" which people would agree with.

Then they go on to complain about use-effect and state-management. But use-effect isn't in the code example. But then why compare it to backbone which also doesn't solve those problems and is arguably much worse at them.

> People say "you need to rebuild React from scratch to really understand it," and they're right

Actually laughed at how shameless this is. Who said this? This is just a thing the author got and just decided is a fact. Not only is that quote not in the linked article, I don't think the average person would say this.

And the answer to what about something small, the answer is either lit-dev, or vanilla. It's not early 2010s, a lot of the functionality of libs like jquery, backbone that made them popular was incorporated into js.

rs186•39m ago
Yeah. I don't follow react closely, but I do know Vue.js is still in very active development and releasing new features because of all the real use cases/bug fixes. Some of the use cases or issues didn't exist back in 2010 (e.g. interoperability with custom elements). "Look at how little progress we've made" only reveals author's ignorance instead of saying anything meaningful or true.

Put it another way -- you can find those "minimal JS frameworks" and create this same demo easily, but it doesn't mean the other JS framework is all that one needs.

gravity13•25m ago
> "react's complexity isn't worth saving 5 lines of code" which people would agree with.

If you look at the code the example shows, the replication is a bunch of HTML and tailwind CSS classes in backbone. So basically if you decide you want to change the input to have a different radius in one place, you need to implicitly know that there's another piece of code patching and replacing that elsewhere, which has duplicated the code.

I'm not one to pray to the alter of DRY like it's the end-all be-all of programming principles, but you take this pattern and repeat it throughout a production codebase and you have a bunch of repetitions that need to happen.

This is the problem with Backbone - it's edits are imperative - meaning, each one is a source of errors. React makes state updates declarative, so you only need write the rules just once. Somebody coming along to edit the code doesn't need to find the implicit relationships in the imperative code that might break or cause inconsistency, because they don't need to exist anymore.

React is safer. It's not even a contest.

hamandcheese•48m ago
I love React, but the author does make some good points. React does have a lot of footguns, especially if you don't have a very solid grasp of how it works (or at least a solid mental model).

A big part of the problem happens well before React though. Lots of people don't even know how JavaScript works despite using it every day. So it's no wonder that people get tripped up trying to understand functional components, useEffect, etc.

tuhgdetzhh•44m ago
I don’t think this comparison is correct. You concluded that not much has changed in 15 years, but you are not comparing 15-year-old idiomatic Backbone code with modern React. Instead, you are comparing modern Backbone code with modern React.

You could make a similar comparison between Kotlin and Java and reach the same conclusion. However, Java has evolved significantly over the past 15 years, and most of Kotlin’s features are now also available in Java.

gravity13•35m ago
This is how Backbone looked back in the day. Not that I agree with him, but there's nothing new to this, it's essentially a basic View wrapper around a jQuery dom manipulator.
madmaniak•44m ago
Look for Imba (imba.io) which is being ignored for years. Predecessor of React with features of React and no flaws of React. Works great with just devtools - for debugging.
comrade1234•40m ago
Does react still mess up the DOM and, for example, using Google Translate?

I do use react but only for very specific well-defined reusable components and I use js events to message them. I try to keep it as simple as possible. I can't imagine creating an entire site with react.

dlisboa•39m ago
Something so simple such as this doesn’t even need a library, you can just use Web Components. Simple components are not why people use React.
picardo•29m ago
> For massive apps with 1,000 components on the same page, maybe React's complexity is justified. But what the other 99% of apps?

The number of components is not the only yardstick of complexity. Most of the complexity in building a UI comes from state management and how state changes are propagated across the store and the UI.

I worked with Backbone for many years, and I can distinctly recall the hours of frustration I had debugging a UI because it was freezing due to cascading state changes. That was because we were using Backbone Store, which had bidirectional data flow, and when one updated the store, it would trigger a change to the UI, which would change the state store, which would change the UI, etc.

You could argue that the real innovation of React was "unidirectional data flow," but React team made Flow architecture central to the framework, making it easier to adopt good practices, whereas Backbone remained store agnostic and even encouraged Backbone Store which used the observer pattern for many years. I think you should choose a framework that allows you to fall into the Pit of Success, and React was that framework at the time, and for my money, it still is.

jgalt212•24m ago
> For massive apps with 1,000 components on the same page

If have a 40X25 table on your page that's editable, that's your 1,000 components right there. But away from tables, it does seem overkill to have 1,000+ components on a single page.

amelius•13m ago
1,000 components is my standard test for trying out a new UI library.

I recently tried it with Kotlin/Compose. Turned out that everything becomes noticeably slower with so many components, even if the components are in a scroll view and only a few of them are visible.

jfengel•12m ago
1,000 is a lot, but not uncommon for a CRUD app. Especially when you start with a small one and the scope creeps. Users want one more feature, and one more field. Then it's time to replace some other CRUD app and you've already got this one going ...
azangru•2m ago
> You could argue that the real innovation of React was "unidirectional data flow"

Isn't this just how the DOM works? Data flows down through attributes and properties; events bubble up?

> but React team made Flow architecture central to the framework

Didn't they call it Flux rather than Flow?

nu11ptr•28m ago
You are ALWAYS programming in abstractions. The raw JS code is JIT'd into machine code, for example, which most wouldn't know how to read/debug. The JS functions called are built in the browser and are trusted to function properly.

That isn't to say you should accept every abstraction either, but my point is that we all use abstractions where we don't necessarily understand the non-abstracted form. The key metrics therefore are:

1) ensure the abstraction gives you coding velocity benefit commensurate to the complexity of the abstraction

2) be very sure the abstraction provider is trusted enough to ALWAYS generate valid code in non-abstracted form

3) ideally, have some level of capability to debug the abstraction/generated code (in the worst case - per #2 that should rarely be necessary)

How the East Does Tech: Lessons from a World Western Logic Can't Map

https://petrapalusova.com/articles/howtheeastdoestech
1•freediver•1m ago•0 comments

PKBoost: Gradient boosting that adjusts to concept drift in imbalanced data

https://github.com/Pushp-Kharat1/PkBoost
1•ashvardanian•1m ago•0 comments

AI for coding is still playing Go, not StarCraft

https://quesma.com/blog/coding-is-starcraft-not-go/
1•stared•3m ago•0 comments

Bagaimana Cara Batalkan Pinjaman Easycash

1•rahmatyatama•3m ago•0 comments

Hostingmoz: Join the Launch of the First Hosting Plan Ranking Project

https://hostingmoz.com/
1•Hostingmoz•5m ago•1 comments

Hubungi WhatsApp Bank Permata Center

1•absolutedigi•6m ago•0 comments

A triangular space-filling curve (2012)

https://ideophilus.wordpress.com/2012/09/06/a-triangular-space-filling-curve/
1•ashvardanian•8m ago•0 comments

Everyday norms have become more permissive over time and vary across cultures

https://www.nature.com/articles/s44271-025-00324-4
1•XzetaU8•13m ago•0 comments

Passively Downloading Malware Payloads via Image Caching

https://malwaretech.com/2025/10/exif-smuggling.html
1•FromTheArchives•13m ago•0 comments

Cara Membatalkan and Pembatalan Lazbon Lazada

1•gutianagistian•14m ago•0 comments

Language and thought are not the same thing: evidence from neuroimaging

https://pmc.ncbi.nlm.nih.gov/articles/PMC4874898/
1•Marshferm•16m ago•0 comments

OpenAI is paying ex-investment bankers $150 an hour to train its AI

https://www.entrepreneur.com/business-news/openai-is-paying-ex-investment-bankers-to-train-its-ai...
1•hhs•16m ago•0 comments

Synadia and TigerBeetle Pledge $512,000 to the Zig Software Foundation

https://tigerbeetle.com/blog/2025-10-25-synadia-and-tigerbeetle-pledge-512k-to-the-zig-software-f...
7•todsacerdoti•17m ago•1 comments

Syd-TUI: Syd's Terminal User Interface

https://asciinema.org/a/751235
1•hayali•19m ago•1 comments

Show HN: Instagram TUI client to reclaim attention

https://github.com/supreme-gg-gg/instagram-cli
1•endernoke•33m ago•1 comments

Top Scientists Deliberately Misrepresented Sea Level Rise for Years

https://www.public.news/p/top-scientists-deliberately-misrepresented
2•bilsbie•34m ago•2 comments

New images of interstellar object 3I/ATLAS show giant 'jet' shooting toward sun

https://www.livescience.com/space/comets/new-images-of-interstellar-object-3i-atlas-show-giant-je...
2•bookofjoe•34m ago•0 comments

OTC Hearing Aids (2025), Tested and Reviewed

https://www.wired.com/gallery/best-over-the-counter-hearing-aids/
2•fleahunter•36m ago•0 comments

Why 68% of Us Feel Phantom Phone Vibrations

https://lightcapai.medium.com/phantom-phone-vibrations-the-buzz-that-isnt-there-ef211fa275a1
1•HenryAI•36m ago•1 comments

Show HN: I made an anagram word game for mobile in C++ and Go

https://www.anagramarena.com/
2•ribach•38m ago•1 comments

Show HN: Chonky – a neural text semantic chunking goes multilingual

https://huggingface.co/mirth/chonky_mmbert_small_multilingual_1
4•hessdalenlight•41m ago•0 comments

Talent is directed by capital, not the collective will of citizens

https://www.ft.com/content/ab27bdb5-5eb9-4ae8-862b-c7d616c9d846
1•hhs•45m ago•2 comments

What I learned making a GitHub Task Bar app for MacOS

https://xn--tkc.net/projects/live-insights-on-my-work-via-github
1•chamaloriz•46m ago•0 comments

BS? Sunflower Bioelectricity Translated into 432Hz Music for Stress Reduction

https://www.youtube.com/watch?v=Tgk042gR1Ro
1•artur_makly•47m ago•1 comments

httptap – HTTP request tracing with precise timing and TLS audit in pure Python

https://github.com/ozeranskii/httptap
1•ozeranskii•47m ago•1 comments

Dirt Bikes

https://dirtbikesports.com/
1•Wilson09•50m ago•0 comments

DeepMind introduces AI agent learns to complete tasks in a scalable world model

https://techxplore.com/news/2025-10-deepmind-ai-agent-tasks-scalable.html
1•fatihkocnet•52m ago•0 comments

Dark Seed (Sega Saturn) Complete Gameplay [video]

https://www.youtube.com/watch?v=YvcNWweM19A
2•ofalkaed•52m ago•0 comments

So You Want Continuous Time Zones (2017)

https://qntm.org/continuous
1•loehnsberg•55m ago•0 comments

A Gold Ceremony to Remember

https://daniel.haxx.se/blog/2025/10/25/a-gold-ceremony-to-remember/
2•robin_reala•58m ago•0 comments