Combobox initially (#1148)Dialog usage in Tab component (#1149)PopoverPanel components (#1153)hover scroll issue in Listbox, Combobox and Menu components (#1161)Listbox, Combobox and Menu actions (#1168)ComboboxInput when the value gets reset (#1181)item/option index on Listbox, Combobox and Menu components (#1184)Dialog cycling (#553)Tab on mouseup (#1192)focus() from Listbox.Option (#1218)ownerDocument instead of document (#1158)el from each component (#1230)Tab and Dialog components (#1231)ComboboxInput value (#1248)PopoverButton (#1263)Dialog component (#1268)Tab (#1272)initialFocusRef correctly (#1276)Combobox (#1279, #1281)RadioGroup, Switch and Combobox components (#1285)nullable prop for Vue (2b109548b1a94a30858cf58c8f525554a1c12cbb)open prop over OpenClosed state (#1360)Listbox and Combobox components (#1243, #1355)Combobox (#1295)DialogPanel to resolve issues when scrolling long dialogs that use DialogOverlay (#1333)DialogOverlay to DialogPanelIn previous versions of Headless UI, closing a dialog was handled by a click handler that lived on the DialogOverlay component, so as long as your overlay was rendered behind your panel, clicking outside the panel would close the dialog.
This created an issue with scrollable dialogs, because it became easy to accidentally position your overlay on top of the scrollbar, which made it impossible to click the scrollbar without closing the dialog. You also couldn't scroll the dialog when your mouse was hovering over the overlay — only when your mouse was hovering over the actual panel.
We've fixed this in Headless UI v1.6 by adding a dedicated DialogPanel component, and changing how "click outside" is handled. Now, if you're using a DialogPanel, the dialog is closed any time you click any element outside of it, rather than closing only when a DialogOverlay is explicitly clicked.
If you're using DialogOverlay and not using DialogPanel, everything will continue to work exactly as it did before (including the bug I described above) to preserve backwards compatibility, but we highly encourage you to migrate to using DialogPanel, and to stop using DialogOverlay, instead using a simple div element:
<Dialog
:open="isOpen"
@close="closeModal"
class="fixed inset-0 flex items-center justify-center ..."
>
- <DialogOverlay class="fixed inset-0 bg-black/25" />
+ <div class="fixed inset-0 bg-black/25" />
- <div class="bg-white shadow-xl rounded-2xl ...">
+ <DialogPanel class="bg-white shadow-xl rounded-2xl ...">
<DialogTitle>Payment successful</DialogTitle>
<!-- ... -->
- </div>
+ </DialogPanel>
</Dialog>
Read through the updated Dialog documentation for more examples of using DialogPanel.
Listbox and ComboboxIf you have been using the insiders build for the new multiple value support for the Listbox and/or Combobox component, then you will have to add a new multiple prop to those components to tell the component that you are using multiple values. Previously this was automatically detected based on whether you were passing an array to the value prop or not.
- <Listbox v-model="selectedPeople" />
+ <Listbox v-model="selectedPeople" multiple />
Fetched March 30, 2026