floating-ui/floating-ui @floating-ui/vue
Floating UI for Vue
Version: 1.1.11 (Mar 2026) Deps: vue-demi@>=0.13.0, @floating-ui/dom@^1.7.6, @floating-ui/utils@^0.2.11 Tags: latest: 1.1.11 (Mar 2026)
References: Docs — API reference, guides
API Changes
This section documents version-specific API changes for @floating-ui/vue — prioritize the v1.0.0 major release and subsequent minor updates.
-
BREAKING:
xandycoordinates now default to0instead ofnullsince v1.0.0. UseisPositionedto check if layout is ready source -
NEW:
floatingStyles— Returns a pre-configuredstyleobject for the floating element (position, top, left, transform) since v1.0.0 source -
NEW:
MaybeReadonlyRefOrGetter—useFloatingoptions now support getters (e.g.,() => props.placement) and refs since v1.1.0 source -
NEW:
isPositioned— Boolean ref returned byuseFloatingthat indicates if the floating element has been positioned since v0.2.0 source -
NEW:
openoption — Optional boolean ref inuseFloatingto synchronizeisPositionedwith the element's open state since v0.2.0 source -
IMPROVED:
ArrowOptions.element— Widened type toMaybeElement<Element>to improve compatibility with Vue Template Refs since v1.0.2 source -
NEW:
whileElementsMounted— Preferred option foruseFloatingto handle theautoUpdatelifecycle automatically since v1.0.0 source -
NEW:
update()— Function returned byuseFloatingto manually trigger a position recalculation since v0.2.0 source -
NEW: Template Ref support for
arrow()— Theelementoption inarrowmiddleware now natively accepts Vue refs since v0.x/v1.0.0 source
Also changed: exports .d.mts types v1.0.3 · isPositioned false when open false fix v1.1.5 · MaybeReadonlyRefOrGetter legacy Vue support v1.1.1
Best Practices
-
Use
whileElementsMounted: autoUpdateto ensure the floating element stays anchored during scroll, resize, or layout changes. This handles the full lifecycle of positioning listeners automatically source -
Always return the cleanup function when passing a custom function to
whileElementsMounted(e.g., when providing custom options toautoUpdate) source
useFloating(reference, floating, {
whileElementsMounted(reference, floating, update) {
return autoUpdate(reference, floating, update, {animationFrame: true});
},
});
-
Prefer
v-iffor floating elements when usingwhileElementsMounted. If usingv-show, avoid thewhileElementsMountedprop and manage theautoUpdatelifecycle manually via watchers to prevent performance leaks when the element is hidden source -
Use the
isPositionedref to coordinate side effects that require the final position, such as focusing an input or scrolling an element into view source
const {isPositioned} = useFloating(reference, floating, {open});
watch(isPositioned, (positioned) => {
if (positioned) {
inputRef.value?.focus();
}
});
-
Pass getter functions or
Refs touseFloatingoptions (likeplacementormiddleware) to enable reactivity. Since v1.1.0, these options supportMaybeReadonlyRefOrGettersource -
Utilize a wrapper element to support CSS transform animations while maintaining the performant
transform: truepositioning (default). The outer element handles positioning, while the inner element handles the animation source -
Synchronize positioning state by passing an
openref touseFloating. This ensuresisPositionedis reset and correctly updated across multiple open/close cycles, especially if the reference element moves source -
Pass template refs directly from
ref(null)touseFloatingand middleware likearrow(). The library automatically unwraps these and waits for the elements to mount before computing coordinates source -
Enable
animationFrame: trueinautoUpdateoptions if the reference element is moved via CSS transforms or other non-layout-triggering animations to maintain perfect anchoring source