React UI Roundup
React UI Roundup

Are you a frontend developer or designer? Do you wish you had a one-stop-shop where you could check out the various implementations of common components? If so - React UI Roundup is for you!

Framework Statistics
NameHomepageRepositoryStarsForksIssuesLicense
Ant Designant.designgithub.com/ant-design/ant-design94,07851,7151,281MIT
Atlaskitatlassian.designbitbucket.org/atlassian/atlaskit-mk-2--------
Blueprintblueprintjs.comgithub.com/palantir/blueprint20,9542,198808Apache 2.0
Carbon Designreact.carbondesignsystem.comgithub.com/carbon-design-system/carbon8,2681,885800Apache 2.0
Chakra UIchakra-ui.com/docsgithub.com/chakra-ui/chakra-ui38,8073,3866MIT
Elastic UIelastic.github.io/euigithub.com/elastic/eui6,131843205Other
Elementelement.eleme.iogithub.com/ElemeFE/element54,21214,6342,894MIT
Elemental UIelemental-ui.comgithub.com/elementalui/elemental4,29821644MIT
Evergreenevergreen.segment.comgithub.com/segmentio/evergreen12,39682481MIT
Fluent UIdeveloper.microsoft.com/en-us/fluentuigithub.com/microsoft/fluentui19,0052,778682Other
Gestaltgestalt.netlify.appgithub.com/pinterest/gestalt4,28736810Apache 2.0
Grommetv2.grommet.iogithub.com/grommet/grommet8,3581,035353Apache 2.0
MUImui.com/material-ui/github.com/mui/material-ui95,16032,5241,828MIT
Onsen UIonsen.iogithub.com/OnsenUI/OnsenUI8,8451,01313--
Orbitorbit.kiwigithub.com/kiwicom/orbit1,41315533MIT
Prime Reactprimefaces.org/primereactgithub.com/primefaces/primereact7,5561,105341MIT
Quasarquasar.devgithub.com/quasarframework/quasar26,4033,584627MIT
React Bootstrapreact-bootstrap.github.iogithub.com/react-bootstrap/react-bootstrap22,5163,612211MIT
React Toolboxreact-toolbox.iogithub.com/react-toolbox/react-toolbox8,653978269MIT
react-mdreact-md.devgithub.com/mlaursen/react-md2,33729847MIT
Ring UIjetbrains.github.io/ring-ui/master/index.html?path=/docsgithub.com/JetBrains/ring-ui3,6601917Apache 2.0
Semantic UIsemantic-ui.comgithub.com/Semantic-Org/Semantic-UI51,1654,9261,077MIT
Smooth UIsmooth-code.com/open-source/smooth-uigithub.com/smooth-code/smooth-ui1,58910110MIT
Zendesk Gardengarden.zendesk.comgithub.com/zendeskgarden/react-components1,1019512Apache 2.0
Framework Features
Criteria
Native Dark Mode
The project is made with dark-mode styling in mind. An out-of-the-box dark mode is either used on the docs site itself or well documented and easy to configure.
Design Kits
Ready-made resources exist for designers such as Sketch or Figma download packs.
RTL Support
Explicit right-to-Left support for use in apps with languages like Arabic, Hebrew, or Persian.
Themer
A user-interactable theming area where designers and developers can play around with look and feel without needing to do any programming.
Native TypeScript
Is either written in TypeScript (ideally) or has TypeScript definitions directly in the project. DefinitelyTyped does not qualify.
NameNative Dark ModeDesign KitsRTL SupportThemerNative TypeScript
Ant DesignLink
Atlaskit--------
Blueprint--
Carbon DesignLink--
Chakra UI----
Elastic UI----
Element----Link--
Elemental UI----------
Evergreen--------
Fluent UI----
Gestalt--------
Grommet--Link
MUILink
Onsen UI------
Orbit--Link--
Prime React--------
Quasar--Link
React Bootstrap--------
React Toolbox--------
react-md------
Ring UI----------
Semantic UI------
Smooth UI--------
Zendesk Garden------
Alert
Alerts are used to show an important message to users.
Criteria
Closable
The alert has an "out of the box" way to dismiss, usually with an `onClose` prop.
Types
The alert has ready-made variations.
FrameworkNameClosableTypes
Ant DesignAlerterror, info, success, warning
AtlaskitSectionMessage--change, confirmation, error, info, warning
AtlaskitFlag--change, confirmation, error, info, warning
Chakra UIAlerterror, info, success, warning
ElementAlerterror, info, success, warning
Elemental UIAlert--danger, info, primary, success, warning
EvergreenAlertdanger, none, success, warning
Fluent UIMessageBarblocked, error, info, remove, severeWarning, success, warning
MUIAlerterror, info, success, warning
OrbitAlertcritical, info, success, warning
Quasarbanner--
React BootstrapAlertdanger, dark, info, light, primary, secondary, success, warning
Ring UIAlerterror, loading, message, success, warning
Smooth UIAlert--danger, dark, info, light, primary, secondary, success, warning
Zendesk GardenNotificationerror, info, success, warning

