--- name: base-ui-react description: MUI Base UI unstyled React components with Floating UI. Use for accessible components, Radix UI migration, render props API, or encountering positioning, popup, v1.0 beta issues. Keywords: base-ui, @base-ui-components/react, mui base ui, unstyled components, accessible components, render props, radix alternative, radix migration, floating-ui, positioner pattern, headless ui, accessible dialog, accessible select, accessible popover, accessible tooltip, accessible accordion, number field, cloudflare workers ui, beta components license: MIT metadata: version: "2.0.0" last_verified: "2025-11-18" production_tested: true token_savings: "~62%" errors_prevented: 10 templates_included: 7 references_included: 3 --- # Base UI React **Status**: Beta (v1.0.0-beta.4) ⚠️ | **Last Verified**: 2025-11-18 --- ## What Is Base UI? MUI's unstyled, accessible React component library: - 27+ accessible components - Render props pattern - Full styling control - Floating UI integration - Alternative to Radix UI **Beta status:** v1.0.0-beta.4 (stable v1.0 expected Q4 2025) --- ## Quick Start ### Install ```bash bun add @base-ui-components/react ``` ### Basic Dialog ```typescript import * as Dialog from '@base-ui-components/react/dialog'; export function MyDialog() { return ( Open Title Content Close ); } ``` ### Basic Select ```typescript import * as Select from '@base-ui-components/react/select'; Option 1 Option 2 ``` **Load `references/setup-guide.md` for complete examples.** --- ## Core Components **Available (27+):** - Dialog - Select - Popover - Tooltip - Accordion - NumberField - Checkbox - Switch - Tabs - Slider - And more... --- ## Critical Rules ### Always Do ✅ 1. **Use Portal** for popups (Dialog, Select, Popover) 2. **Use Positioner** for floating elements 3. **Add Backdrop** for modal dialogs 4. **Style with Tailwind** (or any CSS) 5. **Use render props** (not asChild like Radix) 6. **Test accessibility** (ARIA built-in) 7. **Handle Portal edge cases** (SSR, hydration) 8. **Check beta docs** for breaking changes 9. **Use TypeScript** for better DX 10. **Test on target browsers** ### Never Do ❌ 1. **Never use asChild** (use render function instead) 2. **Never skip Portal** for popups (positioning breaks) 3. **Never skip Positioner** (Floating UI won't work) 4. **Never assume API stability** (beta software) 5. **Never skip accessibility testing** 6. **Never use with React <19** (requires React 19+) 7. **Never skip Backdrop** for modals 8. **Never hardcode z-index** (use Portal) 9. **Never skip SSR testing** (hydration issues) 10. **Never assume Radix compatibility** (different API) --- ## With Tailwind ```typescript Dialog Title Dialog content here Close ``` --- ## Common Use Cases ### Use Case 1: Modal Dialog ```typescript Open Modal Confirm Action Are you sure? Cancel ``` ### Use Case 2: Dropdown Select ```typescript Option 1 Option 2 ``` ### Use Case 3: Tooltip ```typescript import * as Tooltip from '@base-ui-components/react/tooltip'; Hover me Tooltip text ``` --- ## Beta Considerations **Stable for production:** - Dialog - Popover - Tooltip - Select - Accordion **Use with caution:** - NumberField (API may change) - Complex form components **Migration path:** - v1.0 stable expected Q4 2025 - Breaking changes will be documented - Codemods likely provided --- ## vs Radix UI | Feature | Base UI | Radix UI | |---------|---------|----------| | Pattern | Render props | asChild | | Positioning | Floating UI built-in | Manual | | Beta | Yes | Stable | | Tree-shaking | Better | Good | | Bundle size | Smaller | Larger | **When to use Base UI:** - Prefer render props - Need built-in positioning - Want smaller bundle - Okay with beta **When to use Radix:** - Need stability - Prefer asChild pattern - Established ecosystem --- ## Resources **References** (`references/`): - `example-reference.md` - Detailed component examples and patterns - `migration-from-radix.md` - Complete migration guide from Radix UI (includes render prop pattern explanation) - `setup-guide.md` - Installation and setup walkthrough **Templates** (`templates/`): - `Accordion.tsx` - Accordion component with render props - `Dialog.tsx` - Modal dialog example - `NumberField.tsx` - Number input with validation - `Popover.tsx` - Popover with positioning - `Select.tsx` - Select dropdown - `Tooltip.tsx` - Tooltip component - `migration-example.tsx` - Radix to Base UI migration example --- ## Official Documentation - **Base UI**: - **Components**: - **Migration Guide**: --- **Questions? Issues?** 1. Check `references/setup-guide.md` for setup 2. Review beta status warnings 3. See official docs for latest updates 4. Consider Radix if need stability