Review of Reactstrap

https://github.com/reactstrap/reactstrap

Takeaway

Reactstrap is a good library well suited to our needs, but it doesn't get us too much more than we already have with Paragon. Paragon doesn't have a complete coverage of Bootstrap components like Reactstrap does, so we could get some benefit from leveraging Reactstrap. On the flip side we may not need most of these extra components. We need to judge if building on top of Reactstrap and working with the community will be faster than forging ahead with Paragon. In the end though, a full-featured Paragon would look a lot like Reactstrap. I'm on the fence.


Technology and tooling is a perfect match to our current setup.

Reactstrap is built on what seems to be pretty much the same set of tools we're using for our front end applications: React (obviously), SCSS, Webpack. 


Documentation is pretty good

The documentation is good. It shows examples of how to use the components.


It looks like all components pass through props to html elements.

This is very good. It allows us to customize classNames and potentially add aria labels on nearly any element.


A quick glance shows it needs some accessibility work.

Tabbing and focus states need some work.


The community building it is active.

At first glance it seems like the community is active and has a good set of issues being actively worked on. It may not be to difficult to contribute back to the main project. 


Introducing Bootstrap components as React Components present a weird dual documentation problem.

Take the Row and Col components for example: If you want to use basic Rows and Columns you can use the React components alone, but if you need to do anything more detailed like flex-grow or justifying content you need to start using the Bootstrap utility classes. This isn't bad if you're familiar with both, but it does create a little confusion where you have to check and see if the prop exists on the component in the Reactstrap documentation, and if it doesn't then you need to look it up in bootstrap and add a class name to the node. Not an awful problem, but it is a little weird.