---
title: "Comment by Andrew Havens on \"Why Ruby on Rails Needs Components\" | Hashnode"
description: "I think you&#39;re right that it would be helpful to have a drop-in gem to provide some nice looking components. CSS frameworks like Bootstrap have helped with"
url: "https://hashnode.com/posts/why-ruby-on-rails-needs-components/64c8fc9dc2a93e868eaab545/comment/64cbf2ed168be6c0a17e6a4a"
---

[Discussion](https://hashnode.com/posts/why-ruby-on-rails-needs-components/64c8fc9dc2a93e868eaab545)

Comment [Why Ruby on Rails Needs Components](https://hashnode.com/posts/why-ruby-on-rails-needs-components/64c8fc9dc2a93e868eaab545)

[Andrew Havens](https://hashnode.com/@andrewhavens)

[Aug 3, 2023](https://hashnode.com/posts/why-ruby-on-rails-needs-components/64c8fc9dc2a93e868eaab545/comment/64cbf2ed168be6c0a17e6a4a)

I think you're right that it would be helpful to have a drop-in gem to provide some nice looking components. CSS frameworks like Bootstrap have helped with that in the past. I've been meaning to write a blog post about this, but the magic combination that has been working well for us has been Hotwire, Tailwind, and the ViewComponent gem. We've built our own components pretty easily and I'd recommend that stack for anyone who feels like components are lacking in Rails.

[Avi Flombaum](https://hashnode.com/@avinyc)

[Aug 3, 2023](https://hashnode.com/posts/why-ruby-on-rails-needs-components/64c8fc9dc2a93e868eaab545/comment/64cbf2ed168be6c0a17e6a4a#reply-64cbf4298c8620c686553fea)

For sure, ViewComponents is great to build your own, I just want to be able to use yours too if you open sourced them and there's no real pattern or mechanism for that, you know?

[Andrew Havens](https://hashnode.com/@andrewhavens)

[Aug 3, 2023](https://hashnode.com/posts/why-ruby-on-rails-needs-components/64c8fc9dc2a93e868eaab545/comment/64cbf2ed168be6c0a17e6a4a#reply-64cbff1e8c8620c686554140)

[Avi Flombaum](https://hashnode.com/@avinyc) Sure, I agree. I think the challenge is finding a way to share it while still allowing it to be customized. Tailwind UI component examples are easy because you just copy/paste and customize. However, with Rails/ViewComponents, you would probably want a Rails engine with a generator since there would be several files to copy/paste, or maybe you simply override the view template when you want to customize it. Btw, I created a "living styleguide" using ViewComponents that I haven't open-sourced yet. I think that's another important piece of the "Rails Components" story.

[Avi Flombaum](https://hashnode.com/@avinyc)

[Aug 3, 2023](https://hashnode.com/posts/why-ruby-on-rails-needs-components/64c8fc9dc2a93e868eaab545/comment/64cbf2ed168be6c0a17e6a4a#reply-64cc0273168be6c0a17e6bc6)

[Andrew Havens](https://hashnode.com/@andrewhavens) Here is how I'm suggesting sharing them [code.avi.nyc/rails-components-more-installer-over…](https://code.avi.nyc/rails-components-more-installer-over-library)

[Avi Flombaum](https://hashnode.com/@avinyc)

[Aug 3, 2023](https://hashnode.com/posts/why-ruby-on-rails-needs-components/64c8fc9dc2a93e868eaab545/comment/64cbf2ed168be6c0a17e6a4a#reply-64cc028d8c8620c686554180)

[Avi Flombaum](https://hashnode.com/@avinyc) The library is live at [shadcn.rails-components.com](https://shadcn.rails-components.com/) you can install the gem in an app and generate components into it.

[Ahmed Nadar](https://hashnode.com/@ahmednadar)

[Feb 29, 2024](https://hashnode.com/posts/why-ruby-on-rails-needs-components/64c8fc9dc2a93e868eaab545/comment/64cbf2ed168be6c0a17e6a4a#reply-65e0b416dea26f4e9bc6bb43)

[Andrew Havens](https://hashnode.com/@andrewhavens) When I started [RapidRails](https://rapidrails.cc/) library I had no plan to make is a gem, I want developers to copy and past files and folder. But, as the library grow and my goal is to make it unique I have several folders and files needs moving around. Maybe having a generator is an option. Still looking for a good solution.

For my custom clients work (deign to code) I create a few folders and developers copy/past, because it is unique for every project. How do you structure your library?
