Free and open-source React sidebar navigation components built for modern applications and websites. These sidebar navigations are built using React Aria and styled with Tailwind CSS.
Installation
You can add the sidebar navigation base components to your project using the CLI or manually.
npx untitledui@latest add sidebar-navigation-base
Featured cards
These featured cards are used to display various information in the sidebar navigation. Feel free to just swap the existing cards with any of these cards presented below.
New features available!
Check out the new dashboard view. Pages now load faster.

Refer a friend
Earn 50% back for 12 months when someone uses your link.
- Complete your profile
- Verify your phone number
- Set up 2FA and backups
- Add payout bank details
Upgrade to PRO20% OFF
Unlock 20+ integrations, 40 GB data, and advanced reporting.
Need help with something?
Our experts are ready to help.
Join our workshopLive
Learn how to leverage Claude to supercharge your workflow.
Mathilde Lewis2 mins ago
I’ve finished adding my notes. Happy for you to review!
Current projects
Verify this device
Open the app and scan the QR code below to verify this device.
API reference
FeaturedCardCurrentProjects
Import FeaturedCardCurrentProjects from @/components/application/app-navigation/base-components/featured-cards. Renders a <div> element.
FeaturedCardEventCTA
Import FeaturedCardEventCTA from @/components/application/app-navigation/base-components/featured-cards. Renders a <div> element.
FeaturedCardFreeTrialCTA
Import FeaturedCardFreeTrialCTA from @/components/application/app-navigation/base-components/featured-cards. Renders a <div> element.
FeaturedCardImage
Import FeaturedCardImage from @/components/application/app-navigation/base-components/featured-cards. Renders a <div> element.
FeaturedCardMessage
Import FeaturedCardMessage from @/components/application/app-navigation/base-components/featured-cards. Renders a <div> element.
FeaturedCardOnboardingSteps
Import FeaturedCardOnboardingSteps from @/components/application/app-navigation/base-components/featured-cards. Renders a <div> element.
FeaturedCardQRCode
Import FeaturedCardQRCode from @/components/application/app-navigation/base-components/featured-cards. Renders a <div> element.
FeaturedCardReferralLink
Import FeaturedCardReferralLink from @/components/application/app-navigation/base-components/featured-cards. Renders a <div> element.
FeaturedCardSupportCTA
Import FeaturedCardSupportCTA from @/components/application/app-navigation/base-components/featured-cards. Renders a <div> element.
FeaturedCardUpgradeCTA
Import FeaturedCardUpgradeCTA from @/components/application/app-navigation/base-components/featured-cards. Renders a <div> element.
FAQs
Please refer to our frequently asked questions page for more.
There are five ready-made layouts, each exported as its own component: SidebarNavigationSimple, SidebarNavigationDualTier, SidebarNavigationSlim, SidebarNavigationSectionDividers, and SidebarNavigationSectionsSubheadings. They all take an items array and an activeUrl, so you can swap one for another without reshaping most of your data.
Every item follows the NavItemType type: label (required), plus optional href, icon (a component, not an element), badge (any React node — a string or number is auto-wrapped in a gray pill badge), items for sub-items, and divider. In SidebarNavigationSlim the icon is required on each item, since the collapsed rail shows icons only.
Pass the current path to the activeUrl prop. The sidebar compares it against each item's href and highlights the match, and the underlying NavItemBase also sets aria-current="page" on the active link so screen readers announce it. With a client-side router, wire activeUrl to your router's current pathname.
Give an item an items array of { label, href, badge? } objects. NavList renders those inside a native <details> element with a chevron trigger, and expands the group automatically when the active item is inside it. No extra state is needed on your side. Sub-items do not render icons — NavList passes only href and badge down to each child, so an icon on a sub-item is ignored.
For a plain rule between groups, use SidebarNavigationSectionDividers and insert { divider: true } entries into items — each one renders an <hr> in the list. For labelled groups, use SidebarNavigationSectionsSubheadings, whose items prop takes a different shape: an array of { label, items } objects, where label becomes the uppercase group heading.
Yes, and it is built in. Each variant wraps its content in MobileNavigationHeader, which renders a compact header with a hamburger button below the lg breakpoint and opens the sidebar inside a dismissable React Aria modal dialog. SidebarNavigationSlim is the exception: on mobile it shows a full list with labels instead of the icon rail. The full sidebar is shown as a fixed column from lg upwards.
SidebarNavigationSimple and SidebarNavigationDualTier accept a featureCard prop that takes any React node — for example one of the featured cards on this page — and renders it above the account card. SidebarNavigationSimple also accepts showAccountCard, which defaults to true — pass showAccountCard={false} to hide the account card. It also takes footerItems for the bottom links, and hideBorder to drop the right-hand border.