I used Grommet for a react project, and here are some of my thoughts on it.
Things I like
- Works out of the box for most use cases
- Nice for form elements
- Gives a standard look and feel for the site without any need to work out details
Things I don't like
- A grommet element is a wrapper for an entire dom structure that you can't directly style as it doesn't have any classes you can apply css to; a simple parent classname that you can have as a starting point would work wonders
- The Box wrapper and other wrappers for grid layouts just reimplement html features but in a more limited and difficult to adjust way
- It basically sucks for doing anything new stylistically (such as building a static landing page).
- It's design is kinda bla and minimal as far as customization
If I were to do a application in the future I would:
- I'd still use grommet for all of its components, but not it's layout
- Create a thin layer interface over grommet that just passes down props. This way a mvp can be quickly pushable, but the styles would be easily updatable
- But more likely, unless styles don't matter at all, I would just do my own component library based on mocks as really stying components isn't too hard
Well structured scss is really easy to manage, and while grommet is good for building quick and dirty UI, scss custom built ui components are better to build for a project that is going to be something that will be used for a long term project.