ページ内ナビ
概要
EmotionはJavaScript/TypeScriptからCSSを定義し、React componentへstyleを適用するCSS-in-JS libraryです。object styleとtemplate literal、style composition、global style、theme、cacheを提供し、class nameの詳細を手動管理せずにcomponentとstyleを近接配置できます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
css propとcss()でobject/string styleをcomponentへ適用する
@emotion/reactはcss、jsx、CSS prop等を提供し、object styleとtemplate literalの両方をReact componentへ適用できます。
style compositionでvariantや共通styleを組み合わせる
複数styleをpredictableにcomposeでき、既存styleへvariantや状態別styleを追加しながらspecificity conflictを抑えられます。
出典:[1]
Global・ThemeProvider・CacheProviderでapplication単位のstylingを構成する
global CSS、theme context、custom cache等をReact treeへ統合でき、design tokenやSSR構成に合わせてstyling boundaryを設計できます。
出典:[2]
向いている用途
React componentとstyleを同じmoduleで管理しつつdesign systemを構築したい場合に向く
component propsやthemeに応じたdynamic styleをJavaScript側で組み立て、再利用可能なUI primitiveやdesign systemを構築したいfrontend applicationに適します。
出典:[1]
導入前の確認
@emotion/react 11.14.0はReact 16.8以上を要求する
package metadataはReact >=16.8.0をpeer dependencyとして定義します。React versionとSSR/runtime条件を合わせて確認してください。
出典:[3]
参考にした公式資料
- [1]Emotion repository README(2026-10-05)
- [2]@emotion/react 11.14.0 README(2026-10-05)
- [3]@emotion/react 11.14.0 package metadata(2026-10-05)
- [4]@emotion/react 11.14.0 release(2026-10-05)
- [5]Emotion MIT license(2026-10-05)
編集部からの補足
Emotionは複数packageのmonorepoです。Reactでは@emotion/reactを中心に、styled APIが必要な場合のみ@emotion/styledを追加し、必要packageを分けてpinしてください。
3ステップで試す
- 1
Emotion React 11.14.0を固定して導入する
一時npm projectへReact packageと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
package versionを確認する
review対象の
@emotion/reactversionが導入されていることを確認します。test "$(node -e "console.log(JSON.parse(require('fs').readFileSync('node_modules/@emotion/react/package.json')).version)")" = '11.14.0' - 3
主要styling APIのexportを確認する
browserを起動せず、CSS compositionとprovider系の主要APIが利用可能であることを確認します。
test "$(node --input-type=module -e "import * as E from '@emotion/react'; console.log(['css','jsx','CacheProvider','ThemeProvider'].every(k=>k in E))")" = 'true'
成長
成長の推移 · 直近30日
18,019 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 0
- Open PR
- 86
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
カテゴリ
GitHubデータ
GitHubのデータGitHubの詳細データを見る
GitHub Topics
- css-in-js
- babel-plugin
- react
- reactjs
- css
- emotion
- Stars
- 18,019
- Forks
- 1,137
- Watchers
- 97
- Open Issues
- 310
- Contributors
- 304
- 所有者種別
- Organization
- 主要言語
- JavaScript
- ライセンス
- MIT
- リポジトリ最終更新
- 2026/08/28
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Ant Design99,682 Stars
共通タグ 3件
enterprise向けReact UIを完成済みcomponents・design token・theme機構で統一し、管理画面や業務画面を素早く構築する
TypeScript - Storybook91,200 Stars
共通タグ 3件
UI状態をstoryとして保存し、Docs・interaction test・AI toolへ再利用するfrontend workshop
TypeScript - Zustand58,786 Stars
共通タグ 3件
Reactの状態をproviderなしのhook storeで管理し、selectorで必要な部分だけ購読する
TypeScript - Expo52,566 Stars
共通タグ 3件
React NativeアプリをAndroid・iOS・Webへ一つのprojectから展開する
TypeScript - React250,891 Stars
共通タグ 3件 · 共通カテゴリ 1件 · 同じ言語
コンポーネントを組み合わせてWeb・ネイティブUIを構築するJavaScriptライブラリ
JavaScript - react-i18next10,051 Stars
共通タグ 3件 · 共通カテゴリ 1件 · 同じ言語
i18nextのtranslation resourceをuseTranslation・Trans等でReact componentへ接続する公式binding
JavaScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。