Get weekly design system tips and tricks, directly to your inbox.
Bootstrap and Material Design are incredibly thorough systems, so it stands to reason that many of our clients ask whether or not it’s worth the effort to create a design system from scratch as opposed to using an already mature platform.
Here’s the answer we typically give:
Start with Bootstrap or Material Design if:
You need to get up and running very quickly
You’re willing to forego custom branding or code conventions
A generic or Google-vibe aesthetic suits or enhances your product
Start creating a design system from scratch if:
Your design system needs to last 3 or more years without a major refactor
You’re going to need custom branding or code conventions in short order, or otherwise need to make your design system distinct.
We’ve found that teams tend to outgrow OPLs—Other People’s Libraries—at about the 3 year mark. (In this context, “outgrow” means you find yourself overriding or removing more of the library than actually using it.)
Let’s see how this works with a simple example. Say you wanted to showcase your headphone product in a card. Using Bootstrap out-of-the-box, you can use this HTML…
…to create a card that looks like this:

If you’re satisfied with that, great! Bootstrap is a good candidate to jumpstart your design system.
But your team might not be able to live with that, because you need or want your card to look more custom:

Perhaps you’d like your brand typeface for the card heading, so you add a font-family: 'Graphik';
declaration to the card. You use an 8-point grid elsewhere, so you change all of your type sizes, padding, and margin to multiples of 8. And your house coding style is to use a BEM-like syntax, so you modify the markup from <div class="card">
to <div class="c-card">
. And you don’t want your cards so contained, so you ditch the borders.
Just for those small amount of changes, we’ve had to touch all but 2 lines of our HTML…
…and all of this CSS:
And that’s all just for 1 component. Bootstrap has 24 components in it, so the lift to modify every component isn’t insignificant.
For all that effort, you might as well roll your own.
Further reading
Lee Nelson has written a counterpoint to this article.