Tippy.js

The complete tooltip, popover, dropdown, and menu solution for the web.

Library
npm
v6.3.7
12,238 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
51 /100 Fair
Development Activity 0
Maintenance 44
Community 60
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
85 /100 Excellent
Architecture 84
Code Quality 85
Innovation 86
Learning Curve 80

Tippy.js is a lightweight, highly configurable JavaScript library for creating tooltips, popovers, dropdowns, and menus. Built on top of Popper, it handles the hard parts of overlay positioning, collision detection, and lifecycle management so you can attach rich, accessible floating UI to any element with a single function call.

Framework-agnostic and dependency-light, Tippy.js works with vanilla JavaScript or any framework, ships with polished default themes and animations, and exposes a plugin system for advanced behaviors like follow-cursor, sticky positioning, and singleton grouping.

What You Get

  • A single tippy() constructor that attaches tooltips, popovers, dropdowns, or menus to one or many elements at once
  • Popper-powered smart positioning with automatic flipping and collision avoidance
  • Prebuilt themes, animations, and CSS you can import and customize
  • A plugin architecture for follow-cursor, sticky, inline positioning, and animated fill behaviors
  • TypeScript type definitions and accessible defaults (ARIA attributes, keyboard and focus handling)

Common Use Cases

  • Adding descriptive tooltips to buttons, icons, and form fields
  • Building interactive popovers and dropdown menus triggered by click or hover
  • Creating context menus and rich HTML overlays anchored to page elements
  • Grouping many tooltips into a shared singleton for coordinated show/hide behavior

Under The Hood

Architecture — The public entry point in src/index.ts exposes a tippy() function that normalizes targets via getArrayOfElements, merges passed props with defaultProps, and delegates each element to createTippy (src/createTippy.ts, ~1145 lines) which is the core engine. createTippy builds the popper DOM through template.ts, wires per-instance state and lifecycle hooks, binds trigger listeners, and instantiates a Popper instance (@popperjs/core) to compute placement. Global listeners are set up once through bindGlobalEventListeners.ts, and add-ons (createSingleton, delegate) plus plugins (animateFill, followCursor, inlinePositioning, sticky) layer optional behavior over the base instance.

Tech Stack — Written in TypeScript and compiled with Babel and Rollup into CJS, ESM, and UMD bundles. Its sole runtime dependency is @popperjs/core (^2.9.0) for positioning. Styling is authored in SCSS (src/scss) with themes and animations compiled to distributable CSS. Tooling includes Jest with Puppeteer for DOM, integration, functional, and visual-regression tests, plus ESLint, Prettier, and bundlesize budgets (10 kB) enforced on the UMD bundles.

Code Quality — The codebase is cleanly modularized by concern (dom-utils, props, validation, template, plugins, addons) with internal-type separation (types-internal.ts) and dev-only validation guarded behind a __DEV__ flag that is stripped from production builds. Testing is thorough: unit suites cover utils, dom-utils, props, css, and validation, while integration and functional suites exercise createTippy, plugins, and add-ons, complemented by image-snapshot visual tests. Naming is descriptive and TypeScript types are exported for consumers.

API Design — The developer experience is deliberately minimal at the surface: a single tippy(targets, props) call covers the common case, with a large but well-documented props object for customization and a plugin array for opt-in advanced features. Sensible defaults, prebuilt themes, and clear TypeScript definitions keep boilerplate low, and the extensive official documentation site makes discovery of options straightforward.

Used by 36 apps in this directory

TypeScript
96%
AGPL 3.0

Kan

Project Management

5,825

An open-source, self-hostable Kanban board built as a modern Trello alternative with team workspaces, board permissions, and Trello import.

View details
86
Repo Health
78
Technical
67
Dependency
Built with
TypeScript 96%
Updated 1 weeks ago
TypeScript
92%
MIT

Kaneo

Product Management · Productivity · Project Management

9,574

Lightweight self-hosted project management that gives you kanban boards, GitHub sync, and full team collaboration without the enterprise bloat.

View details
87
Repo Health
81
Technical
70
Dependency
Built with
TypeScript 92%
Updated 5 days ago
PHP
55%
AGPL 3.0

Leantime

Collaboration · Productivity · Project Management

11,890

Project management built for ADHD, autism, and dyslexia — simple as Trello, powerful as Jira

View details
90
Repo Health
68
Technical
62
Dependency
Built with
PHP 55%
CSS 18%
Blade 14%
Updated 1 weeks ago
Python
53%
AGPL 3.0

LearnHouse

CMS · Learning Management

2,413

Open-source LMS with AI tutoring, real-time collaboration boards, live code execution, and built-in course monetization — self-hosted in minutes.

View details
90
Repo Health
77
Technical
65
Dependency
Built with
Python 53%
TypeScript 45%
Updated 5 days ago
Python
55%
MIT

LibrePhotos

File Storage

8,111

Self-hosted photo library with AI-powered face recognition, semantic search, and automatic event albums — no cloud required.

View details
84
Repo Health
78
Technical
66
Dependency
Built with
Python 55%
TypeScript 43%
Updated 5 days ago
TypeScript
97%
Other

Lightdash

Analytics · Data Engineering

6,196

The open-source Looker alternative that turns your dbt project's metrics and dimensions into governed, self-serve charts and dashboards — no license key required.

View details
93
Repo Health
84
Technical
64
Dependency
Built with
TypeScript 97%
Updated 5 days ago
JavaScript
81%
MIT

localforge

AI Agents · AI Code Assistants · Developer Tools

401

A local, multi-provider AI coding agent with a real desktop and web UI — bring your own Anthropic, OpenAI, Gemini, Bedrock, or local Ollama keys and let it read, edit, and run code in your own project folder.

View details
41
Repo Health
54
Technical
73
Dependency
Built with
JavaScript 81%
CSS 12%
Updated 1 years ago
JavaScript
55%
Other

Lokus

Knowledge Management · Note Taking

829

Local-first note-taking with graph view, canvas & AI plugins—your Markdown files, zero telemetry, blazing-fast Rust performance.

View details
75
Repo Health
75
Technical
64
Dependency
Built with
JavaScript 55%
HTML 21%
Rust 12%
Updated 2 months ago
TypeScript
44%
Other

Magic

AI Agents · Automation · Low Code Platforms

5,055

Magic is an enterprise-grade open-source AI agent platform combining a generalist AI agent, workflow engine, IM, and collaborative office system for running an AI-powered digital workforce.

View details
68
Repo Health
79
Technical
65
Dependency
Built with
TypeScript 44%
PHP 32%
Updated 2 months ago

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