Today, I’m going to talk about React. React is a JavaScript library for creating user interfaces. I have been using it for a couple projects. The more I use it, the more I love it. So I’m here to tell you why I think it is awesome, why I am passionate about it, and why I am going to introduce it to you. I am a software engineer, and I understand how you feel for your day to day job as a developer. Before using React, sometimes it just doesn’t feel right with your code, especially when you are building user interfaces. Because there are so many possible states, and it is not possible to test all of them. There is mutable DOM, and users could input something that you are not expected. Or sometimes your UI just doesn’t work, and it perform some unpredictable behaviour, or doesn’t scale for large applications. Because data changes over time. The art of programming, is the art of organizing complexity. React JS, is the library that help you to organize complexity for building UI. What is React? React is the view of MVC, stands for model-view-controller. It is not a complete framework, like Meteor JS. You could use it with flux or react router for full MVC, but this is out of the scope of this blog post. React is developed by Facebook and Instagram (which is also Facebook). And it is used in their production. So if you go to Facebook.com, the comment box you see is a react component. Inside it, it has comment form, and the comment list. Inside the comment list, it’s each individual comment. You can think of UI is a box, inside another box. For Facebook, it is challenging for them to build a scalable UI with the old tools, so that’s why they build React, to solve the problems. Let me explain to you. Why React? We are going to talk about three things. The first is React component. Everything in react, is component based, instead of templating. That means you can break down your view into smaller pieces, that is modularise, that is encapsulated, that is also reusable and unit testable. Secondly, it is fast, because they invented the virtual dom. I will show you some benchmarks later on. Thirdly, it helps you to manage UI with data that changes over time. I will further explain it as well.