Release Notes
Changelog
Every release of sv5ui - new features, breaking changes, bug fixes, and improvements.
v2.3.0 Latest July 7, 2026 GitHub 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 →