shadcn-ui/ui · error · Error
useSidebar must be used within a SidebarProvider.
Error message
useSidebar must be used within a SidebarProvider.
What it means
Same guard as the bases/radix sidebar: useSidebar reads SidebarContext, populated only by <SidebarProvider>. This is the new-york-v4 legacy copy; any sidebar sub-component rendered outside <SidebarProvider> throws.
Source
Thrown at apps/v4/registry/new-york-v4/ui/sidebar.tsx:50
const SIDEBAR_WIDTH_ICON = "3rem"
const SIDEBAR_KEYBOARD_SHORTCUT = "b"
type SidebarContextProps = {
state: "expanded" | "collapsed"
open: boolean
setOpen: (open: boolean) => void
openMobile: boolean
setOpenMobile: (open: boolean) => void
isMobile: boolean
toggleSidebar: () => void
}
const SidebarContext = React.createContext<SidebarContextProps | null>(null)
function useSidebar() {
const context = React.useContext(SidebarContext)
if (!context) {
throw new Error("useSidebar must be used within a SidebarProvider.")
}
return context
}
function SidebarProvider({
defaultOpen = true,
open: openProp,
onOpenChange: setOpenProp,
className,
style,
children,
...props
}: React.ComponentProps<"div"> & {
defaultOpen?: boolean
open?: boolean
onOpenChange?: (open: boolean) => void
}) {View on GitHub (pinned to efac598707)
Solutions
- Wrap the layout in <SidebarProvider>.
- Ensure <SidebarProvider> wraps both <Sidebar> and <SidebarInset>.
- Move portal sidebar content back under the provider.
Example fix
// before <div> <Sidebar /> </div> // after <SidebarProvider> <Sidebar /> <SidebarInset /> </SidebarProvider>
Defensive patterns
Strategy: validation
Validate before calling
function useOptionalSidebar() {
return React.useContext(SidebarContext)
}
const sidebar = useOptionalSidebar()
if (!sidebar) return null Type guard
function useHasSidebarProvider(): boolean {
return React.useContext(SidebarContext) !== null
} Prevention
- Wrap the layout containing new-york-v4 sidebar pieces in <SidebarProvider>.
- Keep <Sidebar> and <SidebarInset> under the same provider.
- Render portal sidebar content within the provider subtree.
When it happens
Trigger: Rendering new-york-v4 <Sidebar>, <SidebarTrigger>, or <SidebarInset> outside of <SidebarProvider>; portal/modal sidebar content outside the provider subtree.
Common situations: Layout refactor moving SidebarProvider off a route; copy-pasting SidebarTrigger into a header above the provider.
Related errors
- useSidebar must be used within a SidebarProvider.
- useSidebar must be used within a SidebarProvider.
- useSidebar must be used within a SidebarProvider.
- useCarousel must be used within a <Carousel />
- useChart must be used within a <ChartContainer />
AI-assisted analysis of shadcn-ui/ui@efac598707 (2026-08-12).
Data as JSON: /api/errors/00069dcdc439dc60.
Report an issue: GitHub.