リリース

RSSフィード

styled-componentsの更新は通常、npm update styled-componentsと簡単に行えます。メジャーバージョンのみ、破壊的な変更(以下のリリースノートに記載)を導入する可能性があります。

v6.1.13

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.12...v6.1.13

v6.1.12

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.11...v6.1.12

v6.1.11

変更点

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.10...v6.1.11

v6.1.10

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.9...v6.1.10

v6.1.9

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.8...v6.1.9

v6.1.8

v6.1.7からのpeerDependenciesの追加を元に戻します。一部のパッケージマネージャーでは、peerDependenciesMeta[package].optionalに関する動作が異なり、問題を引き起こしているようです。可能であれば後日再検討します。

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.7...v6.1.8

v6.1.7

変更点

  • chore: すべての欠落しているピア依存関係ステートメントを追加 @quantizor が https://github.com/styled-components/styled-components/pull/4243 で行いました

    注意:この変更は、このNPMのバグが解決されるまで、インストールされた依存関係の重複を引き起こす可能性がありますが、yarnとpnpmは正しい動作をします。Bunにも同様のバグがあります。

    全体として、これらの変更により、styled-componentsが利用されるすべてのライブラリの既知の動作バージョンを指定することが保証され、クライアントパッケージマネージャーに、関連するライブラリが実際に準拠していると仮定して、より高いセムバーに準拠したバージョンが許可され、動作するはずであることを指示します。

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.6...v6.1.7

v6.1.6

変更点

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.5...v6.1.6

v6.1.5

変更点

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.4...v6.1.5

v6.1.4

変更点

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.3...v6.1.4

v6.1.3

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.2...v6.1.3

v6.1.2

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.1...v6.1.2

v6.1.1

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.1.0...v6.1.1

v6.1.0

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.9...v6.1.0

v6.0.9

バンドルを修正してwindowをハードコードしないようにしました(JSDOMなどが使用されている場合、サーバー環境を誤って想定していた一部のテストケースを修正する必要があります)。

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.8...v6.0.9

v6.0.8

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.7...v6.0.8

v6.0.7

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.6...v6.0.7

v6.0.6

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.5...v6.0.6

v6.0.5

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.4...v6.0.5

v6.0.4

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.3...v6.0.4

v6.0.3

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.2...v6.0.3

v6.0.2

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.1...v6.0.2

v6.0.1

開発時の警告が過度に早くトリガーされていた問題を修正しました。

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0...v6.0.1

v6.0.0

yarn add styled-components

