Packages

@floating-ui/core

1.8.0 · 11 Jul 2026MIT130.1M / weekRepositoryHomepagenpmAtom feed

Your version

63 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.

  1. 1.x · latest line
  2. 1.8.0

    11 Jul 2026
    • Add 'layoutViewport' string option to rootBoundary. Unlike the visual 'viewport' boundary, it remains stable while pinch-zooming or when a mobile software keyboard is open, and unlike a manually passed Rect of the documentElement's client size, it accounts for space reserved by scrollbar-gutter: stable.

    • inline: no-op on empty client rects and detect RTL disjoined line rects

    • Support explicit undefined for optional properties with exactOptionalPropertyTypes

  3. 1.7.5

    3 Mar 2026
    • Bundle and runtime improvements

  4. 1.7.4

    27 Jan 2026
    • detectOverflow configurable via platform

  5. 1.7.3

    30 Jul 2025
    • flip: Ensure perpendicular axis flips with crossAxis alignment

  6. 1.7.2

    28 Jun 2025
    • Reduce memory allocations

  7. 1.7.1

    2 Jun 2025
    • flip: Only allow fallback to the perpendicular axis if all placements on the preferred side axis overflow the main axis with crossAxis: 'alignment'

  8. 1.7.0

    2 May 2025
    • flip: Add "alignment" string value for crossAxis option. This value determines if cross axis overflow checking is restricted to the alignment of the placement only. This prevents fallbackPlacements/fallbackAxisSideDirection from too eagerly changing to the perpendicular side (thereby preferring shift() if overflow is detected along the cross axis, even if shift() is placed after flip() in the middleware array).

  9. 1.6.9

    7 Jan 2025

    Only updates a dependency:@floating-ui/utils 0.2.9

  10. 1.6.8

    15 Sep 2024
    • size: Fill viewport along an axis if shift is enabled on that axis

    • offset: Avoid NaN when mainAxis or crossAxis is undefined

  11. 1.6.4 – 1.6.74 releases that only update dependencies@floating-ui/utils 0.2.7Show each
  12. 1.6.3

    25 Jun 2024
    • flip: Adjust bestFit algorithm to only use initialPlacement or y side axis with fallbackAxisSideDirection

  13. 1.6.2

    15 May 2024
    • size: Correctly constrain floating element to avoid overflowing outside viewport with shift({crossAxis: true})

  14. 1.6.1

    28 Apr 2024
    • Avoid spreading rects to support DOMRect types

  15. 1.6.0

    26 Jan 2024
    • Handle CSS :top-layer elements inside containing blocks. It's no longer
      necessary to implement the middleware workaround outlined in
      #1842.

  16. 1.5.3

    6 Jan 2024

    Only updates a dependency:@floating-ui/utils 0.2.0

  17. 1.5.2

    6 Dec 2023
    • types: Avoid ts 4.2+ syntax

  18. 1.5.1

    30 Nov 2023
    • offset: Avoid doubling calculation on same placement reset when
      arrow changes alignment of floating element

  19. 1.5.0

    15 Sep 2023
    • arrow: Add alignmentOffset data

    • flip: Skip if arrow has performed internal shifting

  20. 1.4.2

    14 Sep 2023
    • arrow: Perform a reset if internal shifting is performed

      This allows shift() to continue taking action when the arrow's internal
      shifting of the floating element is performed (preventing potential
      overflow/clipping of the floating element in certain scenarios), while still
      allowing the arrow to point toward the reference when it is small if possible.

  21. 1.4.1

    30 Jul 2023
    • types: Resolution when using moduleResolution: "NodeNext"

  22. 1.4.0

    28 Jul 2023

    Maintenance only: docs, tests, build or refactoring. Nothing changes in how you use it.

  23. 1.3.1

    17 Jun 2023
    • arrow: Report correct centerOffset value when internal shifting is active

  24. 1.3.0

    11 Jun 2023
    • Allow function types for all middleware options, including detectOverflow, to allow derivation from state

      // Options
      shift({mainAxis: true});
      // Derived from state
      shift((state) => ({mainAxis: state.rects.reference.width > 10}));
    • arrow: Ensure large padding option value does not cause incorrect centering

  25. 1.2.6

    7 Apr 2023
    • size: Unresponsive available size if floating element resized using a center-aligned placement with shift() in use

  26. 1.2.5

    25 Mar 2023
    • Remove DEV warnings (process.env)

  27. 1.2.4

    14 Mar 2023
    • inline: Correct merging of rects by line

  28. 1.2.3

    12 Mar 2023
    • inline: Merge rects on the same line (y coord)

  29. 1.2.2

    1 Mar 2023
    • arrow: Correctly take into account floating element border for <svg> arrows

  30. 1.2.1

    12 Feb 2023
    • deprecated

      types: Deprecate MiddlewareArguments in favor of MiddlewareState type

  31. 1.2.0

    5 Feb 2023
    • autoPlacement: crossAxis option

      By default, aligned placements like top-start/top-end use a "fallback" strategy for the crossAxis to ensure different axes' placements can be chosen, and to keep the preferred alignment as much as possible.

      However, if you only have placements along one axis you can now use a "most space" strategy for the alignment as well, e.g.:

      autoPlacement({
        allowedPlacements: [
          'top-start', 
          'top-end', 
          'bottom-start', 
          'bottom-end'
        ],
        crossAxis: true,
      });
    • detectOverflow: Accept virtual Rect boundaries

    • size: Consider case where shift() is in the middleware array before size() for center aligned placements

  32. 1.1.1

    29 Jan 2023
    • flip: Try mainAxis overflow check first once in fallback phase

  33. 1.1.0

    2 Jan 2023
    • flip: fallbackAxisSideDirection option

      This option adds the ability to compute placements on the opposite axis of the preferred placement without needing to use an explicit fallbackPlacements list, meaning you no longer need to manage a custom map of fallbackPlacements and instead use this option to leverage automatic computing of the array.

      This option determines whether to allow fallback to the opposite axis if no placements along the preferred placement axis fit, and if so, which side direction along that axis to choose. If necessary, it will fallback to the other direction.


      Note:
      In RTL writing direction, the x-axis directions are reversed.

      For instance, by default, if the initial placement is set to 'right', then the placements to try (in order) are:

      ['right', 'left']

      On a narrow viewport, it's possible or even likely that neither of these will fit.

      By specifying a string other than 'none', you allow placements along the opposite axis of the initial placement to be tried. The direction determines which side of placement is tried first:

      flip({
        fallbackAxisSideDirection: 'start',
      });

      The above results in: ['right', 'left', 'top', 'bottom'].

      flip({
        fallbackAxisSideDirection: 'end',
      });

      The above results in: ['right', 'left', 'bottom', 'top'].

      As an example, if you'd like a tooltip that has a placement of 'right' to be placed on top on mobile (assuming it doesn't fit), then you'd use 'start'. For an interactive popover, you likely want to use 'end' so it's placed on the bottom, closer to the user's fingers.

  34. 1.0.5

    26 Dec 2022
    • Importing into universal apps (#166) (thank @HHogg)

  35. 1.0.4

    7 Dec 2022
    • Fixed #143

    • You can't no longer access Tooltip.js builds from the Popper.js npm package, install both the packages if you need them!

    • Fixed #144

  36. 1.0.3

    6 Dec 2022
    • detectOverflow: Pass correct fallback rect

      If platform.convertOffsetParentRelativeRectToViewportRelativeRect was not available, then the correct rect was not passed. So a custom platform without that method actually did need it (even though it's optional).

  37. 1.0.2

    15 Nov 2022

    Maintenance only: docs, tests, build or refactoring. Nothing changes in how you use it.

  38. 1.0.1

    9 Aug 2022
    • Fixed positioning problem when popper had not any positioned parent (#136, thank @nadiam84)

    • Minor perf improvement of arrow modifier

  39. 1.0.0

    19 Jul 2022
    • breaking

      Removed all the underscores _ prefixes from properties

    • breaking

      Removed parse method from core library, you can't automatically create popper's markup using Popper.js core. If you need the feature, here you can find a custom modifier that reintroduces the feature. gist.github.com/FezVrasta/075d228ffb855688c75a6…

    • breaking

      Simplified modifiers API, see #62 for migration instructions

  40. 0.7.x
  41. 0.7.3

    12 Jun 2022
    • TS typedefs are now generated as "strict"

    • Add safeguard return to bail out of positioning after 50 reset requests, preventing any infinite loops, even if more resets are requested. In DEV mode, the error about the positioning loop is now just a warning.

  42. 0.7.2

    28 May 2022
    • types: Prevent importing non-exported types in dom from core

      See #1730

  43. 0.7.1

    20 May 2022
    • arrow: When padding is specified, the coordinates of the floating element are now adjusted if needed to ensure the arrow continues to point at the center of the reference element. This takes precedence over start and end alignments.

  44. 0.7.0

    7 May 2022
    • breaking

      In both the size() and offset() middleware, the reference and floating top-level parameters are now namespaced under rects — rects.reference and rects.floating.

      The entire MiddlewareArguments object gets spread in, so there's more data to access if needed.

    • Added "browser" export conditions

      BREAKING: removed the previous "production" and "development" export conditions. The new "browser" key is a replacement for this. See Package entry points.

    • arrow: Fallback to the floating element as the offsetParent

      React Native / other platforms that do not implement getOffsetParent

  45. 0.6.x
  46. 0.6.2

    18 Apr 2022
    • v0.6.1 was bugged, DO NOT use it

    • v0.6.2 fixed the previous version fixing the problem with the positioning inside fixed containers

  47. 0.6.1

    12 Mar 2022
    • Fixed positioning issue with fixed parents

  48. 0.6.0

    8 Mar 2022
    • Big performance improvements (more info at #17)

  49. 0.5.x
  50. 0.5.1

    27 Feb 2022
    • Added support for a reference el that is both fixed and transformed. (thanks @hgascoigne)

  51. 0.5.0

    25 Feb 2022
    • 3rd party modifiers now can set custom styling to poppers (prep for #52)