components v4 final ๐ โ ๐ styled
Releasing styled-components v4 finalย ๐
After a couple weeks of beta testing styled-components v4 is now officially ready for primetime!
If you didnโt read the styled-components v4 announcement, hereโs a quick primer on whatโs in this release:
- Smaller and much, much faster
- A refreshed
createGlobalStyle
API, replacing the oldinjectGlobal
- Support for the
"as"
prop, a dynamic alternative toย.withComponent
- Removal of
Comp.extend
in favor of unifyingstyled(Comp)
- Full compliance for React v16
- Native support for
ref
on any styled component
Read the announcement post for the full details on these.
Thatโs a lot already, but we havenโt been sleeping since the initial announcement! Hereโs what new in the final release:
- A brand-new Babel macroso you can get all the goodies of the Babel plugin in create-react-app! ๐ฃ
- Fully automatic codemods to auto-magically migrate most of your codebase from to v4 ๐ฉโจ
- A test util for Enzyme so that unit testing your components is easier
- All the bugfixes since the initial beta release (shoutout to all the early testers for their invaluable feedback)
Announcing the styled-components Babel Macroย ๐ฃ
Thanks to our contributor Luc Leray weโve now got a Babel Macro! This means create-react-app users can get all the benefits of the styled-components Babel plugin (most notably, nicer class names) without needing to eject ๐
All you have to do is change your import statements to "styled-components/macro"
and thatโs it:
import styled from "styled-components";
๐๐๐๐๐
import styled from "styled-components/macro";
5 Minute Migration ๐ฉโจ
Weโve worked hard on making this upgrade as easy as possible, so for most of you thereโs only three steps to upgrade your entire codebase to v4:
- Install the latest styled-components version by running
npm install [email protected] [email protected]
- Install the codemods globally with
npm install -g styled-components-codemods
- Run the codemods on your codebase with
styled-components-codemods v4 src/**/*.js
. They will auto-magically move all yourComp.extend
usages tostyled(Comp)
and yourinjectGlobal
usages tocreateGlobalStyle
!
If youโre using TypeScript, youโll also need to upgrade your typings to the new ones from DefinitelyTyped: npm install @types/[email protected]
Note: see the website for more detailed instructions and potential edge cases, and make sure that youโre on React v16.3+, which is required for styled-components v4 due to the new ref system.