このバージョンでの変更点

  • 修正(types): スタイリングプロパティでのpropの漏洩を防ぐ (fixes #4053, c0f8015af64367938ff9d9debf90fb8005459c6c)
  • 機能(types): "CSS"名前空間を介してcsstypeを配布 (e6c4f0a6b1a1c483cf0c433f0d0434bbda124d2c)
  • 雑務: stylisを4.3に更新 (fixes #4007, fa58875dcbdbff43532c3b9519eb5fc7d009830d)
  • 不要な分岐ロジックのいくつかのソースを削減

v6での破壊的変更

移行ガイド → https://styled-components.dokyumento.jp/docs/faqs#what-do-i-need-to-do-to-migrate-to-v6

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • StyleSheetManager
    • disableVendorPrefixesenableVendorPrefixes propに置き換え
    • 自動ベンダープレフィックスを削除。古いブラウザーをサポートする必要がある場合は、上記のpropを使用して簡単に再有効化できます tsx <StyleSheetManager enableVendorPrefixes> {/* ここにReactツリーとThemeProviderが入ります */} </StyleSheetManager>
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v5.3.7...v6.0.0

v6.0.0-rc.6

yarn add styled-components

このバージョンでの変更点

v6での破壊的変更

移行ガイド → https://styled-components.dokyumento.jp/docs/faqs#what-do-i-need-to-do-to-migrate-to-v6

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • StyleSheetManager
    • disableVendorPrefixesenableVendorPrefixes propに置き換え
    • 自動ベンダープレフィックスを削除。古いブラウザーをサポートする必要がある場合は、上記のpropを使用して簡単に再有効化できます tsx <StyleSheetManager enableVendorPrefixes> {/* ここにReactツリーとThemeProviderが入ります */} </StyleSheetManager>
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-rc.5..v6.0.0-rc.6

v6.0.0-rc.5

yarn add styled-components

このバージョンでの変更点

新しいコントリビューター

v6での破壊的変更

移行ガイド → https://styled-components.dokyumento.jp/docs/faqs#what-do-i-need-to-do-to-migrate-to-v6

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • StyleSheetManager
    • disableVendorPrefixesenableVendorPrefixes propに置き換え
    • 自動ベンダープレフィックスを削除。古いブラウザーをサポートする必要がある場合は、上記のpropを使用して簡単に再有効化できます tsx <StyleSheetManager enableVendorPrefixes> {/* ここにReactツリーとThemeProviderが入ります */} </StyleSheetManager>
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-rc.3..v6.0.0-rc.5

v6.0.0-rc.3

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-rc.2...v6.0.0-rc.3

v5.3.11

古いReactのサポートを修正するために、useDebugValueフックの使用を削除しました。

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v5.3.10...v5.3.11

v6.0.0-rc.2

yarn add styled-components

このバージョンでの変更点

新しいコントリビューター

今後の予定

  • v6移行ドキュメント

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • StyleSheetManager
    • disableVendorPrefixesenableVendorPrefixes propに置き換え
    • 自動ベンダープレフィックスを削除。古いブラウザーをサポートする必要がある場合は、上記のpropを使用して簡単に再有効化できます tsx <StyleSheetManager enableVendorPrefixes> {/* ここにReactツリーとThemeProviderが入ります */} </StyleSheetManager>
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-rc.1...v6.0.0-rc.2

v6.0.0-rc.1

yarn add styled-components

このバージョンでの変更点

  • @layerルールサポートを有効にするために、stylisを4.2.0に更新

今後の予定

  • v6移行ドキュメント

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • StyleSheetManager
    • disableVendorPrefixesenableVendorPrefixes propに置き換え
    • 自動ベンダープレフィックスを削除。古いブラウザーをサポートする必要がある場合は、上記のpropを使用して簡単に再有効化できます tsx <StyleSheetManager enableVendorPrefixes> {/* ここにReactツリーとThemeProviderが入ります */} </StyleSheetManager>
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-rc.0...v6.0.0-rc.1

v6.0.0-rc.0

yarn add styled-components@beta

このバージョンでの変更点

今後の予定

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • StyleSheetManager
    • disableVendorPrefixesenableVendorPrefixes propに置き換え
    • 自動ベンダープレフィックスを削除。古いブラウザーをサポートする必要がある場合は、上記のpropを使用して簡単に再有効化できます tsx <StyleSheetManager enableVendorPrefixes> {/* ここにReactツリーとThemeProviderが入ります */} </StyleSheetManager>
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

新しい貢献者 (ありがとうございます!)

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.15...v6.0.0-rc.0

v6.0.0-beta.15

yarn add styled-components@beta

このバージョンでの変更点

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • StyleSheetManager
    • disableVendorPrefixesenableVendorPrefixes propに置き換え
    • 自動ベンダープレフィックスを削除。古いブラウザーをサポートする必要がある場合は、上記のpropを使用して簡単に再有効化できます tsx <StyleSheetManager enableVendorPrefixes> {/* ここにReactツリーとThemeProviderが入ります */} </StyleSheetManager>
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

新しい貢献者 (ありがとうございます!)

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.14...v6.0.0-beta.15

v5.3.10

変更点

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v5.3.9...v5.3.10

v6.0.0-beta.14

yarn add styled-components@beta

このバージョンでの変更点

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • StyleSheetManager
    • disableVendorPrefixesenableVendorPrefixes propに置き換え
    • 自動ベンダープレフィックスを削除。古いブラウザーをサポートする必要がある場合は、上記のpropを使用して簡単に再有効化できます tsx <StyleSheetManager enableVendorPrefixes> {/* ここにReactツリーとThemeProviderが入ります */} </StyleSheetManager>
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

新しい貢献者 (ありがとうございます!)

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.13...v6.0.0-beta.14

v5.3.9

変更点

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v5.3.8...v5.3.9

v6.0.0-beta.13

yarn add styled-components@beta

このバージョンでの変更点

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

新しい貢献者 (ありがとうございます!)

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.11...v6.0.0-beta.12

v6.0.0-beta.12

yarn add styled-components@beta

このバージョンでの変更点

  • 修正(types): エキゾチックなコンポーネントの props の受け渡しを復元 (f678107f420ecf5454aa6326bd6819d83a61c09d); これにより、React.ComponentProps<typeof MyStyledComponent> のサポートが復元されます
  • package.json に "exports" 設定を追加
  • マイナーな依存関係の更新
  • 正しく実行されていなかったテストを更新してくれた @marmite22 に感謝します

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.11...v6.0.0-beta.12

v5.3.8

変更点

修正(constants): process.env ガードをリワーク

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v5.3.7-fixed...v5.3.8

v5.3.7

  • 修正: (React Native) testID を attrs プロパティとして渡す (@ku8ar による #3857 を参照)

  • 修正: process.env が定義されていない場合のクラッシュを防止 (Suhas R による #3957 を参照)

  • translate 属性を有効なプロパティとしてサポートを追加 (@ay4toh5i による #3619 を参照)

  • ウクライナのメッセージを削除。現在では期限切れであり、メッセージは受信済みです

v6.0.0-beta.11

yarn add styled-components@beta

このバージョンでの変更点

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.10...v6.0.0-beta.11

v6.0.0-beta.10

yarn add styled-components@beta

このバージョンでの変更点

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.9...v6.0.0-beta.10

v6.0.0-beta.9

yarn add styled-components@beta

変更点

新しいコントリビューター

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.8...v6.0.0-beta.9

v6.0.0-beta.8

yarn add styled-components@beta

変更点

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.7...v6.0.0-beta.8

v6.0.0-beta.7

yarn add styled-components@beta

変更点

  • feat(StyleSheetManager): オプションの名前空間を追加 (#3881); babelプラグインの機能を実行時に実行するように置き換えます。
  • breaking refactor: 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456); 代わりに "as" プロパティを使用してください。
  • feat: 名前付きエクスポートとしてもstyledを追加 (5aed9e3f84cd52fa053693d5b66dc5a0f0c82ee9); この構文は、更新されるまでbabelプラグインではおそらく機能しないことに注意してください。
  • chore: rollupのアップグレードを含む依存関係のメンテナンス

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.6...v6.0.0-beta.7

v6.0.0-beta.6

yarn add styled-components@beta

変更点

v6の破壊的な変更点(このバージョン現在)

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.5...v6.0.0-beta.6

v6.0.0-beta.5

yarn add styled-components@beta

変更点

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.4...v6.0.0-beta.5

v6.0.0-beta.4

yarn add styled-components@beta

変更点

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.3...v6.0.0-beta.4

v6.0.0-beta.3

yarn add styled-components@beta

変更点

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.2...v6.0.0-beta.3

v5.3.6

変更点

非推奨

  • $as$forwardedAsは次のメジャーバージョンで削除されます。代わりにプレフィックスなしのプロパティを使用してください。

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v5.3.5...v5.3.6

v6.0.0 beta 2

yarn add styled-components@beta

変更点

  • 破壊的変更 ランタイムのプロパティ検証機能が削除されました。スタイリング専用のプロパティには一時的なプロパティを使用するか、より高度なシナリオにはshouldForwardPropを使用してください。
  • スタンドアロンのprodビルドのみを縮小化 by @henryqdineen in https://github.com/styled-components/styled-components/pull/3796
  • コンポーネントの型を、ジェネリック内のランタイムスイッチ(web | native)を持つ統合された設定を使用するようにリファクタリングしました。
  • その他の型の改善
  • コードサイズの削減

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.1...v6.0.0-beta.2

v6.0.0 beta 1

yarn add styled-components@beta

変更点

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.0...v6.0.0-beta.1

v6.0.0 beta 0

yarn add styled-components@beta

変更点

v6での破壊的変更

  • stylis v4 を使用するようになりました (stylis-plugin-rtl を使用している場合は、新しいバージョンにアップグレードする必要があります)
  • styled-componentsは独自の型を提供するようになりました。過去に@types/styled-componentsをインストールした場合は、削除する必要があります
  • $as$forwardedAs propsを削除 (as または forwardedAs を使用)
  • 自動propフィルタリングを削除。子コンポーネント/HTMLに渡したくないものには一時的なprops ($ プレフィックス) を使用
  • 非推奨のwithComponent APIを削除 (87f511a228e5b13b1ff70a416409e0705e5bf456)。代わりに "as" propを使用
  • node >= 14 が必要

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-alpha.5...v6.0.0-beta.0

v6.0.0-alpha.5

  • styled-components/macros に関連付けられた型を修正しました
  • babel-plugin-styled-components (macros に必要) のオプションのピア依存関係を追加しました

アルファ版のサンドボックスを更新しました: https://codesandbox.io/s/styled-components-v6-alpha-sandbox-05bod1?file=/src/App.tsx

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-alpha.4...v6.0.0-alpha.5

v6.0.0-alpha.4

  • CSSProp の型を追加しました (これは Definitely Typed にはありますが、公開されていませんでした)
  • より多くの基本型を公開しました

プロジェクトに推奨される styled-components.d.ts の設定

// create styled-components.d.ts in your project source
// if it isn't being picked up, check tsconfig compilerOptions.types
import type { CSSProp } from 'styled-components';
import Theme from './theme';

type ThemeType = typeof Theme;

declare module 'styled-components' {
  export interface DefaultTheme extends ThemeType {}
}

declare module 'react' {
  interface DOMAttributes<T> {
    css?: CSSProp;
  }
}

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-alpha.2...v6.0.0-alpha.4

v6.0.0-alpha.2

TS型の取得のための "types" package.json フィールドを追加しました。

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v6.0.0-alpha.1...v6.0.0-alpha.2

v5.3.5

ウクライナへの戦争に対する連帯の声明を追加しました 🇺🇦

v6.0.0-alpha.1

rollup によって TS 宣言が正しく出力されない問題を修正しました。

完全な変更履歴: https://github.com/styled-components/styled-components/compare/.v6.0.0-alpha.0...v6.0.0-alpha.1

v6.0.0-alpha.0

大規模なリファクタリングを経て、styled-components v6 の最初のアルファ版を発表できることを嬉しく思います!

ハイライト

  1. styled-components が TypeScript で記述され、独自の型を提供するようになりました
  2. stylis v4
  3. 多数のバグ修正
  4. node 14+ が必須になりました

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v5.2.0...v6.0.0-alpha.0

v5.3.3

変更点

新しいコントリビューター

完全な変更履歴: https://github.com/styled-components/styled-components/compare/v5.3.1...v5.3.3

v5.3.1

  • 強制的なサーバーサイドモードがグローバルスタイルをトリガーしない問題を修正しました(#3566 を参照)

  • v5.2.0 で発生したリグレッションである、クライアント上でのグループの順序変更と不十分なハッシュ入力によって引き起こされる SSR の衝突を修正しました(#3563 を参照)

  • React v18 の動的作成に関する React の警告を修正し、@lynndylanhurley さんによって v5 にバックポートされました(#3564 を参照)

  • styled-components の重複インスタンスをチェックする際に欠落していた typeof window チェックを追加しました(#3553 を参照)

  • ServerStyleSheet が空のスタイルタグを出力しないようにしました。これは IE11 で問題を引き起こす可能性があります(#3555 を参照)

  • スタイルオブジェクト内の css タグ付きテンプレートをサポートします。@roginfarrer および @dvingo さんによる変更です(#3469 を参照)

v5.3.0

  • 作成される要素がタグか別のコンポーネントかに基づいて props を渡すかどうかをユーザー指定の関数が決定できるように、shouldForwardProp に 3 番目のパラメーターとして elementToBeCreated を渡します。(#3436 を参照)

  • React Native コンポーネントがスタイル props として関数を受け入れる問題を修正しました。(#3389 を参照)

v5.2.3

SSR パスにおける保護されていない window アクセサーの問題を修正しました(#3446 を参照

  • React Native ベースのコンポーネントの場合、テストを容易にするために、指定されている場合は testID をネイティブコンポーネントに渡します。(#3365 を参照)

  • babel マクロのユーザーが importModuleName で styled-components のインポートをカスタマイズできるようにしました(#3422 を参照)

  • [fix] COMPLEX_SELECTOR_PREFIX.includes がトランスパイルされていませんでした(#3397 を参照)

v5.2.1

サーバーサイドのビルド設定を調整して、jest-dom が生成されたスタイルを拾えない問題を解決しました(#3308 を参照)@Lazyuki さんに感謝

v5.2.0

  • StyleSheetManager が iframe / 子ウィンドウ内のすべてのスタイルをレンダリングするようにしました(#3159 を参照)@eramdam さんに感謝!

  • 拡張シナリオでコンポーネントが自己参照する方法を再構築しました(#3236 を参照); & + & のようなパターンに関する多くの微妙なバグを修正する必要があります

  • stylis-plugin-rtl のようなものを使用している場合に、keyframes が変更された stylis インスタンスを受け取らない問題を修正しました(#3239 を参照)

  • スタイルオブジェクト を使用するコンポーネントのパフォーマンスを大幅に向上させました(#3239 を参照)

  • 空のルールセットに対して動的な classNames を出力しなくなったため、スナップショットで一部の className の変更が発生する可能性があります

  • グローバルスタイルの配置を事前に行うことで、cGS がスタイルシートの先頭に常に挿入されるようにします。これは実行時の順序で行われることに注意してください。そのため、複数の cGS が重複するスタイルを持つ場合は、注入したい順序でコード内で定義されていることを確認してください(#3239を参照)。

  • package.json に "engines" を追加します(現在、Node 10(サポートされている最も古い LTS ディストリビューション)に設定されています)(#3201を参照)。@MichaelDeBoey さん、ありがとうございます!

最後に、このリリースのテストと最後の微調整をしてくれた @willheslam に特別な感謝を申し上げます!

v5.2.0-test.10

5.2 を 9 月 2 日/3 日にリリースする予定です。テストにご協力ください!

yarn add styled-components@test
  • グローバルスタイルの配置を事前に行うことで、cGS がスタイルシートの先頭に常に挿入されるようにします。これは実行時の順序で行われることに注意してください。そのため、複数の cGS が重複するスタイルを持つ場合は、注入したい順序でコード内で定義されていることを確認してください(#3239を参照)。

    注意: これは動作の変更であり、createGlobalStyle コンポーネントを多数使用している場合は、コードベースの調整が必要になる場合があります。既存のバグを修正する以外は、ほとんどのプロジェクトに影響はないと考えています。

  • createGlobalStyleReact.StrictMode に準拠するようになりました。

  • StyleSheetManager が iframe / 子ウィンドウ内のすべてのスタイルをレンダリングするようにしました(#3159 を参照)@eramdam さんに感謝!

  • 拡張シナリオでコンポーネントが自己参照する方法を再構築しました(#3236 を参照); & + & のようなパターンに関する多くの微妙なバグを修正する必要があります

  • stylis-plugin-rtl のようなものを使用している場合に、keyframes が変更された stylis インスタンスを受け取らない問題を修正しました(#3239 を参照)

  • スタイルオブジェクト を使用するコンポーネントのパフォーマンスを大幅に向上させました(#3239 を参照)

  • 空のルールセットに対して動的な classNames を出力しなくなったため、スナップショットで一部の className の変更が発生する可能性があります

  • package.json に "engines" を追加します(現在、Node 10(サポートされている最も古い LTS ディストリビューション)に設定されています)(#3201を参照)。@MichaelDeBoey さん、ありがとうございます!

新機能

  • [v5.1.0] で以前欠落していたネイティブおよびプリミティブプラットフォーム用の shouldForwardProp API を実装しました(#3093を参照)。これは、ネイティブサポートでのみ欠落していたため、マイナーではなくパッチバンプでリリースされています。

バグ修正

  • react-primitives エントリーポイントの名前付きエクスポートに useTheme フックを追加しました(#2982を参照)。@jladuval さん、ありがとうございます!
  • コンポーネントの表示名をクラス名に変換する際に必要なすべての CSS 識別子文字をエスケープします(#3102を参照)。@kripod さん、ありがとうございます!

v5.1.0

新機能

  • shouldForwardProp API を追加します(emotion のものとほぼ同じですが、若干異なる使用パターンです)。https://github.com/styled-components/styled-components/pull/3006

    複数の高階コンポーネントを一緒に構成する場合、複数のレイヤーが同じ名前で props を消費するシナリオが発生する可能性があります。過去には、"as" のような一般的な props に対してさまざまな回避策を導入してきましたが、このパワーユーザー API では、styled() HOC ラッパーを使用する際に、子孫コンポーネントに渡される props をより細かくカスタマイズできます。

    .attrs() のような他の API と組み合わせると、これは非常に強力な機能の組み合わせになります。

    使い方は次のとおりです。

    const Comp = styled('div').withConfig({
      shouldForwardProp: (prop, defaultValidatorFn) => !['filterThis'].includes(prop),
    })`
      color: red;
    `;
    
    render(<Comp filterThis="abc" passThru="def" />);
    
    # Renders: <div className="[generated]" passThru="def"></div>

    2 番目の引数 defaultValidatorFn は、既知の HTML 属性に基づいて props を検証するために内部で使用するものです。渡したくない props を正確にフィルタリングしてから、必要に応じてデフォルトのフィルタリングメカニズムにフォールバックできるように提供されています。

    styled HOC の .attrs のような他のメソッドは、withConfig() の後、テンプレートリテラルを開く前にチェーンできます。

    const Comp = styled('div').withConfig({
      shouldForwardProp: (prop, defaultValidatorFn) => !['filterThis'].includes(prop),
    }).attrs({ className: 'foo' })`
      color: red;
    `;
    
    render(<Comp filterThis="abc" passThru="def" />);
    
    # Renders: <div className="[generated] foo" passThru="def"></div>

    @stevesims および貢献してくれたすべての方々に感謝します!

  • "一時的な props" API を追加します。https://github.com/styled-components/styled-components/pull/3052

    一時的な props は、shouldForwardProp を補完する軽量な API であると考えてください。styled-components では、あらゆる種類の props をスタイリングに使用できます(ほとんどの CSS-in-JS ライブラリで共有される特性ですが、サードパーティのライブラリエコシステムではそうではありません)。使用する可能性のあるすべての props に対してフィルターを追加すると、面倒になる可能性があります。

    一時的な props は、styled コンポーネントによってのみ明示的に消費され、より深いコンポーネントレイヤーに渡すことを意図していない props を渡すための新しいパターンです。使い方は次のとおりです。

    const Comp = styled.div`
      color: ${props => props.$fg || 'black'};
    `;
    
    render(<Comp $fg="red">I'm red!</Comp>);

    props のドル記号 ($) 接頭辞に注意してください。これは 一時的 であることを示し、styled-components はそれをレンダリングされた DOM 要素に追加したり、コンポーネント階層をさらに下に渡したりしないように認識します。

バグ修正

  • 不正な形式の CSS の場合の遅い SSR 再水和を修正し、耐障害性を向上させました(#3018を参照)。

  • isPlainObject (内部メソッド) を変更して、異なるコンテキストで作成されたオブジェクトをサポートします(#3068を参照)。@keeganstreet さん、ありがとうございます!

  • <video disablePictureInPicture> のサポートを追加しました(#3058を参照)。@egdbear さん、ありがとうございます!

v5.0.1

  • useTheme フックを react native の名前付きエクスポートに追加しました(#2982)

  • パフォーマンスの向上

    • ベンチマークで少し高速なハッシュ関数をリファクタリングしました(#2983)
    • 内部で型付き配列を割り当てる方法が原因で SSR パフォーマンスの低下を引き起こしていたビット演算の問題を修正しました(#2996)
  • アンチパターンのための役立つ新しい開発時警告をいくつか追加しました

    • createGlobalStyle 内での css @import の使用とその代替案を推奨しません(#2997)
    • 他のコンポーネントのレンダリングパス内での styled-components の動的な作成を検出し、警告します(#2998)

v5.0.0

ついに登場!!!🚀 簡単なアップグレード手順については、v5 への移行に関する FAQ ページを参照してください!

v5 リリース発表を読んでください!

要約

  • バンドルサイズが 19% 削減
  • クライアント側のマウントが 18% 高速化
  • 動的なスタイルの更新が 17% 高速化
  • サーバーサイドレンダリングが 45% 高速化
  • RTL サポート

...そして、破壊的な変更なしで、さらに多くの機能が追加されました!

注意: 現時点では、createGlobalStyle 内で @import を使用しないことをお勧めします。この機能の動作を改善するために取り組んでいますが、現時点では実際には機能せず、これらのインポートを HTML インデックスファイルなどに埋め込む方が良いでしょう。

変更

  • StyleSheetManager の拡張機能

    • stylis-plugin-rtl のような stylis プラグインを提供できるようになりました。<StyleSheetManager stylisPlugins={[]}>...</StyleSheetManager>
    • disableVendorPrefixes は、レガシーブラウザーのサポートが必要ない場合に自動プレフィックスを削除します。<StyleSheetManager disableVendorPrefixes>...</StyleSheetManager>
    • disableCSSOMInjection は、ランタイム環境の他の統合が CSSOM 注入スタイルを解析できない場合に、低速な注入モードの使用を強制します。<StyleSheetManager disableCSSOMInjection>...</StyleSheetManager>
  • v4 で非推奨になった「サブ関数」attrs 構文を削除しました

    styled.div.attrs({ role: p => p.onClick ? 'button' : '' })`
      color: red;
    `

    変更後

    styled.div.attrs(p => ({ role: p.onClick ? 'button' : '' }))`
      color: red;
    `
  • css-to-react-native を v3.0.0 に更新しました(#2811)。唯一の破壊的な変更は、フォントプロパティを設定するときに単位なしの行の高さが許可されなくなったことです。

  • 生成されたクラス名で /ad/i を禁止します(#2837)。この変更は、主に「ad」というサブストリングを含む生成されたクラス名を改ざんする過度に積極的な広告ブロッカーの一部を回避するのに役立ちます。

  • CDN から styled-components を使用する場合、v5 では「react-is」依存関係が追加されました(これをプロジェクトに追加してください)。

v5.0.0-rc.3

これは、1、2 週間後の v5 一般リリース前の最後の RC になるはずです!

注意: この stylisPlugins 機能を stylis-rtl プラグインでテストしている場合は、stylis-rtl から stylis-plugin-rtl に切り替えてください。

  • useTheme をよりクリーンにします(#2879)。@sayjeyhi さん、ありがとうございます
  • 補間なしの CSS の不必要なフラット化とインターリーブ @vepor
  • メインラインの hoist-non-react-statics に戻します(#2934)...
  • post install スクリプトの代わりに funding フィールドを使用します(#2931)。@koba04 さん、ありがとうございます
  • SSR でのネストされたスタイルシートマネージャーの使用を修正します
  • API でバージョンを公開します(#2888)。@jamesarmenta さん、ありがとうございます
  • stylis 管理をリファクタリングします(#2936)

v5.0.0-rc.2

注意: 新しいリリースのターゲットブランチとして、canary から v5 に切り替えました。基本的には同じですが、マスターにきれいにマージされるように修正されています。

rc.1 からの変更

  • attrs が props より優先されないいくつかの見落としを修正しました(d2f4509)
  • テーマ使用の開発時チェックを削除しました(df36f93)。これはすでにマスターで行われており、単にフォワードポーティングしています
  • attrs を介して渡された classNames を集約します(#2859、12a9f3c)
  • CSSOM からの再水和をプログレッシブ正規表現に置き換えます(#2872)

v5.0.0-rc.1

rc.0 からの変更

  • IE 用に一貫してトランスパイルされるように、mixin-deep をインライン化します

v5.0.0-rc.0

いよいよです!数か月にわたる作業(ベータテスターの皆様、ありがとうございます!)を経て、これが最初の v5 リリース候補ビルドです。

v5 全体の変更

  • v4 からのパフォーマンスとバンドルサイズの大きな改善については、発表ブログ を参照してください!

  • StyleSheetManager の拡張機能

    • stylis-rtl のような stylis プラグインを提供できるようになりました。<StyleSheetManager stylisPlugins={[]}>...</StyleSheetManager>
    • disableVendorPrefixes は、レガシーブラウザーのサポートが必要ない場合に自動プレフィックスを削除します。<StyleSheetManager disableVendorPrefixes>...</StyleSheetManager>
    • disableCSSOMInjection は、ランタイム環境の他の統合が CSSOM 注入スタイルを解析できない場合に、低速な注入モードの使用を強制します。<StyleSheetManager disableCSSOMInjection>...</StyleSheetManager>
  • v4 で非推奨になった「サブ関数」attrs 構文を削除しました

    styled.div.attrs({ role: p => p.onClick ? 'button' : '' })`
      color: red;
    `

    変更後

    styled.div.attrs(p => ({ role: p.onClick ? 'button' : '' }))`
      color: red;
    `

最後のベータ版からの変更点

  • 生成されたクラス名で /ad/i を禁止します(#2837)。この変更は、主に「ad」というサブストリングを含む生成されたクラス名を改ざんする過度に積極的な広告ブロッカーの一部を回避するのに役立ちます。

  • css-to-react-native を v3.0.0 に更新しました(#2811)。唯一の破壊的な変更は、フォントプロパティを設定するときに単位なしの行の高さが許可されなくなったことです。

  • merge-anything を mixin-deep に置き換えます(#2838)。拡張された styled コンポーネントの defaultProps をマージするときに使用されるバイト数を節約します

  • ランタイムインスタンスごとに createGlobalStyle をシャードします(#2824)。cGS はシングルトンとして使用することを意図して実装されていますが、同じ cGS コンポーネントの複数のインスタンスをページに同時に持つことは珍しくありません。この変更により、インスタンスがマウントおよび削除されると、既存のグローバルスタイルも削除されないようにします。

  • テーマのメモ化 (#2820); ThemeProvider に参照等価な theme プロップが渡された場合の、軽微なパフォーマンス調整

  • ThemeProvider のエラーをわかりやすくする (#2787); ThemeProvider 使用時に theme プロップが必須であることをより明確にメッセージ表示

v4.4.1

  • React Native Web 用に styled-componentsreact-native インポートを修正 ( @fiberjw 著) (#2797 参照)

  • 外側の ThemeProvider なしでテーマプロップを参照した場合の、開発時警告を削除。このチェックは「or」や三項フォールバックがあるケースを処理するのに十分賢くなく、様々なサードパーティ統合で望ましくないノイズが発生する

v5.0.0-beta.11

v5.0.0-beta.10

v4.4.0

これがv5前の最後のマイナーリリースです。ベータ版を使い始めてフィードバックをお寄せください!

これは#2738の変更による、パッチリリースではなくマイナーリリースです。もしこれがプロジェクトのコードの変更を引き起こす場合は申し訳ありませんが、これは修正が必要な長年のバグでした。

  • グローバル document の代わりに ownerDocument を使用するように修正 ( @yamachig 著) (#2721 参照)

  • next.jsのような一部の環境での開発モードにおけるSSRクラス名の不一致に対する修正をバックポートしました ( #2701 参照)

  • attrs が props より適切に優先されない問題を修正

  • カスタムクラス名が渡された場合にクラス名が間違った順序で構成されるバグを修正 ( #2760 参照)

  • スタイルタグがデタッチされている場合のスタイルタグのチェックを追加 - この場合、スタイルタグ内のシートは null になります ( @newying61 著) (#2707 参照)

v5.0.0-beta.9

  • attrs が props より優先されるべき (#2737)
  • グローバルドキュメントの代わりに ownerDocument を使用する (#2726) props @yamachig
  • すべての環境で複数インスタンスの警告を表示する (#2663)
  • ThemeProvider の単一の子コンテキスト制限を取り除く (#2708) props @vkrol
  • クリック可能なリンクでエラーメッセージを更新する。 (#2702) props @unixchad
  • パフォーマンス向上のために createGlobalStyle をメモ化

v5.0.0-beta.8

  • テーマが使用されているが提供されていない場合に、軽量な開発警告を追加 (#2655)

  • コンポーネントセレクター + css プロパティの使用法を修正 (#2656)

5.0.0-beta.7 はビルドエラーのため公開されませんでした

v5.0.0-beta.6

  • 折り畳まれた componentIds の概念を削除 (#2652); 折り畳まれたコンポーネント自体が折り畳まれた結果よりもコンポーネントツリーの後で使用される場合、特異性の衝突につながる可能性があった問題を修正します。

  • クラスが多すぎる警告を 200 に引き上げ (7af8e12bc32e44ea977e3e9fa6d45b6fdfd3a4e2)

  • テーマの決定方法を見直し、簡略化。createGlobalStyle の HMR と defaultProps.theme 周りの挙動を修正 (#2647)

v5.0.0-beta.5

  • stylis から @emotion/stylis に切り替えました (#2640)。主にバンドルサイズの削減と、軽微なパフォーマンスの向上

  • StyleSheetManager から "stylisOptions" プロップを削除しましたが、ベンダープレフィックスを削除する機能を "disableVendorPrefixes" として再実装しました

  • 非プロダクションモードで ComponentStyle の静的性を無効にする (#2634)。next.js 開発モードなどのランタイムでクラス名の不一致が発生する場合を修正するのに役立つはずです

  • 「クラスが多すぎる」警告のしきい値を 50 に引き下げました (#2622)。以前の制限は 200 で、おそらく高すぎました

v5.0.0-beta.4

v4.3.2

styled-components Babel マクロで "css" プロパティを使用する場合の修正 (CRA 2.x ユーザーに関連) ( @jamesknelson 著) ( #2633 参照)

v5.0.0-beta.3

ブラウザビルドターゲットで "stream" モジュールが適切に DCE されない問題を修正

v5.0.0-beta.2

HMR を修正 (#2623)

v5.0.0-beta.1

クライアントとサーバー間の不一致を修正し、リハイドレーションを中断させる (#2621)

v5.0.0-alpha.2

  • 非推奨のオブジェクト形式の attrs 機能を削除
  • 不要なコードを削除するための内部リファクタリング

v4.3.1

  • #2586 をリバート。next.js のような特定のランタイムの開発でリハイドレーションを中断させる

v5 で再導入を検討しますが、安全第一です。

v4.3.0

  • CRA アプリケーションとの統合を容易にするために、REACT_APP_* .env 変数を介して SC_ATTR および SC_DISABLE_SPEEDY を初期化できるようにしました ( #2501 参照)

  • 中間 HOC が存在する場合にコンポーネントが不適切に折り畳まれるのを修正 ( #2586 参照)

  • styled ネイティブコンポーネントの theme プロップを修正。また、それらの defaultPropstheme も修正 ( #2576 参照)

  • styled() を高階コンポーネントとして使用する場合に、異なる "as" プロパティ値を深く下のコンポーネントに渡すことができる "forwardedAs" プロップを追加 ( #2580 参照)

  • defaultProps の折り畳みを実装 ( #2597 参照)

v4.2.1

素晴らしい貢献者の方々に心から感謝いたします!

  • next.jsのような特定のランタイム環境での過剰な偽陽性ノイズと、関連する警告抑制プロップのため、classNameの使用状況チェッカーの開発ユーティリティを削除しました(#2563を参照)。

  • Reactドキュメントの説明に従い、displayNameをforwardRef関数に付与しました(#2508を参照)。

  • react-native-web 0.11との互換性を実現しました(#2453を参照)。

  • .attrs警告にスタックトレースを追加しました(#2486を参照)。

  • オブジェクトリテラルの値としての関数を修正しました。(2489を参照)

  • Babelマクロのバリデーションを削除しました。 by @mAAdhaTTah#2427を参照)

v4.2.0

この大きなマイナーリリースを先導してくれた素晴らしい貢献者の皆さんに感謝します!v5に向けて、素晴らしいパフォーマンス向上とQOLの変更が含まれています。

  • コンポーネントセレクタースタイルを使用する際のGC負荷を軽減しました(#2424を参照)。

  • svgタグのmarkerをdomElements.jsに追加しました(#2389を参照)。

  • createGlobalStyleで作成されたGlobalStyleComponentが、propsとともにベースコンストラクターを呼び出すようにしました(#2321を参照)。

  • lernaを使用したモノリポジトリ構造に移行しました @imbhargav5#2326を参照)

  • StyleSheetContextStyleSheetConsumerを公開しました。これは、ワイルドなことをするおしゃれな人向けです。

  • suppressClassNameWarningがラップされたコンポーネントに渡されないようにフィルタリングしました @taneba#2365を参照)

  • <textarea>要素内でReactがストリーミングを中断してしまうエッジケースを修正しました。textarea要素は特別な子要素の動作を持ち、スタイルタグを挿入するのに適した場所ではありません(#2413を参照)。

v4.1.3

Babelマクロの内部コードをクリーンアップしました。 by @lucleray (#2286を参照)

v4.1.2

  • 完全な実行コンテキスト(テーマを含む)を受け取るように、関数形式のattrsを修正しました(#2210を参照)。

  • カスタムコンポーネントをラップしている場合は、innerRefの非推奨警告が発火しないように調整しました。これは、基になるコンポーネントがまだforwardRef上になく、実際にpropを使用している可能性があるためです(#2211を参照)。

  • ネイティブおよびプリミティブエントリ用に、ThemeConsumerThemeContextのエクスポートを公開しました(#2217を参照)。

  • createGlobalStyleの複数マウント警告を削除しました。コンカレントモードと厳密モードでは、同じコンポーネントが意図的に複数回レンダリングされるため、アプリケーションで正しい使用法であっても常にこの警告がトリガーされます(#2216を参照)。

  • 古い.extend APIを使用した場合、折りたたまれたコンポーネントはv3と同様にコンポーネントセレクターでターゲットにできるようになりました(#2239を参照)。

  • 大文字の文字列をタグのようなコンポーネントとして扱わず、それらからプロップをフィルタリングしないようにしました(#2225を参照)。

v4.1.1

  • 検出不可能なSFCを時々受け取るフラット化処理の一部を囲むtry/catchガードを戻しました(エッジケースでの誤ったハードエラーを修正)。

v4.1.0

  • 完全に静的な(関数補間なし)styled-componentsのパフォーマンス最適化を行いました。これは、不要なためThemeConsumerの使用を避けることで実現しました。by @mxstbr#2166を参照)

  • グローバル変数SC_DISABLE_SPEEDYを使用して「speedy」モードを無効化できるようにしました。by @devrelm#2185を参照)

    これを利用するには、アプリのエントリーファイルでSC_DISABLE_SPEEDYを設定するか、ビルド時にwebpack.DefinePluginのようなものを使用します。

    webpack.DefinePlugin({
      SC_DISABLE_SPEEDY: true,
    });
  • Attrsに関数を渡せるようになりました(#2200を参照)。早期PoC PRを提供してくれた@oliverlazに感謝します!

    例:

    styled.div.attrs(props => ({ 'aria-title': props.title }))``;
  • warnTooManyClasses開発ヘルパーが本番環境で完全にデッドコード削除されないバグを修正しました(#2200を参照)。

  • オブジェクト形式のattrsのオブジェクトキーとしての関数を非推奨にしました(#2200を参照)。

    例:

    styled.div.attrs({ 'aria-title': props => props.title })``; // bad
    styled.div.attrs(props => ({ 'aria-title': props.title }))``; // good

    このサポートはstyled-components v5で削除されます。この変更の主な理由は、オブジェクト形式のattrsコンストラクターで値として提供される基本的な関数、styled-components、Reactコンポーネントをめぐる混乱を解消するためです。それぞれ異なる処理動作があります。propsを受け取り、propsオブジェクトを返す単一の外側の関数は、概念的に単純です。

  • スタンドアロンのCDNビルドがUMDに準拠するようになり、RequireJSなどで使用できるようになりました。

  • オブジェクト補間を使用する場合に、単位のない数値にピクセルを追加しました。by @Fer0x#2173を参照)

  • styledコンポーネントではないものをCSSに補間しようとすると、警告ではなくハードエラーになりました(#2173を参照)。

v4.0.3

  • 文字列にstyledコンポーネントを補間すると、静的なコンポーネントセレクターが返されるようになりました(emotionとのクロス互換性)。

    import styled from 'styled-components';
    
    const Comp = styled.div`
      color: red;
    `;
    
    `${Comp}`; // .sc-hash
  • Reactコンポーネントをstyled()でラップし、classNameが使用されていない場合に警告を無効にするsuppressClassNameWarningプロップを追加しました。by @Fer0x#2156を参照)

  • React 16.6の静的contextTypeサポートを有効にするためにThemeContextを公開しました。by @imbhargav5#2152を参照)

  • attrsから無効なHTML属性をフィルタリングしました。by @Fer0x#2133を参照)

  • attrsプロップが要素を返す関数である場合に警告を追加しました。by @timswalling#2162を参照)

v4.0.2

  • 自己参照stylisプラグインに、誤ったコンテキスト設定で@規則が供給されていたエッジケースを処理しました。by @probablyup#2114を参照)

v4.0.1

  • 複数のcgsマウントに関する警告を無効にするsuppressMultiMountWarningプロップを追加しました。by @imbhargav5#2107を参照)

  • 自己参照の置換に関するエッジケースを修正しました。by @probablyup#2109を参照)

v4.0.0

これは、便宜上、ベータ版0〜11のハイライトをまとめたものです。簡単な更新手順については移行ガイドを参照し、v4の変更点、思考プロセスなどの概要についてはベータ版発表ブログを参照してください。

新機能

  • create react app v2+との完全な相互運用性のためのBabelマクロを追加しました。by @lucleray#2032を参照)

  • ThemeConsumerコンポーネントを公開しました。これは、withTheme HOCに加えて、または代わりにReact.createContext APIを使用することに関心がある人向けに、コンテキストコンシューマーのレンダープロップコンポーネントです。by @probablyup

  • マウント時にグローバルスタイルを適用するコンポーネントを返すcreateGlobalStyleを追加しました。これはinjectGlobal APIの代替です。通常のコンポーネントと同様に更新、置換、削除などが可能で、グローバルスコープがそれに応じて更新されます。 by @JamieDixon @marionebl, @yjimk, and @imbhargav5#1416を参照)

    const GlobalStyles = createGlobalStyle`
      html {
        color: 'red';
      }
    `;
    
    // then put it in your React tree somewhere:
    // <GlobalStyles />
  • "as"プロップを介したポリモーフィズムをレンダリングするためのファーストクラスAPIを追加しました。ほとんどの場合、この新しいプロップは.withComponent APIを使用する必要性を置き換えます。これにより、スタイルを損なうことなく、実行時にレンダリングされる基になる要素またはコンポーネントを制御できます。by @probablyup#1962を参照)

    import { Link } from 'react-router'
    
    const Component = styled.div`
      color: red;
    `
    
    // Examples
    <Component>Hello world!</Component>
    <Component as="span">Hello world!</Component>
    <Component as={Link} to="home">Hello world!</Component>

破壊的な変更

  • 自己参照セレクターの組み合わせ(例:& + &)でのアンパサンドの処理方法を修正しました(#2071を参照)。

  • 非推奨のconsolidateStreamedStyles APIを削除しました。by @probablyup#1906を参照)

  • 非推奨のjsnext:mainエントリポイントをpackage.jsonから削除しました。by @probablyup#1907を参照)

  • 非推奨の.extend APIを削除しました。by @probablyup#1908を参照)

  • 新しい Context API への移行、@alexandernanberg 氏 (詳細は#1894 を参照)

  • TS の型定義を削除。型定義は DefinitelyTyped で提供されるようになりました。詳細は、https://github.com/styled-components/styled-components/issues/1778 を参照してください (@probablyup 氏)

  • 複数の styled-components のバージョンがページ上で同時に機能するように、生成された <style> タグに新しい data-styled-version 属性を追加。これにより、互いに上書きすることを防ぎます (@probablyup 氏)

    styled-components や React のようなライブラリの重複排除には、バンドラーによるエイリアスの使用を強く推奨します。

  • [破壊的変更] keyframes ヘルパーのリファクタリング (@fer0x 氏) (詳細は#1930 を参照)。

    Keyframes は「遅延」方式で実装されるようになりました。そのスタイルは、それらを使用するコンポーネントのレンダリングフェーズで挿入されます。

    keyframes はアニメーション名を返さなくなり、代わりにアニメーション名を取得するための .getName() メソッドを持つオブジェクトを返します。

  • 新しい React.forwardRef API を使用するように移行 (@probablyup 氏)。これにより、不要になったため innerRef API が削除されることに注意してください。

  • styled() ラッパーの折りたたみの実装。簡単に言うと、styled ラッパーをネストすると (例: styled(styled.div))、コンポーネントが折りたたまれ、先祖のスタイルをマージしたものが1つだけマウントされます。これは、削除された「extend」機能と概念的には同等ですが、多くの欠点がなく、自動で行われます (@probablyup 氏) (詳細は#1962 を参照)

開発者エクスペリエンスの向上

  • コンポーネントが styled コンポーネントではなく、コンポーネントセレクターで参照できない場合に警告を追加 (@egdbear 氏) (詳細は#2070 を参照)

    CRA v2 を使用する場合、babel プラグインのすべての利点を享受するために、styled コンポーネントを styled-components/macro からインポートしてください。

  • React コンポーネントを styled() でラップしていて、className が使用されていない場合 (つまり、スタイルが適用されていない場合) に警告を追加 (@Fer0x 氏) (詳細は#2073 を参照)

  • styled コンポーネントのベースコンポーネントの命名を調整し、DevTools で見やすくする (@probablyup 氏) (詳細は#2012 を参照)

  • 複数の styled components のバージョンが一緒に使用され、StyleSheet インスタンスが見つからない場合に発生するエラーメッセージを強化 (@probablyup 氏) (詳細は#2012 を参照)

その他

  • enzyme のマウントされたテストシナリオから styled-component のインスタンスを簡単に取得するための enzymeFind テストユーティリティを追加 (@probablyup 氏) (詳細は#2049 を参照)

    import { mount } from 'enzyme';
    import React from 'react';
    import styled from 'styled-components';
    import { enzymeFind } from 'styled-components/test-utils';
    
    const Thing = styled.div`
      color: red;
    `;
    
    const wrapper = mount(
      <div>
        <Thing isCool />
      </div>
    );
    
    const thing = enzymeFind(wrapper, Thing);
    
    // expect(thing.props()).toHaveProperty('isCool') etc
  • バンドラーのバグを回避し、パッケージのサイズを少し削減するために、静的ホイスティング機能をインライン化して最適化 (@probablyup 氏) (詳細は#2021 を参照)