Building PWAs with Style: 6 Powerful JavaScript UI Libraries

Colin Reitz

Senior UX/UI Designer

Apr 2023

8 min read

Developing an application is a complex task that requires a lot of time and effort to create a functional product. In addition, there are tight deadlines and a long list of features that need to be implemented. Unfortunately, the user experience and especially the UI design often fall by the wayside.

How do we manage not to disregard UX and UI with limited resources? The use of a suitable UI component library or a design system is the most obvious choice, but which one should you choose? The libraries and design systems in this article enable the development of applications with visually appealing UI, which, in addition to making work easier, also provides significant added value for the user experience. All libraries also offer an wide selection of components, which significantly reduces the need to develop your own components.

Why use a UI component library or design system?

Using a UI component libraries or design system saves you time, reduces the likelihood of errors, and makes it easier to maintain the application. Also, and most importantly, using a design system leads to more consistent design and development. The successful establishment of a design system makes you more efficient on many levels and creates the basis for a scalable application. If you want to learn more about the benefits of design systems, I recommend you read my article "Why a Design System accelerates Software Design and Development".

The difference between component library and design system

UI component libraries and design systems differ in that component libraries are a collection of reusable UI components, while a design system is a comprehensive concept that includes not only UI components but also guidelines, principles, and best practices for building user interfaces.


Carbon is a design system developed by IBM and available for React, Angular and Vue.

Carbon Design System

Carbon stands out for its professionalism and high quality of the wide component library. It follows a consistent design language that uses colors in a targeted way and focuses on functionality. Carbon offers both a light and a dark theme, as well as a dim variant of each, which has a very positive effect on the readability of content. The comprehensive documentation contains all fundamental information as well as pattern for designing consistent user interfaces, which is very helpful for correct use of the design system. Carbon is suitable for desktop and mobile application development and is oriented towards the creation of data-rich interfaces, but can also be used for less complex interfaces.

Base Web

Base Web is a design system for React developed by Uber.

Base Web

Based on a black and white color scheme, the design language of Base Web is friendly, elegant and presented in a light and dark theme. It offers numerous components in different variants, which allows for high design flexibility. Special components such as a country code picker, a pin code form field, a file uploader with drag-and-drop functionality and many other special components are also available. The documentation is just as comprehensive as the component library, covering the theming topic in particular detail. Base Web is ideal for applications that require a visually appealing design or functionality similar to Uber's applications, as many special components are available for this purpose.

Material Design

Material Design is a design system developed by Google, available for React, Angular, and Vue.

At the time of writing, all libraries are still based on Material Design 2

The design language of Material Design is based on light, surfaces, and shadows that create a sense of depth and help highlight important information. It also offers many appealing microinteractions and animations as well as a light and a dark theme. Keyword theming, Material Design offers many possibilities for customization and addresses this in detail in the very comprehensive documentation, which includes many examples of use. Material UI is considered to be one of the most popular React UI libraries and there is a large community behind Material Design, so you are never on your own and usually finds an answer to questions. Material Design is versatile, for both data-rich and less complex interfaces.


Blueprint is a design system for React developed by Palantir.


When looking at Blueprint, it is immediately noticeable that the focus is on data-rich interfaces - which is not surprising given Palantir's business field. In addition to functionality, Palantir has not disregarded UI design, which allows Blueprint to be used to create visually appealing user interfaces. The library contains numerous components, including special ones such as a date-time picker with formatting options, a time zone select and even hotkeys. Also worth mentioning is the table component, which offers Excel spreadsheet-like behavior and a lot of flexibility. Although Blueprint was primarily designed for desktop applications, it is also suitable for mobile application development. When doing so, care should be taken to ensure that the touch target of all components is large enough.

Radix UI & React Aria

Radix and React Aria are libraries for React developed by WorkOS and Adobe.

Both Radix and React Aria provide an wide collection of unstyled components. They are technical blueprints for creating UI components where the design is entirely up to you, so you provide the CSS that gives the components their look. Since Radix and React Aria provide only the technical foundation for behavior, accessibility, and interaction, they do it well. They are accessible by ensuring that all types of interaction are supported, such as keyboard-only operation. They also support all common WAI-ARIA roles and attributes to ensure that components can be interpreted by screen readers.

All designed libraries follow a design language that gives them a certain look and feel. So if it's important to you to develop a design system that fits your product or business exactly, it can be attractive to develop it yourself from scratch rather than modify an existing design system. Furthermore, it can be more efficient because with a unstyled library, you create the concept yourself and decide how flexible to be with colors, fonts, spacing, icons, grids, and more. With a designed library, you usually follow the existing foundation, which can create obstacles to customization.