Spectrum is now read-only. Learn more about the decision in our official announcement.


Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress!


Announcing support for the css prop! πŸŽ‰

November 26, 2018 at 8:39am

Announcing support for the css prop! πŸŽ‰

November 26, 2018 at 8:39am
Excited to announce that styled-components now has native support for the css prop!
const MyButton = () => (
color: papayawhip;
background: palevioletred;
Click me!
Simply upgrade to the latest Babel plugin version and you're ready to css and roll πŸ’ƒπŸΌ
Let us know what you think! πŸ’œ

November 26, 2018 at 8:40am
This has been a long time coming, hope y'all will enjoy this πŸ’œ
Awesome! 😍

November 26, 2018 at 6:22pm
Good job! It helps a lot for prototyping and adding such a great feature without even increasing runtime code is top notch 😁

November 27, 2018 at 11:50am
Really nice! But I don't totally understand when and when not to use it. Can we replace our current e.g. styled.div const with this as it just converts to the "old" style? It seems to be as powerfull as we need. (prop theme support and media querries?)
Or should we use this just for a quick testing purpose?
Also what does it do if we pass the css prop to a already declared styled component? Will it shallow or deep merge those styles?
Are there any performance issues when using this?
the main use case I have for this is in the early stages of a project when I'm not quite sure where I should draw the boundaries between components, where it makes sense to abstract things or not.
Once I have a better idea and am less "in the fog" about it, I either convert them or start using the standard styled-components API. Does that make sense?
No, there's no performance issues, it will work perfectly fine!
The styles are merged as CSS merges them, the last one wins. These two are equivalent:
const Box = styled.div`
color: blue;
<Box css="color: red;" />
// is the same as
const Box = styled.div`
color: blue;
const StyledBox = styled(Box)`
color: red;
<StyledBox />
In fact, the Babel plugin converts the first on to the second one under the hood, so what you're actually running in the browser is the second one!
Show more messages