Release Notes
Changelog
Every release of sv5ui - new features, breaking changes, bug fixes, and improvements.
v2.6.1 Latest August 25, 2026 GitHub Bug Fixes
- DropdownMenu and Popover arrows now carry the panel ring. Both are stroked along their slanted edges through the new arrowBorder ui slot, and the fill overlaps the panel edge so the outline reads as one unbroken line instead of cutting across the arrow base docs →
New Features
- ScrollArea - a styleable scrollbar over native scrolling, with per-axis control, four visibility modes, and a bindable viewport ref docs →
- ColorPicker - saturation area, hue and alpha sliders, preset swatches, an editable field and an eyedropper, with hex, rgb and hsl output docs →
Improvements
- Table scrolls on both axes inside a ScrollArea. New scrollArea prop and scroll ui slot; the root is now overflow-hidden, so a bare max-height is enough docs →
- Sidebar scrolls its content column inside a ScrollArea. New scrollArea prop; ui.content no longer carries flex-1 or the overflow classes docs →
- Slideover scrolls its body inside a ScrollArea. New scrollArea prop; ui.body no longer carries flex-1 or overflow-y-auto docs →
- NavigationMenu scrolls a horizontal list inside a ScrollArea. New scrollArea prop and scroll ui slot; vertical orientation is unaffected docs →
- Lightbox scrolls its thumbnail strip inside a ScrollArea. New scrollArea prop and thumbnailsScroll ui slot docs →
- New icons.eyeDropper configuration key, defaulting to lucide:pipette docs →
Bug Fixes
- DropdownMenu arrow was clipped by the panel it points from. The content is now overflow-visible when an arrow is present, and ui.arrow reaches the arrow element docs →
- Popover arrow rendered unstyled instead of taking the panel color docs →
- lucide:pipette is bundled for SSR, so the eyedropper button renders on the server rather than popping in after hydration docs →
New Features
- Tree - hierarchical tree view with multi-select, indeterminate state, full keyboard navigation, and bind:api docs →
- Lightbox - full-screen viewer for images, video and iframes, with zoom, swipe, thumbnails, captions and slideshow docs →
- NavigationMenu - horizontal mega-menu or vertical disclosures, with nested items, active-route detection, and a collapsed icon rail with flyouts docs →
- Sidebar - collapsible dashboard sidebar built on NavigationMenu: sidebar/floating/inset variants, icon or offcanvas collapse, persisted state, mobile drawer, and bind:api docs →
- SidebarTrigger - header button that collapses the sidebar on desktop and opens the mobile menu on small screens docs →
Improvements
- Icon - the default loading spinner is now lucide:loader-circle , replacing the deprecated lucide:loader-2 . It looks the same docs →
Bug Fixes
- Icon - built-in icons now render during SSR instead of loading from the Iconify API after hydration, so they no longer pop in and shift the layout on first paint. They also work offline. Adds ~1.2KB gzip docs →
New Features
- DatePicker - segmented date input with a calendar popover, granularity, min/max, locale, and an optional time field docs →
- DateRangePicker - start/end segmented inputs with a two-month range calendar and minDays/maxDays constraints docs →
- TimeField - segmented time input with granularity, 12/24-hour cycle, and min/max limits docs →
- InputNumber - numeric input with stepper buttons, locale-aware formatting, and min/max clamping docs →
- InputTags - tag input rendering values as removable badges with delimiter, paste, and duplicate handling docs →
- Rating - star rating input with half steps, readonly display, and custom icons docs →
- Toggle - two-state pressed button with icon-only mode and aria-pressed semantics docs →
- ToggleGroup - single or multiple selection with segmented-control styling and roving focus docs →
Improvements
- Calendar - disabled dates now dim with opacity-50, and range-selection styling applies to range mode docs →
New Features
- Tour - spotlight product tour: per-step placement, async guards, waitForTarget, centered dialog steps docs →
- useTour - headless Tour controller (start/stop/next/prev/goTo) with persistence for multi-page tours docs →
- Error - pre-built error page with clear button and svelte:boundary reset support docs →
- Header - sticky app header with brand link, layout areas, and a Modal/Slideover/Drawer mobile menu docs →
- Main - content container filling the viewport below the header docs →
- Footer / FooterColumns - app footer with link-group grid, active links, and external indicators docs →
- App shell height contract: --ui-header-height CSS variable shared by Header, Main, and Error docs →
- Icons config: new defaults menu and external docs →
New Features
- useEventListener - attach DOM event listeners reactively docs →
- useResizeObserver / useElementSize - track element dimensions docs →
- useScrollLock - lock page or element scroll docs →
- useFocusTrap - trap keyboard focus inside a container docs →
- useLocalStorage - reactive localStorage with SSR safety docs →
- useThrottle - throttle rapidly-firing values docs →
- useIntersectionObserver - observe viewport intersection docs →
- useTimeout - cancelable, restartable setTimeout docs →
- useInterval - pausable setInterval with reactive delay docs →
- useDebouncedState - debounced state with immediate setter docs →
Bug Fixes
- SelectMenu - trigger changed to <div role="button"> , fixes SSR hydration mismatch. Update custom selectors to [data-combobox-trigger] . docs →
- DropdownMenu / ContextMenu - checkbox and radio checked-indicator icon now correctly sized. docs →
Improvements
- Packaging - dist/*.svelte files preprocessed to plain JS, fixes Rolldown/Vite 8 parse errors.
- Hook types - barrel switched to export * ; per-hook return-type interfaces are now inferred.
Breaking Changes
- Modal, Slideover, Drawer - trigger snippet now receives a props argument that must be spread onto the trigger element. docs →
New Features
- Editor - onImageUploadError callback prop for handling image upload failures. docs →
- Editor - image URL validation: blocks javascript: , SVG data URIs, and data:text/* schemes. docs →
- Command - exports CommandGroup and CommandItem types. docs →
- Input - exports InputValue type. docs →
Improvements
- data-* passthrough tightened to string | number | boolean | null | undefined across Icon, Tabs, Pagination, Command, Select, SelectMenu, Collapsible.
- Performance - memoized tailwind-variants in Accordion, Progress, Switch, Stepper, ThemeModeButton, Skeleton.
- Editor - lazy-loads tiptap-markdown and table extension to reduce initial bundle.
- SelectMenu - 200ms search debounce to reduce re-renders during typing. docs →
Bug Fixes
- Calendar - year navigation buttons now work correctly. docs →
- RadioGroup - <legend> element now has correct accessibility attributes. docs →
- FileUpload - blob URLs properly cleaned up on unmount. docs →
Breaking Changes
- DropdownMenu - trigger snippet now receives { open, props } . Spread props onto the focusable trigger element. docs →
- Removed: wireFormEvents helper - use useFormFieldEmit instead. docs →
- Removed: Select defaultValue prop - set initial value via bind:value . docs →
- Removed: TabsItem.slot prop. docs →
- Removed: DropdownMenuRadioGroup.name prop. docs →
New Features
- Separator - new position prop: start | center | end for label positioning. docs →
- Button / Link - validates native form and anchor HTML attributes. docs →
- Icon - validates SVG, aria-* , data-* , and event handler attributes. docs →
- Collapsible, Tabs, Pagination - forward root HTML attributes.
Bug Fixes
- Alert - default variant corrected from soft to solid . docs →
- Input - avatar takes precedence over leadingIcon when both provided. docs →
- AvatarGroup - items now render left-to-right. docs →
- Pagination - prev/next buttons now have aria-label attributes. docs →
- SelectMenu - search field no longer inherits parent FormField validation context. docs →
New Features
- Carousel - new component built on Embla Carousel. Supports arrows, dots, autoplay, fade/slide transitions, responsive breakpoints, and bind:api . docs →
- Select / SelectMenu - multiple prop for multi-selection. value becomes string[] . docs →
- SelectMenu - createItem prop lets users add typed values not in the items list. docs →
- Modal / Slideover - size prop: sm | md | lg | xl | full . docs →
- Modal / Slideover - transition prop: none | fade | slide | scale . docs →
- FileUpload - maxSize (bytes per file) and maxFiles validation props. docs →
- FileUpload - onReject callback fires with files rejected by accept , maxSize , or maxFiles . docs →
- Calendar - isDateHighlightable predicate for marking special dates with a dot indicator. docs →
- Calendar - maxDays now wired for type="multiple" . docs →
- PinInput - loading and loadingIcon props for OTP verification flows. docs →
Improvements
- FileUpload / Calendar - now read parent FormField context; errors propagate to aria-invalid and visual styles. docs →