Skip to content

Off-the-shelf v/s Custom UI Library

Pebbles near the seaside

Both off-the-shelf and custom component libraries have their pros and cons. Which one to choose is always bound by the situation they are going to be used for.

Usually, you'll hear from other developers that an off-the-shelf component library offers you the freedom of not having to waste time on building components but rather enables you to focus on building the actual project and implementing business logic. Fair. Also, not that fair. Let me explain.

A developer does not work in isolation. There are always other factors in play; business requirements, technical requirements and all kinds of limitations. Sometimes, a pre-built component library does not offer you every single component you need and sometimes it does offer the components but it's not flexible enough to solve your problem. Often, I have found myself having to install another package just to have the component that I need. On scale, this builds up and adds a significant maintainability overhead and if you have multiple projects that use the same components, this overhead grows exponentially relative to the number of projects.

Hold on though! I'm absolutely not saying that you should always go for a component library that you've custom built either. That comes with a lot of work and maintenance as well. This model works in some large agencies as the benefits can be seen on scale. You should always think about everything that surrounds the decision of which one to go for, i.e. your client's budget, your expertise, time constraint, etc.

If you wish to build a custom component library and it makes sense in your case to do so, then go ahead. If it's your first time building one, good luck. A good advice I once received is that you do not have to build everything from scratch. Especially, when you have tools at your disposal that can be used as a base, e.g. Radix, Shadcn, and can do the heavy work in terms of flexibility and accessibility for you.

There are several types of projects that need to go fast and have a limited budget, e.g. MVPs. In these cases, you would probably think that an off-the-shelf component library would be better suited but if you already have a custom built component library that offers you all the components you need, then there's no harm in that. Is it safe to say that though? Every time there is a bug in the component library, the time and cost need to be spent by your client and the developer(s) working on the project, as opposed to an off-the-shelf component library, where a simple upgrade would suffice.

There are a couple of questions you need to answer before making this decision:

  1. Do you need the component library to be flexible? If so, does the component library offer the amount of flexibility the project needs?

  2. Based on your project's time and cost constraints, which one is better suited?

  3. Is it sustainable to maintain a custom component library and do its benefits outweigh its drawbacks on the long run?