A JavaScript library for positioning floating elements like tooltips and popovers, with platform-specific packages for React, Vue, and vanilla DOM.
Floating UI is a JavaScript library designed to position floating elements like tooltips, popovers, and dropdowns relative to anchor elements. It solves the problem of ensuring these elements stay anchored and visible, even when near viewport edges or inside scrolling containers. The library provides low-level positioning logic and tools for building accessible interactions.
Frontend developers building interactive UI components such as tooltips, dropdowns, or popovers in vanilla JavaScript, React, Vue, or React Native applications.
Developers choose Floating UI for its cross-platform support, reliable collision detection, and focus on accessibility. It offers a modular, low-level API that gives fine-grained control over positioning and interactions, unlike higher-level UI frameworks.
A JavaScript library to position floating elements and create interactions for them.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers dedicated packages for vanilla JavaScript, React DOM, React Native, and Vue, as shown in the separate install commands, plus a core package for custom platforms like Canvas or WebGL.
Automatically repositions floating elements to avoid viewport edges and stay visible, a core feature emphasized in the 'Why' section for handling complex layouts.
Provides React hooks and components for building accessible interactions, such as keyboard navigation, specifically highlighted for user interactions in floating UI components.
Delivers primitives for custom positioning logic, enabling developers to handle unique scenarios like scrolling containers or non-DOM environments without framework lock-in.
Focuses solely on positioning and interactions, requiring developers to implement all CSS for visual design, which adds overhead compared to all-in-one UI libraries.
As a low-level library, it demands manual configuration for even basic components like tooltips, making it less approachable for quick prototypes or simple use cases.
While cross-platform, it lacks pre-built integrations with popular design systems or frameworks beyond core positioning, forcing teams to bridge gaps themselves.
The README notes a migration guide from Popper v2, indicating potential breaking changes and adaptation efforts for existing users, which can be time-consuming.