React JS is a declarative, efficient, and flexible JavaScript library for building reusable UI components. It uses a virtual DOM which works like a lightweight copy of the real DOM to improve performance by only updating what changes. Components are independent and reusable bits of code that serve the same purpose as functions but return HTML. There are two main types of components - functional components which are simple functions, and class components which can maintain their own state and work together.