All Versions
110
Latest Version
Avg Release Cycle
28 days
Latest Release
19 days ago

Changelog History
Page 1

  • v5.0.1

    February 04, 2020

    ➕ Added useTheme hook to named exports for react native (#2982)

    🐎 Performance enhancements

    • Refactored hashing function that is a bit faster in benchmarks (#2983)

    - Fixed a bitwise math issue that was causing SSR performance degradations due to how we allocate typed arrays under the hood (#2996)

    ➕ Added some helpful new dev-time warnings for antipatterns

    • Recommending against usage of css @import inside createGlobalStyle and what to do instead (#2997)
    • Catching and warning against dynamic creation of styled-components inside other component render paths (#2998)
  • v5.0.0

    July 01, 2019

    🚀 Read the v5 release announcement!

    • 19% smaller bundle size
    • 18% faster client-side mounting
    • 💅 17% faster updating of dynamic styles
    • 45% faster server-side rendering
    • 👍 RTL support

    💅 NOTE: At this time we recommend not using @import inside of createGlobalStyle. We're working on better behavior for this functionality but it just doesn't really work at the moment and it's better if you just embed these imports in your HTML index file, etc.

    • 💅 StyleSheetManager enhancements

      • you can now supply stylis plugins like stylis-plugin-rtl; <StyleSheetManager stylisPlugins={[]}>...</StyleSheetManager>
      • disableVendorPrefixes removes autoprefixing if you don't need legacy browser support; <StyleSheetManager disableVendorPrefixes>...</StyleSheetManager>
      • disableCSSOMInjection forces using the slower injection mode if other integrations in your runtime environment can't parse CSSOM-injected styles; <StyleSheetManager disableCSSOMInjection>...</StyleSheetManager>
    • Remove deprecated attrs "subfunction" syntax variant

      styled.div.attrs({ color: p => p.color });
    

    should become

      styled.div.attrs(p => ({ color: p.color }));
    

    You can still pass objects to attrs but individual properties shouldn't have functions that receive props anymore.

    • 🛠 Fix attrs not taking precedence over props when overriding a given prop

    • 🚀 (ReactNative) upgrade css-to-react-native to v3 (changelog)

      • Removed support for unitless line height in font shorthand
    • 💅 Replace merge-anything with mixin-deep to save some bytes (this is what handles merging of defaultProps between folded styled components); this is inlined into since the library is written in IE-incompatible syntax

    • 🛠 Fix certain adblockers messing up styling by purposefully not emitting the substring "ad" (case-insensitive) when generating dynamic class names

    • 🛠 Fix regressed behavior between v3 and v4 where className was not correctly aggregated between folded .attrs invocations

  • v5.0.0-rc.3

    December 30, 2019

    🚀 This should be the last RC before general v5 release in a week or two!

    📦 NOTE: If you've been testing this stylisPlugins functionality with the stylis-rtl plugin, please switch from stylis-rtl to stylis-plugin-rtl.

    • 💅 make useTheme cleaner (#2879) props @sayjeyhi
    • unnecessary flattening and interleave of css without interpolations @vepor
    • 💅 switch back to mainline hoist-non-react-statics (#2934) …
    • 💅 use funding field instead of post install script (#2931) props @koba04
    • 🛠 fix usage of nested stylesheetmanagers in SSR
    • 💅 expose version in API (#2888) props @jamesarmenta
    • 💅 refactor stylis management (#2936)
  • v5.0.0-rc.2

    November 12, 2019

    🚀 Note: we've switched from canary to v5 as the target branch for the new release. It's basically the same, but fixed up so it'll merge cleanly onto master.

    🔄 Changes from rc.1:

    • 🛠 fix a few missed cases where attrs were not preferred over props (d2f4509)
    • ✂ remove the theme usage dev-time check (df36f93); this was done in master already, just forward-porting
    • 💅 aggregate classNames passed via attrs (#2859, 12a9f3c)
    • 💅 replace rehydration from CSSOM with progressive regex (#2872)
  • v5.0.0-rc.1

    October 31, 2019

    Inline mixin-deep so it is transpiled consistently for IE

  • v5.0.0-rc.0

    October 30, 2019

    🚀 We're almost there! After several months of work (thank you beta testers!) this is the first v5 release candidate build.

    Overall v5 changes:

    🐎 Major performance and bundle size improvements over v4, see the announcement blog for more details!

    💅 StyleSheetManager enhancements

    • you can now supply stylis plugins like stylis-rtl; <StyleSheetManager stylisPlugins={[]}>...</StyleSheetManager>
    • disableVendorPrefixes removes autoprefixing if you don't need legacy browser support; <StyleSheetManager disableVendorPrefixes>...</StyleSheetManager>

    - disableCSSOMInjection forces using the slower injection mode if other integrations in your runtime environment can't parse CSSOM-injected styles; <StyleSheetManager disableCSSOMInjection>...</StyleSheetManager>

    ✂ Removed the "subfunction" attrs syntax that was deprecated in v4

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

    becomes

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

    🔄 Changes since the last beta:

    💅 disallow /ad/i in generated class names (#2837); this change primarily helps to avoid some overly aggressive ad blockers that will mangle generated classnames containing the substring "ad"

    💅 Update css-to-react-native to v3.0.0 (#2811); the one breaking change noted is that unitless line height is no longer allowed when setting font properties

    💅 replace merge-anything with mixin-deep (#2838); saving bytes, this is used when merging defaultProps for extended styled components

    💅 shard createGlobalStyle by runtime instance (#2824); cGS is implemented such that it's really meant to be used as a singleton, but it's not uncommon for people to have multiple instances of the same cGS component on the page at once. This change ensures that as instances and mounted and removed the existing global styles don't get removed as well

    📝 memoize theme (#2820); a minor performance tweak when ThemeProvider is given a reference-equal theme prop

    💅 make ThemeProvider error straightforward (#2787); more obvious messaging that the theme prop is required when using ThemeProvider

  • v5.0.0-beta.9

    September 22, 2019
    • 💅 attrs should take precedence over props (#2737)
    • 💅 Use ownerDocument instead of global document (#2726) props @yamachig
    • 💅 show the multi instance warning for all envs (#2663)
    • 💅 Get rid of the ThemeProvider single child context restriction (#2708) props @vkrol
    • 💅 Update error message with clickable link. (#2702) props @unixchad
    • 📝 memoize createGlobalStyle for performance
  • v5.0.0-beta.8

    July 01, 2019

    ➕ add lightweight dev warning when theme is consumed but not provided (#2655)

    🛠 fix component selectors + css prop usage (#2656)

    🏗 > 5.0.0-beta.7 was unpublished due to a build error

  • v5.0.0-beta.7

    July 01, 2019
  • v5.0.0-beta.6

    June 27, 2019

    ✂ remove the concept of foldedComponentIds (#2652); fixes an issue where if a folded component itself is used later in the component tree than the folding result it could lead to specificity clashes

    💅 bump too many classes warning back up to 200 (7af8e12)

    💅 revise & simplify how we determine the theme, fix createGlobalStyle HMR and behavior around defaultProps.theme (#2647)