Releases: nuxt/ui
v4.0.0
We are excited to announce Nuxt UI v4, a major milestone that unifies Nuxt UI and Nuxt UI Pro into a single, fully open-source library. Following NuxtLabs joining Vercel in July, we're now able to offer 100+ production-ready components and a complete Figma Kit available for free to everyone.
Read the blog post announcement: https://nuxt.com/blog/nuxt-ui-v4
✨ Highlights
🌐 Unified and Open Source
Nuxt UI v4 marks a significant milestone by merging Nuxt UI and Nuxt UI Pro into one cohesive, fully open-source library:
- 100+ components: Complete access to all components, including those previously exclusive to Pro
- Figma Kit: Professional design resources now available to everyone
- Single package: Everything unified under
@nuxt/ui
🖥️ Templates
All our previously exclusive templates for Nuxt and Vue are now available to everyone and updated to Nuxt UI v4:
- Starter: A minimal template to get started with Nuxt UI
- Landing: A modern landing page template powered by Nuxt Content
- Docs: A documentation template powered by Nuxt Content
- SaaS: A SaaS template with landing, pricing, docs and blog powered by Nuxt Content
- Dashboard: A dashboard template with multi-column layout for building sophisticated admin interfaces
- Chat: An AI chatbot template to build your own chatbot powered by Nuxt MDC and Vercel AI SDK
- Portfolio: A sleek portfolio template to showcase your work, skills and blog powered by Nuxt Content
- Changelog: A changelog template to display your repository releases notes from GitHub powered by Nuxt MDC
📚 Documentation
We've made extensive improvements to the documentation in v4 to provide a better developer experience:
- Unified location: All documentation now lives under
/docs/
with automatic redirects from legacy paths - Dedicated sections: Theme and Typography now have their own organized sections
- AI-ready features: LLMs.txt endpoints and MCP Server integration for AI tools like Cursor, Windsurf, and GitHub Copilot
🌱 Migration from v3
The migration from v3 to v4 is designed to be smoother than previous major version transitions.
We recommend reading the migration guide for step-by-step instructions.
For Nuxt UI users
- Update to
@nuxt/ui@latest
For Nuxt UI Pro users
- Replace
@nuxt/ui-pro
with@nuxt/ui
in your dependencies - Update module registration from
@nuxt/ui-pro
to@nuxt/ui
in your Nuxt config - Change configuration key from
uiPro
toui
in your app config - Update CSS imports from
@nuxt/ui-pro
to@nuxt/ui
- Update any import statements to reference
@nuxt/ui
🙏 Acknowledgements
We want to extend a special thanks to everyone who supported Nuxt UI Pro. Your early adoption and feedback were instrumental in shaping Nuxt UI. You helped us fund, maintain, and improve the project, allowing us to reach this milestone where we can now offer these powerful tools to the entire community.
A huge thanks to the dedicated team behind Nuxt UI and our incredible community of 250+ contributors. Your hard work, creativity, and passion have been the driving force behind this project's success.
Thank you for being part of this journey 💚
v3.3.5
🐛 Bug Fixes
- InputMenu: ensure to pass a string to items when multiple (0031a75), closes #5018
- InputTags: add blur and focus event handlers on input (#5007) (5db2708)
- Progress: improve
status-position
when 0 (#4994) (e0891ea) - Tabs: use nullish coalescing on item value (a4ab796), closes #4804
- types: allow arbitrary keys in tv config (#4992) (8d859ea)
- types: resolve ambient declaration error in
icons
type (#4991) (526cb81)
New Contributors
Full Changelog: v3.3.4...v3.3.5
v4.0.0-beta.0
🐛 Bug Fixes
- ChatMessages: wrap indicator with slot (#5036) (c00bf30)
- CheckboxGroup: proxy generic to emits (ffa5b23)
- Form: improve nested form validation handling (#5024) (77a554e)
- Form: remove
joi
andyup
in favor of @standard-schema/spec (#5035) (723cf36) - InputMenu: ensure to pass a string to items when multiple (9beccbb), closes #5018
- InputTags: add blur and focus event handlers on input (#5007) (3fd2614)
- locale: improve translations in
pt
locale (#5003) (725ef9b) - module: only inject tailwindcss vite plugin once (#5008) (c2e39dd)
- ProseImg: add
w-full
by default (#4997) (de47add) - Tabs: use nullish coalescing on item value (340fc48), closes #4804
- Tree: remove
value-key
in favor ofget-key
(#4999) (240ff42) - types: allow arbitrary keys in tv config (#4992) (ae77b69)
New Contributors
- @jd-solanki made their first contribution in #4872
- @JoniDS made their first contribution in #5003
Full Changelog: v4.0.0-alpha.2...v4.0.0-beta.0
v4.0.0-alpha.2
This 4.0.0-alpha.2
release focused mostly on stability and documentation.
The official v4 release should come next week after some more testing.
📚 Documentation
We've made significant improvements to the documentation in this release.
- Theme: rewritten and split into three sections - Design system, CSS variables and Component theming (#4939)
- Typography: moved to own section with headers, text formatting, lists, tables, images, embeds, and code blocks (#4742)
- MCP server: Model Context Protocol integration with tools, prompts and resources for AI assistants (#4878)
🚨 Breaking Changes
- Form: don't mutate the form's state if transformations are enabled (#4902)
Read the migration guide about this change: https://ui4.nuxt.com/docs/getting-started/migration/v4#changes-to-form-component
🚀 Features
- ContentNavigation: handle collapsible false with type multiple (c42c2ab)
🐛 Bug Fixes
- Banner: ensure
actions
slot renders (#4946) (5d6e1fc) - CodeTree/Tree: improve accessibility (#4945) (117b4b3)
- components: dot notation type support for
labelKey
andvalueKey
(#4933) (11a0320) - components: proxySlots reactivity (#4969) (3173bee)
- components: standardize naming for type interfaces (#4990) (788d2de)
- FileUpload: add missing
button
type (f33e43c), closes #4935 - Form: don't mutate the form's state if transformations are enabled (#4902) (99dbe81)
- Form: handling race condition on
clear
function (#4843) (2269b48) - InputMenu/Select/SelectMenu: show falsy value when model value is falsy (#4882) (073dd14)
- locale: improve
id
name (#4890) (1b5d741) - Marquee: handle RTL mode (#4887) (1846079)
- Progress: improve
status-position
when 0 (#4994) (0e1e44c) - types: export missing tv types (#4971) (2bf273c)
- types: resolve ambient declaration error in
icons
type (#4991) (6ddf899)
🔥 Performances
🌐 Locales
👋 New Contributors
- @reinacchi made their first contribution in #4890
- @USLTD made their first contribution in #4973
- @vitpetricak made their first contribution in #4991
Full Changelog: v4.0.0-alpha.1...v4.0.0-alpha.2
v3.3.4
🐛 Bug Fixes
- FileUpload: add missing
button
type (91f86d9), closes #4935 - Form: handling race condition on
clear
function (#4843) (0a8ead7) - InputMenu/Select/SelectMenu: show falsy value when model value is falsy (#4882) (5b9d9d8)
- locale: improve
id
name (#4890) (e5cb55b)
Full Changelog: v3.3.3...v3.3.4
v4.0.0-alpha.1
📚 Documentation
You can check out the new docs for v4 on https://ui4.nuxt.com while in alpha.
🚨 Breaking Changes
- components: rename
nullify
modifier tonullable
and addoptional
(#4838) - module: update compatibility to nuxt 4
Read the migration guide to v4.
🚀 Features
🐛 Bug Fixes
- AuthForm: use
error
from form field (#4738) (00dfb6b) - BlogPost: ensure date slot renders (#4743) (4514880)
- ChangelogVersion/ChangelogVersions: handle RTL mode (#4777) (f91c408)
- ContentSearch/DashboardSearch: make
ui.modal
work (946c2ec) - module: add
@source
on components (a16465f), closes #4773 - PageCard: improve keyboard accessibility (#4733) (3029568)
- ProseImg: ensure unique motion layout id for images (#4720) (9480a0b)
- unplugin: handle components overrides in subdirectories (#4781) (69ee75e)
New Contributors
- @cco3 made their first contribution in #4808
- @fabianmerino made their first contribution in #4826
Full Changelog: v4.0.0-alpha.0...v4.0.0-alpha.1
v3.3.3
🚀 Features
🐛 Bug Fixes
- components: broken types for
update:model-value
event (#4853) (7133f50) - Form: default slot types (#4758) (a32cc37)
- Form: update
Form
interface to accept RegExp (#4821) (0c2d390) - InputMenu/Select/SelectMenu: show placeholder when model value is falsy (#4825) (90b5daf)
- InputMenu: prevent
focus-outside
event on content (77b6b9a) - Link: ensure target
_blank
is flagged as external for Inertia (#4746) (520b277) - Table: ensure
colspan
calc forloading
andempty
states (#4826) (bdcc8c4)
New Contributors
- @cco3 made their first contribution in #4808
- @fabianmerino made their first contribution in #4826
Full Changelog: v3.3.2...v3.3.3
v2.22.2
🐛 Bug Fixes
- Meter: correct vertical alignment of progress bar (#4735) (875be4b)
- SelectMenu/InputMenu: ensure object compare with
by
prop (#4791) (44382cd)
New Contributors
- @DanielPagani made their first contribution in #4735
Full Changelog: v2.22.1...v2.22.2
v4.0.0-alpha.0
📚 Documentation
You can check out the new docs for v4 on https://ui4.nuxt.com while in alpha.
🚨 Breaking Changes
- components: upgrade
ai-sdk
to v5 (#4698) (9545fdd) - FieldGroup: rename from
ButtonGroup
(#4596) (8aa96d1) - components: import
@nuxt/ui-pro
components (#4675) (f6ae153) - Marquee: rename from
PageMarquee
(#4741) (0a4d9b4) - PageAccordion: remove in favor of
Accordion
(#4734) (1c63aab)
Read the migration guide to v4.
Full Changelog: v3.3.2...v4.0.0-alpha.0
v3.3.2
This release ensures the
[email protected]
dependency is installed. The2.1.0
version is somehow broken at the moment: heroui-inc/tailwind-variants#259 / heroui-inc/tailwind-variants#258
Full Changelog: v3.3.1...v3.3.2