To react or not to react

Learning a new programming language every year is advice I first read in the Pragmatic Programmer. If that's the case, in javascript-land this translates to learning a new framework every week.

Over the last five years I've experimented with dozens of javascript frameworks and worked on client-side projects with ext.js, backbone.js and meteor.js. I've been able to experience the huge strides in front-end development, and benefit from the proliferation of new patterns, paradigms, and tools that have made their way to the top. Front-end has indeed grown up, and it's been quite the learning experience.

I'm very happy with the tools that I currently use. They allow me to tackle a wide variety of projects and scopes quickly and effectively. I don't feel the need to have to keep up to date with every new .js or .css offering that comes up on hacker news. There's has to be something really novel for it to to warrent my attention.

Angular was a big one to shoot up, and while there are qualities that I found intriguing, I found that it carried a bit of a smell. The fact that I'd have to spend at least a few weeks before I'd be able to be comfortable building my own directives and really understanding the magic behind the scenes didn't so much appeal to me.

Enter React. I ignored it for a while simply because it was coming from facebook, which I have mixed feelings about. Recently I've had the bandwidth to look deeper, and boy does it hit some sweet spots.

First of all, it's not a competitor to Angular or Ember or whatever type of fat-client framework you might be using. It's perfectly suited to be used simply for UI components. It can play nicely with other frameworks, and it's simple enough to drop it into a project to handle a single component. I believe it's obvious that the future of web developement is component-based, and ReactJS seems primed for this kind of use.

Second of all, it's very performant at a reasonable cost. The virtual dom is genius, and I'm sure this concept will propograte to other frameworks within the near future. The footprint on the page is not nothing, but also not a dealbreaker. The page loads fast and it works well on mobile.

Lastly, the Flux architecture model that often accompanies react components offer a smart way of structuring front-end applications that are only becoming increasingly complex. By employing a one-way flow of control, it's possible to avoid the referential hell in SPA's that have reached a certain complexity.

That's it for now. I'm still in early stages of integrating react into current projects, but I'm optimistic and look forward to having something in production.

For reference, Allen Pike does a great job summing up the Javascript Framework overload in 2015.