OSS TanbouSign in with GitHub

high-performance CSS-in-JS for React with object/string styles, composition, theming, and runtime caching

About these scores

OSS scale score is an unbounded metric that log-compresses and weights Stars, Watchers, Forks, and Contributors. Discovery score is the current OSS scale score minus the score at discovery. Update pace is commits in the last 30 days, growth momentum is the OSS scale score difference within the recent observation window, and OSS health is a 0–100 rating based on available recency, Community Health, and release data.

Stars
18,019
Primary language
JavaScript
License
MIT
Repository last updated
Aug 28, 2026
On this page

Overview

Emotion defines CSS from JavaScript or TypeScript and applies it to React components. It supports object styles, template literals, style composition, global styles, theming, and caching so component code and styling can live together without manually managing generated class names.

Features and best fit

Based on official documentation; not hands-on tested · Content checked:

Key features

Apply object or string styles with the css prop and css()

@emotion/react exposes css, jsx, and the CSS prop so React components can use either object styles or template-literal styles.

Sources: [2][3]

Compose styles for variants and shared UI primitives

Predictable composition lets teams layer common styles, variants, and state-specific rules while avoiding many specificity conflicts.

Sources: [1]

Integrate global styles, themes, and custom caches

Global, ThemeProvider, and CacheProvider support application-level CSS, design tokens, and custom caching or SSR boundaries.

Sources: [2]

Best fit

Fits React design systems that keep component logic and dynamic styles together

It is useful when styles depend on props or themes and teams want reusable UI primitives without separating styling into standalone CSS files.

Sources: [1]

Before adoption

@emotion/react 11.14.0 requires React 16.8 or later

Package metadata declares React >=16.8.0 as a peer dependency. Review React and SSR/runtime compatibility together.

Sources: [3]

Packages in the monorepo have independent release cadences

The stable React package is 11.14.0 while packages such as @emotion/styled may have different current versions. Pin the packages actually used instead of treating the repository as one version.

Sources: [4][3]

Official sources

  1. [1]Emotion repository README(2026-10-05)
  2. [2]@emotion/react 11.14.0 README(2026-10-05)
  3. [3]@emotion/react 11.14.0 package metadata(2026-10-05)
  4. [4]@emotion/react 11.14.0 release(2026-10-05)
  5. [5]Emotion MIT license(2026-10-05)
Supplemental curator note

Emotion is a multi-package repository. Use @emotion/react as the React foundation and add @emotion/styled only when the styled API is needed, pinning packages independently.

Try it in 3 steps

  1. 1

    Install pinned Emotion React 11.14.0

    Create an isolated npm project with the React package and exact React peer dependency.

    demo=$(mktemp -d "${TMPDIR:-/tmp}/emotion.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact @emotion/react@11.14.0 react@19.2.0
  2. 2

    Verify the package version

    Require the installed @emotion/react package to match the reviewed version.

    test "$(node -e "console.log(JSON.parse(require('fs').readFileSync('node_modules/@emotion/react/package.json')).version)")" = '11.14.0'
  3. 3

    Check representative styling exports

    Verify representative composition and provider APIs without starting a browser.

    test "$(node --input-type=module -e "import * as E from '@emotion/react'; console.log(['css','jsx','CacheProvider','ThemeProvider'].every(k=>k in E))")" = 'true'
Check the official README

Growth

Growth trends · Last 30 days

18,019 Stars

Trend data is still being collected.

Development activity

Last 90 days · weekly

Commits (last 30 days)
0
Open PRs
86

Development activity is still being collected.

Built with

Categories and tags

Categories

GitHub data

GitHub dataView detailed GitHub data

GitHub Topics

  • css-in-js
  • babel-plugin
  • react
  • reactjs
  • css
  • emotion
Stars
18,019
Forks
1,137
Watchers
97
Open issues
310
Contributors
304
Owner type
Organization
Primary language
JavaScript
License
MIT
Repository last updated
Aug 28, 2026
Write a related article

Share a guide or use case for this OSS in Markdown. Articles are published after administrator approval.

Report incorrect information

Tell us if any listing information is incorrect or outdated.

After reading this page, do you know what to do next?