Modern UI is all about flexible and reusable components, I see this as an essential part of the frontend workflow. They are also so easy to use, test and develop. However, there might be a confusion about how to componentize your views/widgets in the most transparent and clear way. What make a good component? What is the optimal granularity? I will try to answer these questions.