react-popper

Official React bindings for Popper, the positioning engine behind tooltips, popovers, and dropdowns

Library
npm
v2.3.0
2,488stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
48/100Fair
Development Activity0
Maintenance32
Community60
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
66/100Good
Architecture68
Code Quality70
Innovation55
Learning Curve72

react-popper is the official React wrapper around Popper.js, exposing its viewport-aware positioning engine as a usePopper() hook (plus legacy Manager/Reference/Popper render-prop components) so React components can position a floating element — a tooltip, dropdown, or popover — relative to a reference element without re-implementing collision detection, flipping, or offset math.

What You Get

  • A usePopper(referenceElement, popperElement, options) hook returning computed styles and attributes to spread onto your floating element
  • Automatic recalculation of position on scroll, resize, and reference-element mutation via Popper’s built-in observers
  • Legacy Manager/Reference/Popper render-prop components for class-component or pre-hooks codebases
  • Full access to the underlying Popper.js options (placement, modifiers like flip, offset, preventOverflow) for fine-grained positioning control

Common Use Cases

  • Building a custom tooltip component that stays attached to its trigger element and flips when it would overflow the viewport
  • Implementing a dropdown menu or select component that positions its panel relative to the trigger button
  • Creating a popover or context-menu component that needs collision-aware placement instead of fixed absolute positioning
  • Powering the positioning layer underneath a design-system component library that ships its own tooltip/dropdown/popover primitives

Under The Hood

Architecture The library’s modern API is a single hook, usePopper.js (157 lines), which instantiates a Popper.js instance via createPopper() from @popperjs/core, subscribes to its state updates, and returns memoized styles/attributes objects that the consumer spreads onto their floating element’s props — Popper itself owns all positioning math (Popper.js in @popperjs/core), while this package is purely a thin React lifecycle adapter. The legacy Manager/Reference/Popper components (Manager.js, Reference.js, Popper.js) implement the same wrapping via React context and render props for pre-hooks consumers. Tech Stack JavaScript (with Flow type annotations, __typings__) built via Babel to separate ESM and CJS outputs plus a Rollup-built UMD bundle, depending directly on @popperjs/core for all positioning logic; the package itself contains no positioning algorithm code. Code Quality Each core module has a matching Jest test file with snapshot coverage (Popper.test.js, Manager.test.js, Reference.test.js, usePopper.test.js), giving solid coverage of the wrapping layer’s behavior, though the project has had no commits since 2024 and does not yet ship first-class TypeScript declarations (relying on community @types/react-popper instead). API Design The usePopper hook API is intentionally minimal — pass in two DOM refs and get back a styles/attributes pair to spread onto your element — which fits naturally into React’s declarative model, though because it’s a thin pass-through to Popper.js, understanding its modifier options still requires reading Popper’s own (separate) documentation.

Used by 11 apps in this directory

TypeScript
72%
AGPL 3.0

APITable

Low Code Platforms · Databases

15,526

API-first collaborative spreadsheet-database platform that auto-generates REST APIs and lets teams build internal tools, CRMs, and dashboards without code.

View details
53
Repo Health
77
Technical
60
Dependency
Built with
TypeScript72%
Java22%
Updated 9 months ago
TypeScript
53%
Other

Chaskiq

CRM · Customer Support

3,560

Self-hosted live chat, video calls, help center, and marketing automation — a full-stack Intercom alternative you run on your own infrastructure.

View details
60
Repo Health
66
Technical
68
Dependency
Built with
TypeScript53%
Ruby36%
Updated 1 months ago
TypeScript
45%
Other

Convex Backend

Developer Tools · Databases

12,394

Open-source reactive database that lets developers build live-updating apps with pure TypeScript, strong consistency, and real-time subscriptions—no separate API layer required.

View details
88
Repo Health
82
Technical
70
Dependency
Built with
TypeScript45%
Rust43%
Updated today
TypeScript
97%
Other

GrowthBook

Developer Tools · Analytics · Monitoring

8,138

Open source feature flags, A/B testing, and warehouse-native experimentation that queries your existing data infrastructure—no data movement required.

View details
92
Repo Health
85
Technical
66
Dependency
Built with
TypeScript97%
Updated today
TypeScript
95%
AGPL 3.0

HeyForm

Forms Surveys · No Code Platforms

8,938

Open-source conversational form builder with AI generation, conditional logic, and 30+ integrations — self-host with full data ownership.

View details
86
Repo Health
67
Technical
69
Dependency
Built with
TypeScript95%
Updated today
TypeScript
94%
AGPL 3.0

Laudspeaker

Marketing · Automation

2,618

Open-source customer engagement platform for building visual, event-triggered messaging journeys across email, SMS, push, in-app, and webhooks.

View details
53
Repo Health
66
Technical
64
Dependency
Built with
TypeScript94%
Updated 1 months ago
TypeScript
70%
AGPL 3.0

Plane

Productivity · Project Management · Collaboration

56,127

Open-source project management platform to replace Jira, Linear, and ClickUp — with built-in cycles, real-time collaborative docs, and full self-hosting.

View details
89
Repo Health
82
Technical
77
Dependency
Built with
TypeScript70%
Python26%
Updated 2 days ago
Elixir
80%
AGPL 3.0

Plausible Analytics

Analytics

28,658

Open-source, cookie-free web analytics that respects visitor privacy and replaces Google Analytics.

View details
88
Repo Health
84
Technical
71
Dependency
Built with
Elixir80%
TypeScript14%
Updated yesterday
Python
58%
Other

Sentry

Security · Developer Tools · Monitoring

44,574

Developer-first error tracking and performance monitoring platform with AI-powered root-cause analysis across 20+ languages and frameworks.

View details
95
Repo Health
80
Technical
70
Dependency
Built with
Python58%
TypeScript41%
Updated today

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search