emotion-js/emotion

👩‍🎤 CSS-in-JS library designed for high performance style composition

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 26 minutes ago
Added to GitGenius on September 14th, 2021
Created on May 27th, 2017
Open Issues & Pull Requests: 389 (+0)
Number of forks: 1,140
Total Stargazers: 18,016 (+0)
Total Subscribers: 92 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 82.6 days
Mean response time: 480.8 days
90th percentile: 1650.3 days
Tracked items: 135

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 99% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Only 1% of issues opened in the past year have been closed. Three people close 65% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 255
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 1,145 days
Stale 30+ days: 252
Stale 90+ days: 248

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 1
Events in 7 days: 3

Top labels

  • needs triage (455)
  • bug (450)
  • feature request (166)
  • documentation (66)
  • question (66)
  • invalid (47)
  • TypeScript (46)
  • needs more information (19)

Detailed Description

Emotion is a CSS-in-JS library positioned as the next generation of styling solutions for JavaScript applications. It provides a performant and flexible approach to styling by allowing developers to write styles using either string or object syntax, with particular emphasis on predictable composition that avoids CSS specificity issues. The library includes source maps and labels to enhance developer experience while maintaining heavy caching in production for performance optimization.

The core functionality centers on enabling rapid app styling through CSS-in-JS patterns. Emotion offers multiple styling approaches including a CSS prop for inline styling and styled components for component-based design. The library supports composition patterns, nested selectors, and media queries as documented in its frequently referenced guides. While a Babel plugin is available to enable additional optimizations and customizations, it is not required for basic usage, giving developers flexibility in how they integrate Emotion into their build processes.

Emotion 11 represents a significant release milestone for the project. The library has achieved substantial adoption across the web, with usage documented in production applications including major properties like The New York Times, Healthline, Sentry, Codecademy, and Apache Superset. The ecosystem around Emotion extends its capabilities through integrations with tools like stylelint for style linting, facepaint for responsive design patterns, and framework-specific modules for Vue and Nuxt. Additional tooling includes CSS-to-Emotion transformation utilities, design system helpers, and styling utilities like polished.

The project maintains overlapping contributor relationships with major repositories including Microsoft's VSCode and TypeScript implementations, as well as the Rust language project, indicating cross-project collaboration among maintainers.

The library's classification spans multiple domains including inline styles, stylesheets, React components, JavaScript frameworks, theming, component-based design, dynamic styling, and performance optimization. This breadth reflects Emotion's positioning as a comprehensive styling solution that addresses both the technical requirements of CSS-in-JS and the practical needs of modern component-based application development. The project is supported through sponsorships and community backing, with Thinkmill listed as a primary sponsor alongside numerous individual backers contributing to its ongoing development and maintenance.