✨ Highlights
📝 New Editor components
We're introducing a suite of 6 new components to build rich text editors, powered by TipTap:
- Editor: The root component supporting JSON, HTML, and Markdown content types.
- EditorToolbar: A customizable toolbar with formatting actions, link editing, and extensible item groups.
- EditorSuggestionMenu: A command menu (
/) to insert headings, lists, code blocks, images, and more. - EditorMentionMenu: A mention menu (
@) to reference users or other entities. - EditorEmojiMenu: An emoji picker (
:) to insert emojis inline. - EditorDragHandle: A drag handle to reorder blocks with a dropdown menu for block actions.
The Editor is fully extensible through TipTap's extension system and exposes the editor instance for advanced use cases.
We've also released a new Editor template that showcases all the Editor components in a production-ready setup with real-time collaboration via PartyKit and AI autocompletion using AI SDK and Vercel AI Gateway.
nuxt-ui-editor.mp4
📜 New ScrollArea component
The ScrollArea component provides a flexible scroll container with built-in virtualization support through TanStack Virtual.
CleanShot.2025-12-17.at.16.38.52.mp4
🚀 Features
- AuthForm: allow all input types (#5565) (1f9009f)
- ContextMenu/DropdownMenu: expose
subprop on content slots (#5609) (b09e6bc) - defineShortcuts: add
layoutIndependentoption (#4251) (ece0568) - Editor: new components (#5407) (38765c3)
- extractShortcuts: add
separatoroption (#5642) (4e71271) - FormField: add
orientationprop (#5632) (b74ec6e) - InputMenu/Select/SelectMenu: add
modelModifiersprop (#5559) (a92ee7b) - module: generate
@sourcefor nuxt layers (#5630) (de98a72) - ProseCodeTree: add
itemsprop (cb34ca5) - ScrollArea: new component (#5245) (effbb18)
- Slideover: add
insetprop (05bd995) - unplugin: add
routeroption to disable router (#5213) (b34cf8a) - unplugin: add
scanPackagesoption (#5510) (4e57139)
🐛 Bug Fixes
- BlogPost/ChangelogVersion/PageFeature/User: allow tab focus (47d93d3), closes #5635
- Carousel: consistent stopOnInteraction behavior (#5489) (36a7861)
- Carousel: improve dots focus styles (cc90fb8)
- ColorModeButton: improve icon class merging (2ce9af2)
- ContentSearch/DasboardSearch: set full height on mobile to prevent jump (70317e5)
- DashboardResizeHandle: allow hover over panel with
z-index(07147f1) - FormField: hide error if error prop is false (#5599) (6b7fe25)
- InputDate/InputTime: add missing field group variant (#5596) (cb3cec2)
- PageCard/PageCTA/PageSection: handle
reverseprop under lg screens (#5545) (60b430c) - ProseA/ProseCallout/ProseCard: improve focus styles (df5f8c2)
- Slider: add
aria-labelto thumb (#5313) (f99ec46) - Table: only forward necessary props (#5527) (b0b209e)
- Table: properly position pinned columns based on
size(e885b0e), closes #4721 #3927
🌐 Locales
- locale: add Basque language (#5689) (748d78f)
- locale: add English (United Kingdom) language (#5561) (b0139f0)
- locale: add Lao language (#5556) (f5f9885)
👋 New Contributors
- @AZERK0 made their first contribution in #5530
- @IO-Fire made their first contribution in #5557
- @thanet-s made their first contribution in #5556
- @iamThiagoo made their first contribution in #5598
- @olivierbourdeau made their first contribution in #5591
- @miguilimzero made their first contribution in #5512
- @lehuuphuc made their first contribution in #5601
- @dinocam1 made their first contribution in #5610
- @gunhaxxor made their first contribution in #5641
- @niusia-ua made their first contribution in #5642
- @sdsoldi made their first contribution in #5689
- @edimitchel made their first contribution in #5632
- @ISOR3X made their first contribution in #5510
- @innocenzi made their first contribution in #5213
Full Changelog: v4.2.1...v4.3.0