Skip to content
Latchkey

styled-components vs Emotion: どちらのCSS-in-JSを選ぶか

styled-componentsとEmotionは2つの主要なCSS-in-JSライブラリで、APIは似ていますが、柔軟性とパフォーマンスの特性が異なります。

styled-componentsは、focusされた意見の強いAPIと強力なReact統合により、styled.divのtagged templateパターンを広めました。EmotionはstyledのAPIとcss propの両方を提供し、やや小さく高速な傾向があり、より柔軟です(フレームワークに依存しないコア)。どちらもthemingとSSRをサポートします。styled-componentsは洗練されたfocusされたDXで優れ、Emotionは柔軟性、css prop、そしてわずかに優れたパフォーマンスとサイズで優れます。

styled-componentsEmotion
APIstyled tagged templatesstyled + css prop
バンドルサイズやや大きいやや小さい
パフォーマンス良い多くの場合より高速
柔軟性Reactにfocusフレームワーク非依存のコア
最適な用途洗練されたfocusされたDX柔軟性、css prop、パフォーマンス

ユースケースとAPI

styled-componentsは、強力なReactの慣習を備えた、focusされたよく知られたstyled APIを求めるチームに向いています。Emotionは、追加のcss prop、より小さく高速なランタイム、より柔軟でフレームワークに依存しないコアを求めるチームに向いています。どちらもthemingとSSRを適切に扱います。

ビルドとCI

どちらもランタイムを同梱し、SSRとminificationのためのBabel/SWCプラグインの恩恵を受けます。いずれもマネージドrunner上でビルドとテストを行え、より高速なrunnerはフロントエンドのビルドとコンポーネントテストのループを短縮します。

結論

React向けにfocusされた洗練されたstyled APIが欲しいなら: styled-components。css prop、より小さく高速なランタイム、より高い柔軟性が欲しいなら: Emotion。両者は近く、Emotionは柔軟性とパフォーマンスで、styled-componentsは引き締まった意見の強いDXで一歩リードします。

関連ガイド