Blueprint, Carbon Design, Elastic UI, Gestalt, Grommet, Onsen UI, Prime React, React Toolbox, react-md, and Semantic UI appear to be missing an Alert component. Please file an issue if one now exists.

AppBar
The AppBar displays information and actions relating to the current screen.
Criteria
API
The API style used for the components contained within the AppBar.
Dense
There is a built-in way to make the bar take up less vertical space.
Sticky
A prop exists which can set the bar into a mode where it remains at the top of the screen, independent of scroll depth.
Theme Mode
The bar can be individually themed to use a theme mode that doesn't match the rest of the app. E.g. dark mode AppBar in a light mode app.
FrameworkNameAPIDenseStickyTheme Mode
Elastic UIHeadercustomComponents--
MUIAppBarchildren
React ToolboxAppBarprops----
react-mdAppBarcustomComponents--
Ring UIHeaderchildren--
Zendesk GardenHeadercustomComponents--
Avatar
Avatars can be used to represent people or objects.
Criteria
Badge
A custom badge or status is available or easily configurable.
Shapes
Avatars can be easily formed into different styles using a prop or similar mechanism (not custom CSS).
Sizes
Avatars can be easily sized between different (and consistent) major sizes.
Types
Avatars can be presented to users as icons (i.e. generic fallback illustrations), custom images, or can contain text.
FrameworkNameBadgeShapesSizesTypes
Ant DesignAvatarcircle, squaredefault, large, number, smallicon, image, text
AtlaskitAvatar--circle, squarelarge, medium, small, xlarge, xsmall, xxlargeicon, image
Chakra UIAvatarcircle2xl, 2xs, lg, md, sm, xl, xs--
ElementAvatar--circle, squarelarge, medium, number, smallimage, image, text
EvergreenAvatar--circlenumberimage, text
Fluent UIPersonacircle, rounded-squarenumbericon, image, text
MUIAvatarcircle, rounded-square, squarenumbericon, image, text
Quasaravatarcircle, rounded-square, squarelg, md, number, sm, xl, xsicon, image, text
Ring UIAvatar--circle, rounded-square18, 20, 24, 32, 40, 48, 56, numberimage
Zendesk GardenAvatarcircle, rounded-squareextraextrasmall, extrasmall, large, medium, smallicon, image, text
AvatarGroup
AvatarGroups stack a set of Avatars into a customized list, often with customized animations and options.
Criteria
Cascade Direction
A prop exists that allows you to set whether the children overlap above or below each other.
Expandable Group
Avatar groups support expandable lists where a user can click to see more members in the list.
Max Count
A custom number can be set representing the number of avatars shown.
FrameworkNameCascade DirectionExpandable GroupMax Count
Ant DesignAvatar.Groupabove
AtlaskitAvatarGroupbelow
Chakra UIAvatarGroupbelow--
Fluent UIFacepileno-overlap
MUIAvatarGroupbelow--
Button
Users trigger actions by clicking on buttons.
Criteria
Disabled
A `disabled` prop exists for use in situations where the user cannot interact with the button.
Groupable
A ButtonGroup component exists in the library, or other such pre-made methods for making button groups.
Icon
An icon can be included either at the left or right of the text, or button can be used with just an icon and no text (notated as `only`).
Loading
The button has a pre-made loading state for asynchronous events.
Sizes
The button can be easily sized between different (and consistent) major sizes.
FrameworkNameDisabledGroupableIconLoadingSizes
Ant DesignButtonleft, only, rightdefault, large, small
AtlaskitButtonleft, right--
BlueprintButtonleft, only, rightdefault, large
Carbon DesignButtononly, rightdefault, field, small
Chakra UIButton--left, only, right--lg, md, sm, xs
Elastic UIButtonleft, only, rightm, sm, xs
ElementButtonleft, only, rightdefault, medium, mini, small
Elemental UIButton------default, extra small, large, small
EvergreenButtonleft, only, rightarbitrary pixel sizes
Fluent UIButton--------
GestaltButton--only--lg, md, sm
GrommetButton--left, only, right----
MUIButtonleft, only, right--large, medium, small
Onsen UIButton------default, large
OrbitButtonleft, only, rightlarge, normal, small
Prime ReactButton----left, only, right----
Quasarbtnleft, only, rightcustom, lg, md, sm, xs
React BootstrapButton----lg, sm
React ToolboxButton--left, only----
react-mdButton--left, only, right----
Ring UIButtonleft, onlydefault, large, small
Semantic UIButtonleft, only, rightbig, huge, large, massive, medium, mini, small, tiny
Smooth UIButton----base, lg, sm, xl, xs
Zendesk GardenButtononly--default, large, small
Checkbox
Users toggle between checked, unchecked (or indeterminate) values with checkboxes.
Criteria
Custom Icon
A custom icon can be provided in place of the checkbox itself via a prop or a child.
Disabled
The checkbox has a `disabled` state, indicating the user cannot interact with it.
Indeterminate
The checkbox has an indeterminate state.
Invalid
The checkbox has an `invalid` or `error` state.
Label Placement
The text can be positioned at different places around the checkbox.
FrameworkNameCustom IconDisabledIndeterminateInvalidLabel Placement
Ant DesignCheckbox----right
AtlaskitCheckbox--right
BlueprintCheckbox------left, right
Carbon DesignCheckbox----right
Chakra UICheckbox--right
Elastic UICheckbox----right
ElementCheckbox----right
Elemental UICheckbox--------right
EvergreenCheckbox--right
Fluent UICheckbox----left, right
GestaltCheckbox--right
GrommetCheckBox----right
MUICheckbox--above, below, left, right
Onsen UICheckbox--right
OrbitCheckbox----right
Prime ReactCheckbox------right
Quasarcheckbox----left, right
React BootstrapForm.Check------
React ToolboxCheckbox------right
react-mdCheckbox----right
Ring UICheckbox------right
Semantic UICheckbox----right
Smooth UICheckbox------right
Zendesk GardenCheckbox----right
DatePicker
Users select a date or date range using a date picker.
Criteria
Clearable
Has a prop that allows the user to easily clear the date selection.
Custom Locale
A developer can specify a custom locale with a prop.
Min/Max
Allows a devloper to easily set a minimum and maximum date.
Modes
Allows users to quickly select from different magnituteds of lengths of time.
Presets
A super simple way exists to provide the user with preset dates (e.g. "Today", "Last Week", , "Past 3 years").
Range
An out-of-the-box solution exists for allowing the user to select date ranges.
Time
Users are able to input times.
FrameworkNameClearableCustom LocaleMin/MaxModesPresetsRangeTime
Ant DesignDatePicker--day, month, quarter, week, year
BlueprintDatePicker--day, month, year
Carbon DesignDatePicker----day, year--
Elastic UIDatePickerday--
ElementDatePicker--day, month, week, year
Fluent UIDatePicker----day, month, year----
GestaltDatePicker--day----
GrommetDateInput------day------
MUIDatePicker------day----
Quasardate----day, month, year--
React ToolboxDatePicker--day, month, year------
Ring UIDatePicker--day, month, year--
Zendesk GardenDatePicker--day----

