SKILL.md
floating-ui/floating-ui @floating-ui/[email protected]
Tags: latest: 1.1.11
References: [Docs](./references/docs/_INDEX.md)
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](./references/releases/@floating-ui/[email protected])
- NEW:
floatingStyles— Returns a pre-configuredstyleobject for the floating element (position, top, left, transform) since v1.0.0 [source](./references/releases/@floating-ui/[email protected])
- NEW:
MaybeReadonlyRefOrGetter—useFloatingoptions now support getters (e.g.,() => props.placement) and refs since v1.1.0 [source](./references/releases/@floating-ui/[email protected])
- NEW:
isPositioned— Boolean ref returned byuseFloatingthat indicates if the floating element has been positioned since v0.2.0 [source](./references/releases/@floating-ui/[email protected])
- NEW:
openoption — Optional boolean ref inuseFloatingto synchronizeisPositionedwith the element's open state since v0.2.0 [source](./references/releases/@floating-ui/[email protected])
- IMPROVED:
ArrowOptions.element— Widened type toMaybeElement<Element>to improve compatibility with Vue Template Refs since v1.0.2 [source](./references/releases/@floating-ui/[email protected])
- NEW:
whileElementsMounted— Preferred option foruseFloatingto handle theautoUpdatelifecycle automatically since v1.0.0 [source](./references/docs/vue.mdx)
- NEW:
update()— Function returned byuseFloatingto manually trigger a position recalculation since v0.2.0 [source](./references/docs/vue.mdx)
- NEW: Template Ref support for
arrow()— Theelementoption inarrowmiddleware now natively accepts Vue refs since v0.x/v1.0.0 [source](./references/docs/arrow.mdx)
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](./references/docs/vue.mdx)
- Always return the cleanup function when passing a custom function to
whileElementsMounted(e.g., when providing custom options toautoUpdate) [source](./references/docs/vue.mdx)
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](./references/docs/autoUpdate.mdx)
- Use the
isPositionedref to coordinate side effects that require the final position, such as focusing an input or scrolling an element into view [source](./references/docs/vue.mdx)
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 supportMaybeReadonlyRefOrGetter[source](./references/releases/@floating-ui/[email protected])
- 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](./references/docs/vue.mdx)
- 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](./references/docs/vue.mdx)
- 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](./references/docs/vue.mdx)
- Enable
animationFrame: trueinautoUpdateoptions if the reference element is moved via CSS transforms or other non-layout-triggering animations to maintain perfect anchoring [source](./references/docs/autoUpdate.mdx)