skills/floating-ui-vue-skilld/SKILL.md
Floating UI for Vue. ALWAYS use when writing code importing "@floating-ui/vue". Consult for debugging, best practices, or modifying @floating-ui/vue, floating-ui/vue, floating-ui vue, floating ui vue, floating-ui, floating ui.
npx skillsauth add harlan-zw/vue-ecosystem-skills floating-ui-vue-skilldInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
@floating-ui/[email protected]Tags: latest: 1.1.11
References: Docs
This section documents version-specific API changes for @floating-ui/vue — prioritize the v1.0.0 major release and subsequent minor updates.
BREAKING: x and y coordinates now default to 0 instead of null since v1.0.0. Use isPositioned to check if layout is ready source
NEW: floatingStyles — Returns a pre-configured style object for the floating element (position, top, left, transform) since v1.0.0 source
NEW: MaybeReadonlyRefOrGetter — useFloating options now support getters (e.g., () => props.placement) and refs since v1.1.0 source
NEW: isPositioned — Boolean ref returned by useFloating that indicates if the floating element has been positioned since v0.2.0 source
NEW: open option — Optional boolean ref in useFloating to synchronize isPositioned with the element's open state since v0.2.0 source
IMPROVED: ArrowOptions.element — Widened type to MaybeElement<Element> to improve compatibility with Vue Template Refs since v1.0.2 source
NEW: whileElementsMounted — Preferred option for useFloating to handle the autoUpdate lifecycle automatically since v1.0.0 source
NEW: update() — Function returned by useFloating to manually trigger a position recalculation since v0.2.0 source
NEW: Template Ref support for arrow() — The element option in arrow middleware 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
Use whileElementsMounted: autoUpdate to 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 to autoUpdate) source
useFloating(reference, floating, {
whileElementsMounted(reference, floating, update) {
return autoUpdate(reference, floating, update, {animationFrame: true});
},
});
Prefer v-if for floating elements when using whileElementsMounted. If using v-show, avoid the whileElementsMounted prop and manage the autoUpdate lifecycle manually via watchers to prevent performance leaks when the element is hidden source
Use the isPositioned ref 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 to useFloating options (like placement or middleware) to enable reactivity. Since v1.1.0, these options support MaybeReadonlyRefOrGetter source
Utilize a wrapper element to support CSS transform animations while maintaining the performant transform: true positioning (default). The outer element handles positioning, while the inner element handles the animation source
Synchronize positioning state by passing an open ref to useFloating. This ensures isPositioned is reset and correctly updated across multiple open/close cycles, especially if the reference element moves source
Pass template refs directly from ref(null) to useFloating and middleware like arrow(). The library automatically unwraps these and waits for the elements to mount before computing coordinates source
Enable animationFrame: true in autoUpdate options if the reference element is moved via CSS transforms or other non-layout-triggering animations to maintain perfect anchoring source
development
Painless forms for Vue.js. ALWAYS use when writing code importing "vee-validate". Consult for debugging, best practices, or modifying vee-validate, vee validate.
development
Modular data visualization framework for React, Angular, Svelte, Vue, and vanilla TypeScript or JavaScript. ALWAYS use when writing code importing "@unovis/vue". Consult for debugging, best practices, or modifying @unovis/vue, unovis/vue, unovis vue, unovis.
development
Full-stack head manager built for Vue. ALWAYS use when writing code importing "@unhead/vue". Consult for debugging, best practices, or modifying @unhead/vue, unhead/vue, unhead vue, unhead.
development
Modern and scalable routing for Vue applications. ALWAYS use when writing code importing "@tanstack/vue-router". Consult for debugging, best practices, or modifying @tanstack/vue-router, tanstack/vue-router, tanstack vue-router, tanstack vue router, router.