- Using .jsx files breaks the JS/HTML/CSS separation of concerns; but as far as file count goes, with 400 templates, that probably means 800 to 1500 files. .jsx gets that fiile count back down to 400 files. And that has a real impact on workflow.
- CSS scoping is the tightest it's ever been. For the first time, I feel really confident that when I specify that this type of component should have a specific style, it's not going to spill over into any other components.
- All the components are more testable. Much fewer side effects.
- With Material UI and React Toolbox, we have theming objects that pass through the props. This is a much more coherent strategy for theming objects.
- React-D3 lets us use React to draw the SVG elements using D3 math libraries. For the first time, D3 graphs are not only re-usable; they're componentizable as well.
- There are React Native projects that are aiming to port Material UI to React Native and Web, and vice-versa. In another 6 to 12 months, I think we're going to have a truly ubiquitous web UI layer that performs with native UI performance.
Personally, I'm finding React to be 20% to 30% more efficient and effective in terms of sprint velocity. Given time, that will compound in a big way.
However, I'm also seeing a slight tendency for React to be too complex for some of the developers we were able to bring onto projects with Blaze. We work with a lot of radiology technologists, nurses, physician assistants, PHD researchers, medical doctors, etc. About 80% of them could pick up Blaze; whereas only about 50% of them seem to be able to grok React.
So it's excluding some participants in the name of performance. However, because of isomorphic/universal codebase, we need fewer team members to ship to multiple platforms.
So, on balance, yeah... happy with the decision to rewrite, even if it's going to take 3 to 6 months. Also happy that we waited a year or so for it to become stable, and we're able to go directly to Material UI and React-D3.