High-performance, accessible UI components for Leptos with 57+ components and 1200+ tests
A Rust port of Radix UI primitives for Leptos, providing accessible, unstyled UI components with exceptional performance.
- 🚀 High Performance: 538KB optimized WASM bundle (down from 5.8MB!)
- ♿ Accessibility First: Built with ARIA compliance and keyboard navigation
- 🎨 Unstyled Components: Clean, customizable components without opinionated styling
- 🌐 SSR & Hydration: Full support for server-side rendering and hydration
- 🧪 Comprehensive Testing: 1,792+ passing tests with TDD infrastructure, property-based testing, and mutation testing
- 📱 Responsive Design: Mobile-first components with touch support
- 🔧 Feature Flags:
core,experimental, andfullfeature sets for optimal bundle sizes - 🔒 Type Safety: Full Rust type safety with excellent IDE support
- ⚡ Zero Runtime: No JavaScript runtime overhead, pure WASM performance
- 🧪 TDD Infrastructure: World-class Test-Driven Development with 1,792+ passing tests
- 🔬 Property-Based Testing: Edge case detection with
proptest - 🎯 Quality Gates: Automated compliance checking and mutation testing
Radix-Leptos is on track to achieve complete parity with Radix UI Primitives:
- ✅ 57 Components implemented with TDD
- ✅ Complete TDD Infrastructure (100%)
- ✅ 1,865+ Passing Tests across all crates
- 🔄 3+ Components planned for v1.0.0
- v0.9.0 (January 2025): ✅ COMPLETE - Architecture Refactoring & Critical Fixes Release
- 🏗️ Complete Architecture Refactoring (modular components)
- 🔧 45 Critical Compilation Errors Fixed → 0 errors
- ✅ 1,865 Tests Passing (100% Success Rate)
- 🚀 Feature Gating System (core/experimental/full)
- 📦 Full Backward Compatibility
- v0.3.0 (September 2025): ✅ COMPLETE - Core form components (Dialog, Form, Select, etc.)
- v0.4.0 (September 2025): ✅ COMPLETE - Navigation and layout components
- v0.5.0 (September 2025): ✅ COMPLETE - Advanced data visualization and specialized components
- v0.6.0 (September 2025): ✅ COMPLETE - Enhanced components and advanced UI patterns
- v1.0.0 (Q2 2026): Complete Radix UI parity
📋 View Full Roadmap | 📊 Component Progress
[dependencies]
radix-leptos = "0.9.0"
leptos = "0.8.8" # ✅ Full compatibility with latest Leptos!
# For minimal bundle size (recommended for production)
radix-leptos = { version = "0.8.5", features = ["core"] }
# For all components
radix-leptos = { version = "0.8.5", features = ["full"] }
# For experimental components (use with caution)
radix-leptos = { version = "0.8.5", features = ["experimental"] }Radix-Leptos v0.8.5 is fully compatible with Leptos 0.8.8!
| Radix-Leptos Version | Leptos Version | Status |
|---|---|---|
| 0.8.4 | 0.8.7 and earlier | ✅ Compatible |
| 0.8.4 | 0.8.8 | ❌ Broken (compilation errors) |
| 0.8.5 | 0.8.8 | ✅ Compatible |
| 0.8.5 | 0.8.7 and earlier | ✅ Compatible |
- ✅ 4 Critical Compilation Errors resolved
- ✅ Signal Attribute System updated for Leptos 0.8.8
- ✅ Dark Mode Components fully functional
- ✅ Theme Provider Components fully functional
- ✅ Zero Breaking Changes to public API
- ✅ Zero Migration Required for users
use leptos::*;
use radix_leptos::*;
#[component]
pub fn App() -> impl IntoView {
view! {
<div>
<Button>Click me!</Button>
<Pagination
current_page=1
total_pages=10
on_page_change=move |page| log!("Page changed to {}", page)
/>
</div>
}
}Radix-Leptos is organized into a clean, modular architecture with feature flags for optimal bundle sizes:
components/- All UI components organized by functionalitytheming/- Theme system with prebuilt themes and customizationutils/- Shared utilities (merge_classes, generate_id, etc.)
| Feature | Description | Components Included |
|---|---|---|
core |
Production-ready components | Button, Checkbox, Dialog, Form, Input, Select, etc. |
experimental |
Incomplete/experimental components | Chart, DataTable, VirtualList, RichTextEditor, etc. |
full |
All components | core + experimental |
components/
├── Core Components (always available)
│ ├── button.rs, checkbox.rs, dialog.rs
│ ├── form.rs, input.rs, select.rs
│ └── pagination/, form_validation/
├── Experimental Components (feature-gated)
│ ├── chart.rs, data_table.rs
│ ├── virtual_list.rs, rich_text_editor.rs
│ └── [Many more...]
└── mod.rs (with feature gating)
- Production: Use
features = ["core"]for stable, tested components - Development: Use
features = ["full"]for access to all components - Experimental: Use
features = ["experimental"]to test incomplete components
use radix_leptos::Button;
#[component]
pub fn MyButton() -> impl IntoView {
view! {
<Button
on_click=move |_| log!("Button clicked!")
variant="primary"
size="large"
>
"Click me!"
</Button>
}
}use radix_leptos::pagination::*;
#[component]
pub fn MyPagination() -> impl IntoView {
let (current_page, set_current_page) = signal(1);
view! {
<Pagination
current_page=current_page
total_pages=25
page_size=10
on_page_change=move |page| set_current_page.set(page)
>
<PaginationContent>
<PaginationItem>
<PaginationPrevious />
</PaginationItem>
<PaginationItem>
<PaginationNext />
</PaginationItem>
</PaginationContent>
</Pagination>
}
}- Pagination: Page navigation with multiple variants and sizes
- Navigation: Basic navigation utilities and patterns
- Core Utilities: Essential traits and helper functions
- Form Components: Button, TextInput, Select, Checkbox, RadioGroup, Switch, Slider
- Feedback Components: Toast, Alert, Badge, Avatar, Progress
- Media Components: Image, Video, Audio, Carousel
- Navigation Components: DropdownMenu, NavigationMenu, Menubar, HoverCard, Popover, ScrollArea, Toggle, ToggleGroup, Toolbar
- Data Visualization: Chart, DataTable, VirtualList, SplitPane, LineChart, BarChart, PieChart, ScatterPlot
- Advanced Components: DragDrop, RichTextEditor, ColorPicker, ImageViewer, CodeEditor, Timeline, Gauge, CommandPalette
- Enhanced Components: Context Menu, Collapsible, Aspect Ratio, Calendar, Date Picker, File Upload, Search, Combobox, Avatar, Separator, Label, Toast
# Run comprehensive tests
pnpm run test:all
# Start development server
pnpm run start:dev
# Build production bundle
pnpm run build:prod| Metric | Before | After | Improvement |
|---|---|---|---|
| Bundle Size | 5.8MB | 538KB | 92.7% reduction |
| Load Time | ~15s | ~130ms | 98.3% faster |
| Components | 36 | 9 (core) | Optimized for production |
| Memory Usage | High | Low | Efficient WASM |
| Feature | Radix-Leptos | Traditional JS | Other Rust UI |
|---|---|---|---|
| Bundle Size | 538KB | 2-5MB+ | 1-3MB+ |
| Performance | Native WASM | JavaScript | WASM + JS |
| Type Safety | Rust-level | TypeScript | Rust-level |
| Accessibility | Built-in ARIA | Varies | Varies |
| Styling | Unstyled | Often opinionated | Mixed |
| SSR Support | Full | Limited | Limited |
| Memory Usage | Low | High | Medium |
# Run all tests
pnpm run test:all
# Run specific test categories
pnpm run test:comprehensive
pnpm run test:pagination
pnpm run test:performance
pnpm run test:cross-browser
# Manual testing
open http://localhost:8081/manual-test-suite.htmlradix-leptos/
├── crates/ # Core library crates
│ ├── radix-leptos-core/ # Core utilities and traits
│ ├── radix-leptos-primitives/ # UI component primitives
│ └── radix-leptos/ # Main library facade
├── examples/ # Example applications
├── docs/ # Documentation
│ ├── remediation/ # Remediation documentation
│ ├── releases/ # Release notes and changelogs
│ ├── developer-guide/ # Development guidelines
│ └── user-guide/ # User documentation
├── tests/ # Comprehensive test suite
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ ├── e2e/ # End-to-end tests
│ └── performance/ # Performance tests
└── scripts/ # Development scripts
├── remediation/ # Error fixing and remediation
├── maintenance/ # Build and deployment
└── testing/ # Test automation
The project includes organized automation scripts for development and maintenance:
- Error fixing scripts for systematic code remediation
- Phase execution scripts for organized error resolution
- Complete remediation automation for large-scale fixes
- Build automation for development and production
- Deployment scripts for automated releases
- Test execution for comprehensive validation
# Run complete remediation
./scripts/remediation/run_full_remediation.sh
# Build for production
./scripts/maintenance/build-production.sh
# Run all tests
./scripts/maintenance/run-tests.sh- Pagination components
- Basic navigation
- Essential utilities
- All components
- Advanced interactions
- Extended functionality
- 📚 Complete Documentation - All guides, APIs, and resources
- 🚀 Development Roadmap - Future features and timeline
- 🧪 Testing Guide - How to test components
- 📊 Performance Guide - Bundle optimization details
- 🚀 Production Deployment - Deployment guide
- API Documentation - Official crates.io docs
We welcome contributions! Please see our Contributing Guide for details.
This project is licensed under the MIT License - see the LICENSE file for details.
- Radix UI for the original design system
- Leptos for the amazing Rust web framework
- The Rust community for continuous support
- Core component library
- Performance optimization
- Comprehensive testing
- Production deployment
- Additional components
- Theme system
- Animation library
- Component playground
📋 View Full Development Roadmap
- 📖 Documentation: https://docs.rs/radix-leptos
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 📚 Examples: Examples Directory
- 🧪 Testing: Test Suite
- 📊 Performance: Performance Analysis
Radix-Leptos is production-ready with:
- ✅ Comprehensive Testing: 10+ Playwright tests
- ✅ Performance Optimized: 538KB bundle size
- ✅ Accessibility Compliant: WCAG guidelines
- ✅ Cross-Browser: Chrome, Firefox, Safari, Edge
- ✅ Mobile Support: Touch and responsive design
- ✅ Type Safe: Full Rust type safety
Ready for production use with 538KB optimized bundle! 🎉
Latest Version: v0.8.5 - ✅ Leptos 0.8.8 Compatibility Release with 1,792+ passing tests!