React: Or, #NoBackbone2018

One with a backbone will do more than a thousand with a mere wishbone.

Usually, having a backbone is a good thing.

At Vinted we started using Backbone.js, a framework to help build web user interfaces, more than 5 years ago, in late 2011. The JavaScript framework map looked completely different. “Backbone vs. Knockout vs. JavascriptMVC” was a hot discussion back then. Who even remembers JavascriptMVC now? 😅

Backbone.js has served us well over the years. We’ve built many great things with it. I found more than 800 instances of the word “Backbone” in our JavaScript, representing a bunch of views and models we created.

Backbone.js is now slowly retreating into obscurity. It’s no longer actively developed and improved. The web has changed over the years and there are new and better frameworks out there.

During the last couple of months, we’ve also tried to hire a web developer. The candidates were not amused after we mentioned that we’re still using Backbone.js. A couple of our developers have been telling us for a while that this might happen. They were right. Actually encountering this problem was a trigger for us to take a hard look at our web technology stack.

We considered various alternatives as a solution to our problem. We weighed the pros/cons and eventually arrived at a unanimous decision.

So, React.

React is a modern web library for building UIs, created by Facebook and actively used by companies like Instagram, Netflix, and Airbnb.

Moving from Backbone.js to React will give us a ton of benefits. We’ll achieve better DOM performance, increase development speed and quality (partly because React is more testable). We’ll be able to hire web developers again too (by the way, we still are hiring, with React experience being a plus) It’s also going to serve as a first step to potentially using React Native in the future. React Native allows to build something once and then use it on all platforms - Android, iOS, and Web.

We expect to have no Backbone.js in our code by 2018. We intend to write about our experience implementing this change.

Goodbye, Backbone.js, you’ve served us well.

Hello, React.