Atlaskit, Chakra UI, Elemental UI, Evergreen, Onsen UI, Orbit, Prime React, React Bootstrap, react-md, Semantic UI, and Smooth UI appear to be missing a DatePicker component. Please file an issue if one now exists.

ErrorBoundary
ErrorBoundaries are a React 16+ specific feature that uses the componentDidCatch API for handling uncaught errors without unmounting the whole React component tree.
Criteria
Custom Text
Has a prop or props that can be used to provide a custom title and/or description (as a string, not a ReactNode).
Drop-In JSX Fallback
Has a prop that can be used to provide a custom ReactNode fallback that does not receive the date of `componentDidCatch`.
Wrapper JSX Fallback
Has a prop that can be used to provide a custom ReactNode for fallback which receives the data of `componentDidCatch`.
FrameworkNameCustom TextDrop-In JSX FallbackWrapper JSX Fallback
Ant DesignAlert.ErrorBoundary----
Carbon DesignErrorBoundary----
Elastic UIErrorBoundary------
Select
A Select allows a user to select a value from a series of options. Much more advanced than the native HTML select.
Criteria
Async
Has support fo async-loaded lists (for example, a loading state).
Disabled
The whole select be disabled with a built-in prop.
Disabled Options
Individual options can be easily disabled with a prop.
Filterable
Filter the options of the select with keyboard input.
Groupable
Can group the options into sub sections within the options list.
Icons
Has out-of-the-box (i.e. props) support for start or end icons (or can easily be composed with icons and has examples of such on the docs).
Virtual
Either had a prop that you can use to make the items virtualized, or proveds a simple (documented) way to use another library to do it, e.g. react-virtualized.
FrameworkNameAsyncDisabledDisabled OptionsFilterableGroupableIconsVirtual
Ant DesignSelectend
AtlaskitSelect----
BlueprintSelect
Carbon DesignSelect------
Chakra UISelect--------
Elastic UISuperSelect------composable--
ElementSelect--
Elemental UIDropdown----------
EvergreenSelectMenustart
Fluent UIDropdown--composable--
GestaltSelectList--------
GrommetSelect--------
MUISelect--composable--
Onsen UISelect--------
OrbitSelect------end, start--
Prime ReactDropdowncomposable
Quasarselect--
React BootstrapDropdown----
React ToolboxDropdown--------
react-mdDropdown----------end, start
Ring UISelect----
Semantic UIDropdown--composable--
Smooth UISelect--------
Zendesk GardenSelect------start--
Stepper
Navigation that guides users through the steps of a task.
Criteria
Can Be Vertical
The steps can be stacked vertically.
Clickable
A user can click on the step itself to navigate.
Step Description
A step can have a subtext with a description.
Step Error
A step with an error can be easily identified to the user.
Step Icon
The steps have a prop whereby they can be given custom icons.
FrameworkNameCan Be VerticalClickableStep DescriptionStep ErrorStep Icon
Ant DesignSteps
AtlaskitProgressTracker--------
Carbon DesignProgressIndicator--
Elastic UISteps--------
ElementSteps--
MUIStepper
Prime ReactSteps--------
Quasarstepper
Semantic UISteps--
Zendesk GardenStepper----------
Switch
Used to toggle between two states: on and off.
Criteria
Disabled
The switch has a `disabled` state, indicating that the user cannot interact with it.
Indeterminate
The switch has an ability to display an indeterminate state.
Internal Icons
The switch has a prop (or child) to include custom icons within the space of the switch (e.g. a `checkmark` and an `x` icon).
Internal Text
The switch has a prop (or child) to include custom text within the space of the switch (e.g. the text `on` and `off`).
Lable Placement
Where a label can be attached to the switch.
Loading
The switch has a `loading` state that indicates a pending state of a switch action.
Sizes
The lable has native, pre-configured size options.
FrameworkNameDisabledIndeterminateInternal IconsInternal TextLable PlacementLoadingSizes
Ant DesignSwitch--default, small
AtlaskitToggle--------large, regular
BlueprintSwitch----left, right--default, large
Carbon DesignSwitch------right--default, small
Chakra UISwitch------left, right--lg, md, sm
Elastic UISwitch------right--compressed, default
ElementSwitch------left, right--
EvergreenSwitch--------integers
Fluent UIToggle------left, right--
GestaltSwitch--------
GrommetCheckBox------left, right--
MUISwitch------above, below, left, right--default, small
Onsen UISwitch--------
Prime ReactInputSwitch--------
Quasartoggle----left, right--custom, lg, md, sm, xl, xs
React BootstrapForm.Check------right--
React ToolboxSwitch------right--
Ring UIToggle------left, right--
Smooth UISwitch------base, lg, sm, xl, xs
Zendesk GardenToggle--------above, below--

Elemental UI, Orbit, react-md, and Semantic UI appear to be missing a Switch component. Please file an issue if one now exists.

Tabs
Users switch between different views with tabs.
Criteria
Can Be Vertical
The tabs can be stacked vertically.
FrameworkNameCan Be Vertical
Ant DesignTabs
AtlaskitTabs--
BlueprintTabs
Carbon DesignTabs--
Chakra UITabs
Elastic UITabs--
ElementTabs
EvergreenTablist
Fluent UIPivot--
GestaltTabs--
GrommetTabs--
MUITabs
Onsen UITabbar--
Prime ReactTabView--
Quasartabs
React BootstrapTabs--
React ToolboxTabs--
react-mdTabs--
Ring UITabs--
Semantic UITabs--
Zendesk GardenTabs

Elemental UI, Orbit, and Smooth UI appear to be missing a Tabs component. Please file an issue if one now exists.