Releases
Updating styled components is usually as simple as npm update styled-components. Only major versions have the potential to introduce breaking changes (noted in the following release notes).
styled-components@6.3.12
Patch Changes
- db4f940: Fix test performance regression in 6.3.x by eliminating double style rendering in
createGlobalStyleand removing unnecessary DOM queries during cleanup in client/test environments. - 1203f80: Fix React Native crash caused by
documentreferences in the native build. The native bundle no longer includes DOM code, resolving compatibility with RN 0.79+ and Hermes. - 5ef3804: Gracefully handle CSS syntax errors in React Native instead of crashing. Missing semicolons and other syntax issues now log a warning in development and produce an empty style object instead of throwing a fatal error.
- a777f5a: Preserve explicitly passed
undefinedprops instead of stripping them. This fixes compatibility with libraries like MUI and Radix UI that passundefinedto reset inherited defaults (e.g.,role={undefined}). Props set toundefinedvia.attrs()are still stripped as before.
styled-components@6.3.11
styled-components@6.3.10
Patch Changes
f674224: fix: RSC style tags for extended components have correct href and include base CSS (#5663)
- Fix spaces in
<style href>attribute that caused React 19 hydration failures when usingstyled()inheritance - Fix missing base component CSS in RSC output when only the extended component renders
- Emit a separate
<style>tag per inheritance level with content-aware hrefs, enabling React 19 deduplication of shared base styles - Preserve correct CSS ordering (base before extended) for proper specificity override behavior
- Fix spaces in
f674224: Reduce standalone/browser bundle size by making IS_RSC a build-time constant, enabling dead code elimination of RSC-specific branches
styled-components@6.3.9
Patch Changes
- ca61aca: Fix CSS block comments containing
//(e.g. URLs) causing subsequent styles to not be applied. - a2cd792: Fix
createGlobalStylestyles not being removed when unmounted in RSC environments. React 19'sprecedenceattribute on style tags makes them persist as permanent resources; global styles now render withoutprecedenceso they follow normal component lifecycle. - dbe0aae: In RSC environments,
themeis nowundefinedinstead of{}for styled components, matching the existing behavior ofwithThemeandcreateGlobalStyle. This ensures accessing theme properties without a ThemeProvider correctly throws rather than silently returningundefined. - 1888c73: Fix
withThemeHOC types: ref now correctly resolves to the component instance type instead of the constructor, andthemeis properly optional in the wrapped component's props. - f84f3fa: Fix SSR styles hydration and global style cleanup in Shadow DOM
- 43a5b4b: Optimize internal style processing hot paths: cached GroupedTag index lookups, string fast path in flatten, direct string concatenation in dynamic style generation, pre-built stylis middleware chain with lazy RegExp creation, single-lookup Map operations, VirtualTag append fast-path, and manual string concat in SSR output.
- 788e8c0: Revert
exportsfield and restore browser/server build split withbrowserfield in package.json. Fixesrequire('stream')resolution errors in browser bundlers like webpack 5.
styled-components@6.3.8
styled-components@6.3.7
Patch Changes
51ffa9c: Fix createGlobalStyle compatibility with React StrictMode and RSC
This fix addresses issues where global styles would disappear or behave incorrectly in React StrictMode and RSC:
Static styles optimization: Static global styles (without props/interpolations) are now only injected once and won't be removed/re-added on every render. This prevents the style flickering that could occur during concurrent rendering.
StrictMode-aware cleanup: Style cleanup now uses
queueMicrotaskto coordinate with React's effect lifecycle. In StrictMode's simulated unmount/remount cycle, styles are preserved. On real unmount, styles are properly removed.RSC compatibility: Move
useRefinside RSC guard increateGlobalStyleand unify alluseContextcalls to use consistent!IS_RSC ?pattern.RSC inline style tag cleanup: Fix bug where server-defined
createGlobalStylerendered in client components would leave behind accumulated SSR-rendered inline<style data-styled-global>tags. The cleanup effect now removes these hoisted style tags when the component unmounts or re-renders with different CSS.
These changes ensure
createGlobalStyleworks correctly with:- React StrictMode's double-render behavior
- React 18/19's concurrent rendering features
- React 19's style hoisting with the
precedenceattribute - React Server Components (server-defined GlobalStyles in client components)
51ffa9c: Restore
styled.br.1f794b7: Add package.json "exports" field for better native ESM integration.
styled-components@6.3.6
Patch Changes
- 189bc17: Fix url() CSS function values being incorrectly stripped when using unquoted URLs containing
//(e.g.,url(https://example.com)). The//in protocol URLs likehttps://,http://,file://, and protocol-relative URLs was incorrectly being treated as a JavaScript-style line comment.
styled-components@6.3.5
Patch Changes
7ff7002: Fix: Line comments (
//) in multiline CSS declarations no longer cause parsing errors (fixes #5613)JS-style line comments (
//) placed after multiline declarations likecalc()were not being properly stripped, causing CSS parsing issues. Comments are now correctly removed anywhere in the CSS while preserving valid syntax.Example that now works:
const Box = styled.div` max-height: calc(100px + 200px + 300px); // This comment no longer breaks parsing background-color: green; `;
7ff7002: Fix: Contain invalid CSS syntax to just the affected line
In styled-components v6, invalid CSS syntax (like unbalanced braces) could cause all subsequent styles to be ignored. This fix ensures that malformed CSS only affects the specific declaration, not subsequent valid styles.
Example that now works:
const Circle = styled.div` width: 100px; line-height: ${() => '14px}'}; // βοΈ This malformed line is dropped background-color: green; // β Now preserved (was ignored in v6) `;
styled-components@6.3.4
Patch Changes
- 8e8c282: Fixed
createGlobalStyleto not useuseLayoutEffecton the server, which was causing a warning and broken styles in v6.3.x. The checktypeof React.useLayoutEffect === 'function'is not reliable for detecting server vs client environments in React 18+, so we now use the__SERVER__build constant instead.
styled-components@6.3.3
Patch Changes
6e4d1e7: fix: suppress false "created dynamically" warnings in React Server Components
The dynamic creation warning check now properly detects RSC environments and skips validation when
IS_RSCis true. This eliminates false warnings for module-level styled components in server components, which were incorrectly flagged due to RSC's different module evaluation context. Module-level styled components in RSC files no longer trigger warnings since they cannot be created inside render functions by definition.
styled-components@6.3.2
Patch Changes
a4b4a6b: fix: include TypeScript declaration files in npm package
Fixed Rollup TypeScript plugin configuration to override tsconfig.json's noEmit setting, ensuring TypeScript declaration files are generated during build.
a4b4a6b: fix: resolve TypeScript error blocking type declaration emission
Fixed TypeScript error in StyledComponent when merging style attributes from attrs. Added explicit type cast to React.CSSProperties to safely merge CSS property objects. This error was preventing TypeScript declaration files from being generated during build.
styled-components@6.3.1
styled-components@6.3.0
Minor Changes
28fd502: Add React Server Components (RSC) support
styled-components now automatically detects RSC environments and handles CSS delivery appropriately:
- No
'use client'directive required: Components work in RSC without any wrapper or directive - Automatic CSS injection: In RSC mode, styled components emit inline
<style>tags that React 19 automatically hoists and deduplicates - Zero configuration: Works out of the box with Next.js App Router and other RSC-enabled frameworks
- Backward compatible: Existing SSR patterns with
ServerStyleSheetcontinue to work unchanged
RSC best practices:
- Prefer static styles over dynamic interpolations to avoid serialization overhead
- Use data attributes for discrete variants (e.g.,
&[data-size='lg']) - CSS custom properties work perfectly in styled-components, can be set via inline
style, and cascade to children:
const Container = styled.div``; const Button = styled.button` background: var(--color-primary, blue); `; // Variables set on parent cascade to all DOM children <Container style={{ '--color-primary': 'orchid' }}> <Button>Inherits orchid background</Button> </Container>;
- Use build-time CSS variable generation for theming since
ThemeProvideris a no-op in RSC
Technical details:
- RSC detection via
typeof React.createContext === 'undefined' ThemeProviderandStyleSheetManagerbecome no-ops in RSC (children pass-through)- React hooks are conditionally accessed via runtime guards
- CSS is retrieved from the StyleSheet Tag for inline delivery in RSC mode
- No
856cf06: feat: update built-in element aliases to include modern HTML and SVG elements
Added support for modern HTML and SVG elements that were previously missing:
HTML elements:
search- HTML5 search elementslot- Web Components slot elementtemplate- HTML template element
SVG filter elements:
- All
fe*filter primitive elements (feBlend, feColorMatrix, feComponentTransfer, etc.) clipPath,linearGradient,radialGradient- gradient and clipping elementstextPath- SVG text path elementswitch,symbol,use- SVG structural elements
This ensures styled-components has comprehensive coverage of all styleable HTML and SVG elements supported by modern browsers and React.
Patch Changes
418adbe: fix(types): add CSS custom properties (variables) support to style prop
CSS custom properties (CSS variables like
--primary-color) are now fully supported in TypeScript without errors:.attrs({ style: { '--var': 'value' } })- CSS variables in attrs<Component style={{ '--var': 'value' }} />- CSS variables in component props- Mixed usage with regular CSS properties works seamlessly
aef2ad6: Update shared css property handling tools to latest versions.
styled-components@6.2.0
Minor Changes
- e7c8055: Experimental support for React 18+ renderToPipeableStream.
Patch Changes
d0b73ac: Fix no longer existing link in console debug message
8a9c21b: Upgrade stylis to 4.3.6. Related commits
a21089e: Update internal React types to ^18
c3a5990: Update csstype dependency from 3.1.3 to 3.2.3
This updates the pinned csstype dependency from 3.1.3 to 3.2.3 to fix a type incompatibility with @types/react.
styled-components@6.1.19
styled-components@6.1.18
styled-components@6.1.17
styled-components@6.1.16
styled-components@6.1.15
styled-components@6.1.14
v6.1.13
What's Changed
- Replace deprecated global JSX namespace by @Janpot in https://github.com/styled-components/styled-components/pull/4333
- Allow Passing Shadow Root as Sheet Target by @joealden in https://github.com/styled-components/styled-components/pull/4309
New Contributors
- @Janpot made their first contribution in https://github.com/styled-components/styled-components/pull/4333
- @joealden made their first contribution in https://github.com/styled-components/styled-components/pull/4309
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.12...v6.1.13
v6.1.12
What's Changed
- Export rehydrate from StyleSheet by @hamidrezahanafi in https://github.com/styled-components/styled-components/pull/4328
- Prevent ServerStyleSheet generating empty style tags/elements by @hamidrezahanafi in https://github.com/styled-components/styled-components/pull/4327
New Contributors
- @hamidrezahanafi made their first contribution in https://github.com/styled-components/styled-components/pull/4328
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.11...v6.1.12
v6.1.11
What's Changed
- feat(types): add types to support third-party wrapping scenarios by @quantizor in https://github.com/styled-components/styled-components/pull/4307
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.10...v6.1.11
v6.1.10
What's Changed
- Update dependencies by @quantizor in https://github.com/styled-components/styled-components/pull/4297
- Export IStyledComponentBase interface by @akkadaya in https://github.com/styled-components/styled-components/pull/4300
- revert type changes introduced in https://github.com/styled-components/styled-components/pull/4288 due to a large number of bug reports
New Contributors
- @akkadaya made their first contribution in https://github.com/styled-components/styled-components/pull/4300
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.9...v6.1.10
v6.1.9
What's Changed
- fix: improve types for .attrs() by @uhyo in https://github.com/styled-components/styled-components/pull/4288
- fix(types): allow using a styled component as a key inside object styles in the web runtime by @iiroj in https://github.com/styled-components/styled-components/pull/4249
- Upgrading babel dependencies to latest to fix CVE-2023-45133 by @JesseObrien in https://github.com/styled-components/styled-components/pull/4214
New Contributors
- @uhyo made their first contribution in https://github.com/styled-components/styled-components/pull/4288
- @iiroj made their first contribution in https://github.com/styled-components/styled-components/pull/4249
- @JesseObrien made their first contribution in https://github.com/styled-components/styled-components/pull/4214
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.8...v6.1.9
v6.1.8
Revert adding peerDependencies from v6.1.7; apparently some package managers have differing behaviors around peerDependenciesMeta[package].optional which is causing issues. Will revisit at a later date if possible.
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.7...v6.1.8
v6.1.7
What's Changed
chore: add all missing peer dependency statements by @quantizor in https://github.com/styled-components/styled-components/pull/4243
NOTE: this change may cause some installed dependency duplication until this NPM bug is addressed but yarn and pnpm have correct behavior. Bun also has a similar bug.
Overall these changes ensure that styled-components is specifying a known working version of all utilized libraries, while instructing the client package manager that higher semver-compliant versions are permissible and should work, assuming the relevant libraries are compliant in practice.
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.6...v6.1.7
v6.1.6
What's Changed
- fix: bump stylis to 4.3.1 to resolve issue with leaking nested selectors by @quantizor in https://github.com/styled-components/styled-components/pull/4245
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.5...v6.1.6
v6.1.5
What's Changed
- fix: further constrain self-referencing to match v5 behavior by @quantizor in https://github.com/styled-components/styled-components/pull/4244
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.4...v6.1.5
v6.1.4
What's Changed
- fix: allow using
attrsto provide a customthemeprop to child components by @quantizor in https://github.com/styled-components/styled-components/pull/4242
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.3...v6.1.4
v6.1.3
What's Changed
- fix(types): missing type declarations by @benjaminrae in https://github.com/styled-components/styled-components/pull/4237
- fix(deps): pin dependencies to exact versions prior to bun migration by @quantizor in https://github.com/styled-components/styled-components/pull/4238
- fix(types): nested styled with additional prop types by @justinbhopper in https://github.com/styled-components/styled-components/pull/4236
New Contributors
- @benjaminrae made their first contribution in https://github.com/styled-components/styled-components/pull/4237
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.2...v6.1.3
v6.1.2
What's Changed
- fix(types): StyledObject type to allow nested selectors by @maximebiloe in https://github.com/styled-components/styled-components/pull/4212
- feat(types): expose FastOmit to improve emit performance by @justinbhopper in https://github.com/styled-components/styled-components/pull/4230
New Contributors
- @maximebiloe made their first contribution in https://github.com/styled-components/styled-components/pull/4212
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.1...v6.1.2
v6.1.1
What's Changed
- fix(types): remove duplicated type by @takurinton in https://github.com/styled-components/styled-components/pull/4200
- fix(native): image unsupported border color style by @nazmeln in https://github.com/styled-components/styled-components/pull/4195
- fix(styled): add displayName in all environments by @delijah in https://github.com/styled-components/styled-components/pull/4208
- fix(ssr): correctly place new rules after hydrated rules by @probablyup in https://github.com/styled-components/styled-components/pull/4210
New Contributors
- @nazmeln made their first contribution in https://github.com/styled-components/styled-components/pull/4195
- @delijah made their first contribution in https://github.com/styled-components/styled-components/pull/4208
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.1.0...v6.1.1
v6.1.0
What's Changed
- fix(native): bump postcss version from 8.4.23 to 8.4.31 by @davidlacasse in https://github.com/styled-components/styled-components/pull/4188
- fix(native): solve ts warning by @krudos in https://github.com/styled-components/styled-components/pull/4190
- chore: remove babel macro due to lack of usage by @probablyup in https://github.com/styled-components/styled-components/pull/4193
New Contributors
- @davidlacasse made their first contribution in https://github.com/styled-components/styled-components/pull/4188
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.9...v6.1.0
v6.0.9
fix bundling to not hardcode window (should fix some testing use cases that were incorrectly assuming a server environment when JSDOM and similar are in use)
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.8...v6.0.9
v6.0.8
What's Changed
- feat(native): add
toStyleSheetfunction by @krudos in https://github.com/styled-components/styled-components/pull/4124 - fix: prevent
StyleSheetManagerupdating context on every render by @keeganstreet in https://github.com/styled-components/styled-components/pull/4159 - fix(types): ensure typing for static properties defined on third-party components wrapped by styled-components by @MartinPELCAT in https://github.com/styled-components/styled-components/pull/4141
- fix: production mode inconsistent CSS rendering when dynamic property values are the same but property names are different by @bcole808 in https://github.com/styled-components/styled-components/pull/4132
- fix(types): decrease type complexity by moving off of
JSX.IntrinsicElementsfor the supported element list by @RJWadley in https://github.com/styled-components/styled-components/pull/4149 - fix(types): adopt ref typing from forwardedAs by @probablyup in https://github.com/styled-components/styled-components/pull/4163
- chore: update typescript reference on issue template by @chilled-capybara in https://github.com/styled-components/styled-components/pull/4150
- chore(types): add type exports for
StyleFunction,Interpolationby @bcole808 in https://github.com/styled-components/styled-components/pull/4140 - chore: updated Contributing guide benchmark instructions by @bcole808 in https://github.com/styled-components/styled-components/pull/4137
- chore(types): add missing types
CSSProperties,CSSObject,CSSPseudosandCSSKeyframesby @takurinton in https://github.com/styled-components/styled-components/pull/4117
New Contributors
- @takurinton made their first contribution in https://github.com/styled-components/styled-components/pull/4117
- @krudos made their first contribution in https://github.com/styled-components/styled-components/pull/4124
- @chilled-capybara made their first contribution in https://github.com/styled-components/styled-components/pull/4150
- @MartinPELCAT made their first contribution in https://github.com/styled-components/styled-components/pull/4141
- @RJWadley made their first contribution in https://github.com/styled-components/styled-components/pull/4149
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.7...v6.0.8
v6.0.7
What's Changed
- refactor(types): enable
exactOptionalPropertyTypescheck by @aspirisen in https://github.com/styled-components/styled-components/pull/3993 - fix(types): allow number for height/width/etc (#4090) by @drewbrend in https://github.com/styled-components/styled-components/pull/4111
New Contributors
- @aspirisen made their first contribution in https://github.com/styled-components/styled-components/pull/3993
- @drewbrend made their first contribution in https://github.com/styled-components/styled-components/pull/4111
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.6...v6.0.7
v6.0.6
What's Changed
- fix(types): issues with StyleFunctions and StyledObjects by @bcole808 in https://github.com/styled-components/styled-components/pull/4107
New Contributors
- @bcole808 made their first contribution in https://github.com/styled-components/styled-components/pull/4107
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.5...v6.0.6
v6.0.5
What's Changed
- Fix createGlobalStyle not removing styles on unmount by @mdeschamps in https://github.com/styled-components/styled-components/pull/4101
New Contributors
- @mdeschamps made their first contribution in https://github.com/styled-components/styled-components/pull/4101
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.4...v6.0.5
v6.0.4
What's Changed
- refactor: dev warning on unknown props retargeted specifically toward HTML targets rather than other React components by @woodreamz in https://github.com/styled-components/styled-components/pull/4084
- fix: untyped event handler callbacks by @ziolekjj in https://github.com/styled-components/styled-components/pull/4086
New Contributors
- @woodreamz made their first contribution in https://github.com/styled-components/styled-components/pull/4084
- @ziolekjj made their first contribution in https://github.com/styled-components/styled-components/pull/4086
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.3...v6.0.4
v6.0.3
What's Changed
- fix: StyleSheetManager missing Stylis types by @MattIPv4 in https://github.com/styled-components/styled-components/pull/4078
New Contributors
- @MattIPv4 made their first contribution in https://github.com/styled-components/styled-components/pull/4078
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.2...v6.0.3
v6.0.2
What's Changed
- fix: StyleSheetManager must accept undefined props by @gineika in https://github.com/styled-components/styled-components/pull/4069
- fix: replace slow Omit type by @gineika in https://github.com/styled-components/styled-components/pull/4068
- drop
displayNamein production to save bytes, it's already present in the static className if you're using the babel plugin or equivalent - refactor use of
flatMapandatwith ES5-compliant variants
New Contributors
- @gineika made their first contribution in https://github.com/styled-components/styled-components/pull/4069
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.1...v6.0.2
v6.0.1
Fixed an issue where a dev-time warning was being triggered too eagerly.
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.0...v6.0.1
v6.0.0
yarn add styled-componentsChanged in this version
- fix(types): prevent prop bleed on styling properties (fixes #4053, c0f8015af64367938ff9d9debf90fb8005459c6c)
- feat(types): ship csstype via "CSS" namespace (e6c4f0a6b1a1c483cf0c433f0d0434bbda124d2c)
- chore: bump stylis to 4.3 (fixes #4007, fa58875dcbdbff43532c3b9519eb5fc7d009830d)
- reduced some sources of unnecessary branching logic
Breaking changes in v6
Migration guide β https://styled-components.com/docs/faqs#what-do-i-need-to-do-to-migrate-to-v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML StyleSheetManager- replaced
disableVendorPrefixeswithenableVendorPrefixesprop - dropped automatic vendor prefixing; if you need to support older browsers, you can re-enable it easily with the above prop
<StyleSheetManager enableVendorPrefixes> {/* your React tree and ThemeProvider goes here */} </StyleSheetManager>
- replaced
- dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: https://github.com/styled-components/styled-components/compare/v5.3.7...v6.0.0
v6.0.0-rc.6
yarn add styled-componentsChanged in this version
- fix: stylis types are now included as a direct dependency #4051 (235a62b8d2f2ad42319df380f83a7e033b177db1)
- refactor: simplify code related to style tag injection #4040 (c3939a4aa8a98ba1ed38a3ea024470f2395439a5)
- chore: don't warn if shouldForwardProp is in use and the prop is forwarded (https://github.com/styled-components/styled-components/commit/00ab9c41494fca04ae473e1053bac8f42f4220b5)
Breaking changes in v6
Migration guide β https://styled-components.com/docs/faqs#what-do-i-need-to-do-to-migrate-to-v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML StyleSheetManager- replaced
disableVendorPrefixeswithenableVendorPrefixesprop - dropped automatic vendor prefixing; if you need to support older browsers, you can re-enable it easily with the above prop
<StyleSheetManager enableVendorPrefixes> {/* your React tree and ThemeProvider goes here */} </StyleSheetManager>
- replaced
- dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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-componentsChanged in this version
- Compatibility with frozen Object prototype, part 2 by @jportner in https://github.com/styled-components/styled-components/pull/4042
- ensure useTheme hook returns theme object by @nksfrank in https://github.com/styled-components/styled-components/pull/4033
- revert rc.3 type changes, investigate alternate fixes by @probablyup in https://github.com/styled-components/styled-components/pull/4037
- finalize rc.4 inclusions by @probablyup in https://github.com/styled-components/styled-components/pull/4047
- object styles now have strong typing
- add dev-time warning if
enableVendorPrefixesneeds to be enabled based on prop usage
New Contributors
- @nksfrank made their first contribution in https://github.com/styled-components/styled-components/pull/4033
Breaking changes in v6
Migration guide β https://styled-components.com/docs/faqs#what-do-i-need-to-do-to-migrate-to-v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML StyleSheetManager- replaced
disableVendorPrefixeswithenableVendorPrefixesprop - dropped automatic vendor prefixing; if you need to support older browsers, you can re-enable it easily with the above prop
<StyleSheetManager enableVendorPrefixes> {/* your React tree and ThemeProvider goes here */} </StyleSheetManager>
- replaced
- dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.0-rc.3..v6.0.0-rc.5
v6.0.0-rc.3
- fix(types): several regression fixes and improved CSSProp typing by @justinbhopper, @aliceHendicott, @probablyup in https://github.com/styled-components/styled-components/pull/4028
- fix(stylis): ensure rules are split coming out of stylis by @probablyup in https://github.com/styled-components/styled-components/pull/4021 (this is a partial fix for #4007, the remainder requires https://github.com/thysultan/stylis/pull/315)
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.0-rc.2...v6.0.0-rc.3
v5.3.11
Removed use of the useDebugValue hook to rectify older React support.
Full Changelog: https://github.com/styled-components/styled-components/compare/v5.3.10...v5.3.11
v6.0.0-rc.2
yarn add styled-componentsChanged in this version
- fix(types): perf issue with large union types by @justinbhopper in https://github.com/styled-components/styled-components/pull/4011
- fix(types): resolve deficiencies in the attr typings, and many other type improvements by @justinbhopper, @aliceHendicott, @probablyup in https://github.com/styled-components/styled-components/pull/4014
New Contributors
- @justinbhopper made their first contribution in https://github.com/styled-components/styled-components/pull/4011
Upcoming
- v6 migration documentation
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML StyleSheetManager- replaced
disableVendorPrefixeswithenableVendorPrefixesprop - dropped automatic vendor prefixing; if you need to support older browsers, you can re-enable it easily with the above prop
<StyleSheetManager enableVendorPrefixes> {/* your React tree and ThemeProvider goes here */} </StyleSheetManager>
- replaced
- dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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-componentsChanged in this version
- bump stylis to 4.2.0 to enable
@layerrule support
Upcoming
- v6 migration documentation
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML StyleSheetManager- replaced
disableVendorPrefixeswithenableVendorPrefixesprop - dropped automatic vendor prefixing; if you need to support older browsers, you can re-enable it easily with the above prop
<StyleSheetManager enableVendorPrefixes> {/* your React tree and ThemeProvider goes here */} </StyleSheetManager>
- replaced
- dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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@betaChanged in this version
- fix: correct dep declaration for styled-components by @PeachScript in https://github.com/styled-components/styled-components/pull/3995
- fix scenario where stylis failed to process some self references in CSS (6cee6c24f7e8dd4f0ada724fcea397d03e778ea2)
Upcoming
@layerrule support (https://github.com/thysultan/stylis/pull/313)- v6 migration documentation
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML StyleSheetManager- replaced
disableVendorPrefixeswithenableVendorPrefixesprop - dropped automatic vendor prefixing; if you need to support older browsers, you can re-enable it easily with the above prop
<StyleSheetManager enableVendorPrefixes> {/* your React tree and ThemeProvider goes here */} </StyleSheetManager>
- replaced
- dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
New Contributors (thank you!)
- @PeachScript made their first contribution in https://github.com/styled-components/styled-components/pull/3995
Full Changelog: 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@betaChanged in this version
- Fixes an issue where keyframes are declared inside a namespaced StyleSheetManager by @marmite22 in https://github.com/styled-components/styled-components/pull/3977
- chore: remove --clipboard option in envinfo by @ImBIOS in https://github.com/styled-components/styled-components/pull/3972
- Fix
cssprop typings by @ahutchings in https://github.com/styled-components/styled-components/pull/3982 - Remove duplicated test by @ahutchings in https://github.com/styled-components/styled-components/pull/3984
- fix: Do not add px to CSS variables (main branch) by @Lazyuki in https://github.com/styled-components/styled-components/pull/3987
- several typing fixes by @probablyup in https://github.com/styled-components/styled-components/pull/3991
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML StyleSheetManager- replaced
disableVendorPrefixeswithenableVendorPrefixesprop - dropped automatic vendor prefixing; if you need to support older browsers, you can re-enable it easily with the above prop
<StyleSheetManager enableVendorPrefixes> {/* your React tree and ThemeProvider goes here */} </StyleSheetManager>
- replaced
- dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
New Contributors (thank you!)
- @ImBIOS made their first contribution in https://github.com/styled-components/styled-components/pull/3972
- @ahutchings made their first contribution in https://github.com/styled-components/styled-components/pull/3982
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.14...v6.0.0-beta.15
v5.3.10
What's Changed
- fix: Do not add px to unitless CSS variables by @Lazyuki in https://github.com/styled-components/styled-components/pull/3975
Full Changelog: https://github.com/styled-components/styled-components/compare/v5.3.9...v5.3.10
v6.0.0-beta.14
yarn add styled-components@betaChanged in this version
- breaking refactor(stylis): disable vendor prefixing by default by @probablyup in https://github.com/styled-components/styled-components/commit/2b4f6cbd29441f1dc5ab91e26da688157e6809eb
- Fix determineTheme & add typing by @benbryant0 in https://github.com/styled-components/styled-components/pull/3966
- Optimization of hot paths by @benbryant0 in https://github.com/styled-components/styled-components/pull/3970
- refactor: adjust className application order by @probablyup in https://github.com/styled-components/styled-components/commit/1e3ffeb98df0c31a82aead9c0b2992cdc9606ea2
- misc code optimizations
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML StyleSheetManager- replaced
disableVendorPrefixeswithenableVendorPrefixesprop - dropped automatic vendor prefixing; if you need to support older browsers, you can re-enable it easily with the above prop
<StyleSheetManager enableVendorPrefixes> {/* your React tree and ThemeProvider goes here */} </StyleSheetManager>
- replaced
- dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
New Contributors (thank you!)
- @benbryant0 made their first contribution in https://github.com/styled-components/styled-components/pull/3966
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.13...v6.0.0-beta.14
v5.3.9
What's Changed
- [v5] Make styled components work when the Object prototype is frozen by @jportner in https://github.com/styled-components/styled-components/pull/3964
Full Changelog: https://github.com/styled-components/styled-components/compare/v5.3.8...v5.3.9
v6.0.0-beta.13
yarn add styled-components@betaChanged in this version
- Remove "exports" entries by @SilviaPag95 in https://github.com/styled-components/styled-components/pull/3961
- Make styled components work when the Object prototype is frozen by @jportner in https://github.com/styled-components/styled-components/pull/3963
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
New Contributors (thank you!)
- @SilviaPag95 made their first contribution in https://github.com/styled-components/styled-components/pull/3961
- @jportner made their first contribution in https://github.com/styled-components/styled-components/pull/3963
Full Changelog: 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@betaChanged in this version
- fix(types): restore exotic component prop passing (f678107f420ecf5454aa6326bd6819d83a61c09d); this restores
React.ComponentProps<typeof MyStyledComponent>support - add "exports" config in package.json
- minor dependency updates
- thank you @marmite22 for updating a test that was not getting properly run
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.11...v6.0.0-beta.12
v5.3.8
What's Changed
fix(constants): rework process env guard
Full Changelog: https://github.com/styled-components/styled-components/compare/v5.3.7-fixed...v5.3.8
v5.3.7
fix: (React Native) passing testID as attrs property by @ku8ar (see #3857)
fix: prevent crash when process.env is not defined by Suhas R (see #3957)
Add support for the
translateattribute as a valid prop by @ay4toh5i (see #3619)remove Ukraine message; it's now out of date and the message has been received
v6.0.0-beta.11
yarn add styled-components@betaChanged in this version
- fix: invert StyleFunction prop handling by @probablyup in https://github.com/styled-components/styled-components/pull/3941 (fixes
props.themein interpolations when usingattrs
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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@betaChanged in this version
- fix: interpolation functions returning null should not console.error by @charltoons in https://github.com/styled-components/styled-components/pull/3925
- fix: prevent crash when process.env is not defined by @eMerzh in https://github.com/styled-components/styled-components/pull/3907
- Fixes issue when using an ampersand (&) to scope css to a parent selector alongside the new namespace feature by @marmite22 in https://github.com/styled-components/styled-components/pull/3908
- feat(StyleSheetManager): add ability to provide default shouldForwardProp by @probablyup in https://github.com/styled-components/styled-components/pull/3930
- refactor: type adjustments by @probablyup in https://github.com/styled-components/styled-components/pull/3931
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
New Contributors
- @charltoons made their first contribution in https://github.com/styled-components/styled-components/pull/3925
- @eMerzh made their first contribution in https://github.com/styled-components/styled-components/pull/3907
- @marmite22 made their first contribution in https://github.com/styled-components/styled-components/pull/3908
Full Changelog: 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@betaWhat's Changed
- fix: add
<use>to domElements by @shanpriyan in https://github.com/styled-components/styled-components/pull/3901 - refactor(typings): revise to support more attrs patterns by @probablyup in https://github.com/styled-components/styled-components/pull/3906
New Contributors
- @shanpriyan made their first contribution in https://github.com/styled-components/styled-components/pull/3901
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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@betaWhat's Changed
- revert rollup upgrade to resolve issues with cjs<>es default import interop
- refactor(ThemeProvider): allow multiple children (https://github.com/styled-components/styled-components/commit/871435c81c09c5da46f046f8baada1d6176e75c8)
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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@betaWhat's Changed
- feat(StyleSheetManager): add optional namespacing (#3881); replaces functionality in the babel plugin to be performed at runtime
- breaking refactor: remove deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - feat: add styled as named export as well (5aed9e3f84cd52fa053693d5b66dc5a0f0c82ee9); note that this syntax will probably not work with the babel plugin until it is updated
- chore: dependency maintenance, including rollup upgrades
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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@betaWhat's Changed
- Bump stylis to version 4.1.3 by @lunaris in https://github.com/styled-components/styled-components/pull/3860 (adds
@containerCSS support) - Fix various type issues
Breaking changes in v6 (as of this version)
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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@betaWhat's Changed
- chore: remove extraneous lockfile by @alexandernanberg in https://github.com/styled-components/styled-components/pull/3848
- fix(types): react-native should not receive base web attributes by @probablyup in https://github.com/styled-components/styled-components/pull/3849
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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@betaWhat's Changed
- v6/beta 3 typescript fixes by @agriffis in https://github.com/styled-components/styled-components/pull/3828
- fix: don't send undefined props to DOM by @agriffis in https://github.com/styled-components/styled-components/pull/3839
- refactor(types): satisfy attrs scenarios with updated types, fix strict "as" type resolution by @probablyup in https://github.com/styled-components/styled-components/pull/3844
- test: kill disused validAttr test by @agriffis in https://github.com/styled-components/styled-components/pull/3840
- chore: add node 18 to test matrix by @alexandernanberg in https://github.com/styled-components/styled-components/pull/3837
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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@betaWhat's Changed
- fix(types): allow interpolating false by @agriffis in https://github.com/styled-components/styled-components/pull/3799
- Disallow mix of $as and as by @agriffis in https://github.com/styled-components/styled-components/pull/3801
- chore: update typescript by @agriffis in https://github.com/styled-components/styled-components/pull/3803
- fix: typescript typo by @agriffis in https://github.com/styled-components/styled-components/pull/3804
- fix: css vars mangled by hyphenateStyleName by @agriffis in https://github.com/styled-components/styled-components/pull/3812
- collected fixes for v6 typescript by @agriffis in https://github.com/styled-components/styled-components/pull/3809
- chore: correctly link local styled-components to sandbox by @alexandernanberg in https://github.com/styled-components/styled-components/pull/3822
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.0-beta.2...v6.0.0-beta.3
v5.3.6
What's Changed
- Fix statement on Ukraine by @Fer0x in https://github.com/styled-components/styled-components/pull/3724
- Fix/nonce in ssr by @samimakicc in https://github.com/styled-components/styled-components/pull/3755
Deprecations
$asand$forwardedAswill be removed in the next major version, use the unprefixed props instead
New Contributors
- @samimakicc made their first contribution in https://github.com/styled-components/styled-components/pull/3755
Full Changelog: https://github.com/styled-components/styled-components/compare/v5.3.5...v5.3.6
v6.0.0 beta 2
yarn add styled-components@betaWhat's Changed
- breaking removed runtime prop validation functionality; use transient props for styling-only props or
shouldForwardPropfor more advanced scenarios - only minify standalone prod build by @henryqdineen in https://github.com/styled-components/styled-components/pull/3796
- refactored component types to use a consolidated setup with a runtime switch (
web | native) in the generic - improve misc types
- smaller code size
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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@betaWhat's Changed
- Fix speedy rule insertion when css contains multiple rules by @janicduplessis in https://github.com/styled-components/styled-components/pull/3787
- performance optimizations
- smaller code size
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
Full Changelog: 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@betaWhat's Changed
- refactor: conditionally use useInsertionEffect where available by @probablyup in https://github.com/styled-components/styled-components/pull/3726
- refactor: replace
git.iowithin error message by @SukkaW in https://github.com/styled-components/styled-components/pull/3733 - fix: minor grammar mistakes in contribution guidelines by @imchell in https://github.com/styled-components/styled-components/pull/3771
- V6/fix newbie012 type regression by @probablyup in https://github.com/styled-components/styled-components/pull/3776
- chore: upgrade jest by @probablyup in https://github.com/styled-components/styled-components/pull/3778
- fixed bug #3793 and #3792 by @jasham in https://github.com/styled-components/styled-components/pull/3794
- updated a few dependencies
- removed react-primitives support
- update react-native component aliases to current stable list
- build size optimization (now 12.98kB)
Breaking changes in v6
- now using
stylisv4 (if usingstylis-plugin-rtlyou'll need to upgrade to the newer version) - styled-components now provides its own types; if you installed
@types/styled-componentsin the past, you'll want to remove it - dropped
$asand$forwardedAsprops (useasorforwardedAs) - dropped automatic prop filtering; use transient props (
$prefix) for stuff you don't want to be passed to child component / HTML - dropped deprecated
withComponentAPI (87f511a228e5b13b1ff70a416409e0705e5bf456); use "as" prop instead - node >= 14 needed
New Contributors
- @SukkaW made their first contribution in https://github.com/styled-components/styled-components/pull/3733
- @imchell made their first contribution in https://github.com/styled-components/styled-components/pull/3771
- @jasham made their first contribution in https://github.com/styled-components/styled-components/pull/3794
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.0-alpha.5...v6.0.0-beta.0
v6.0.0-alpha.5
- Fix types associated with
styled-components/macros - Add optional peer dependency for
babel-plugin-styled-components(required for macros)
Updated sandbox for alpha: https://codesandbox.io/s/styled-components-v6-alpha-sandbox-05bod1?file=/src/App.tsx
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.0-alpha.4...v6.0.0-alpha.5
v6.0.0-alpha.4
- Added type for
CSSProp(this is in definitely typed but wasn't exposed by us) - Exposed more base types
Recommended styled-components.d.ts setup for your project:
// 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; } }
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.0-alpha.2...v6.0.0-alpha.4
v6.0.0-alpha.2
Added "types" package.json fields for TS type acquistion.
Full Changelog: https://github.com/styled-components/styled-components/compare/v6.0.0-alpha.1...v6.0.0-alpha.2
v5.3.5
Add statement of solidarity against the war on Ukraine πΊπ¦v6.0.0-alpha.1
Fixed the TS declarations not getting emitted correctly by rollup.
Full Changelog: https://github.com/styled-components/styled-components/compare/.v6.0.0-alpha.0...v6.0.0-alpha.1
v6.0.0-alpha.0
After an epic amount of refactoring, I'm pleased to announce the first alpha of styled-components v6!
Highlights:
- styled-components is now written in TypeScript and ships its own types
- stylis v4
- tons of bug fixes
- node 14+ now required
Full Changelog: https://github.com/styled-components/styled-components/compare/v5.2.0...v6.0.0-alpha.0
v5.3.3
What's Changed
- Backport #3568 (read from textContent rather than innerHTML during rehydrate) to v5 by @keeganstreet in https://github.com/styled-components/styled-components/pull/3591
- [v5] generate more complete sourcemaps by @henryqdineen in https://github.com/styled-components/styled-components/pull/3597
New Contributors
- @henryqdineen made their first contribution in https://github.com/styled-components/styled-components/pull/3597
Full Changelog: https://github.com/styled-components/styled-components/compare/v5.3.1...v5.3.3
v5.3.1
Fix forced server-side mode not triggering global styles (See #3566)
Fix SSR collisions caused by insufficient hash inputs and reordering of groups on the client, which is a regression in v5.2.0 (See #3563)
Fix dynamic creation React warning for React v18, backported to v5 by @lynndylanhurley (See #3564)
Add missing typeof window check when checking for duplicate instances of styled-components (See #3553)
Prevent ServerStyleSheet from emitting empty style tags, which would cause issues in IE11 (See #3555)
Support css tagged templates inside style objects, by @roginfarrer and @dvingo (See #3469)
v5.3.0
v5.2.3
fix an issue with an unguarded window accessor in a SSR path (see #3446)v5.2.1
Tweak server-side build settings to resolve an issue with jest-dom not being able to pick up generated styles (see #3308) thanks @Lazyukiv5.2.0
Make sure
StyleSheetManagerrenders all styles in iframe / child windows (see #3159) thanks @eramdam!Rework how components self-reference in extension scenarios (see #3236); should fix a bunch of subtle bugs around patterns like
& + &Fix
keyframesnot receiving a modified stylis instance when using something likestylis-plugin-rtl(see #3239)Big performance gain for components using style objects (see #3239)
We no longer emit dynamic classNames for empty rulesets, so some className churn may occur in snapshots
Preallocate global style placement to ensure cGS is consistently inserted at the top of the stylesheet; note that this is done in runtime order so, if you have multiple cGS that have overlapping styles, ensure they're defined in code in the sequence you would want them injected (see #3239)
Add "engines" to package.json (currently set to Node 10, the oldest supported LTS distribution) (see #3201) thanks @MichaelDeBoey!
Finally, special thanks to @willheslam for testing and some last minute fixes on this release!
v5.2.0-test.10
We are planning to release 5.2 on September 2/3, please help us test!
yarn add styled-components@test
Preallocate global style placement to ensure cGS is consistently inserted at the top of the stylesheet; note that this is done in runtime order so, if you have multiple cGS that have overlapping styles, ensure they're defined in code in the sequence you would want them injected (see #3239)
NOTE: This is a behavioral change and might require adjustment in your codebase if you have many
createGlobalStylecomponents in use. We do not think it will affect the majority of projects other than fix existing bugs.createGlobalStyleis nowReact.StrictModecompliantMake sure
StyleSheetManagerrenders all styles in iframe / child windows (see #3159) thanks @eramdam!Rework how components self-reference in extension scenarios (see #3236); should fix a bunch of subtle bugs around patterns like
& + &Fix
keyframesnot receiving a modified stylis instance when using something likestylis-plugin-rtl(see #3239)Big performance gain for components using style objects (see #3239)
We no longer emit dynamic classNames for empty rulesets, so some className churn may occur in snapshots
Add "engines" to package.json (currently set to Node 10, the oldest supported LTS distribution) (see #3201) thanks @MichaelDeBoey!
v5.1.0
New Functionality
Add
shouldForwardPropAPI (almost the same as emotion's, just a slightly different usage pattern); https://github.com/styled-components/styled-components/pull/3006Sometimes when composing multiple higher-order components together, it's possible to get into scenarios when multiple layers consume props by the same name. In the past we've introduced various workarounds for popular props like
"as"but this power-user API allows for more granular customization of what props are passed down to descendant component children when using thestyled()HOC wrapper.When combined with other APIs like
.attrs()this becomes a very powerful constellation of abilities.Here's how you use it:
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>
The second argument
defaultValidatorFnis what we use internally to validate props based on known HTML attributes. It's provided so you can filter exactly what props you don't wish to pass and then fall-back to the default filtering mechanism if desired.Other methods on the
styledHOC like.attrscan be chained afterwithConfig(), and before opening your template literal: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>
Thanks @stevesims and all that contributed!
Add "transient props" API; https://github.com/styled-components/styled-components/pull/3052
Think of transient props as a lightweight, but complementary API to
shouldForwardProp. Because styled-components allows any kind of prop to be used for styling (a trait shared by most CSS-in-JS libraries, but not the third party library ecosystem in general), adding a filter for every possible prop you might use can get cumbersome.Transient props are a new pattern to pass props that are explicitly consumed only by styled components and are not meant to be passed down to deeper component layers. Here's how you use them:
const Comp = styled.div` color: ${props => props.$fg || 'black'}; `; render(<Comp $fg="red">I'm red!</Comp>);
Note the dollar sign (
$) prefix on the prop; this marks it as transient and styled-components knows not to add it to the rendered DOM element or pass it further down the component hierarchy.
Bugfixes
v5.0.1
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
@importinsidecreateGlobalStyleand what to do instead (#2997) - Catching and warning against dynamic creation of styled-components inside other component render paths (#2998)
- Recommending against usage of css
v5.0.0
It's finally here!!! πSee the migrating to v5 FAQ page for easy upgrade instructions!
Read the v5 release announcement!
TL;DR:
- 19% smaller bundle size
- 18% faster client-side mounting
- 17% faster updating of dynamic styles
- 45% faster server-side rendering
- RTL support
...and much more all, with no breaking changes!
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.
Changes
StyleSheetManagerenhancements- you can now supply stylis plugins like stylis-plugin-rtl;
<StyleSheetManager stylisPlugins={[]}>...</StyleSheetManager> disableVendorPrefixesremoves autoprefixing if you don't need legacy browser support;<StyleSheetManager disableVendorPrefixes>...</StyleSheetManager>disableCSSOMInjectionforces using the slower injection mode if other integrations in your runtime environment can't parse CSSOM-injected styles;<StyleSheetManager disableCSSOMInjection>...</StyleSheetManager>
- you can now supply stylis plugins like stylis-plugin-rtl;
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; `
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
- if you get a lot of warnings at dev time from not having units in your styles, this codemod is available to help expedite updates: https://github.com/styled-components/styled-components-native-code-mod thanks @jacobp100
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"
if you use styled-components from CDN, in v5 the "react-is" dependency was added (make sure you add this to your project)
v5.0.0-rc.3
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
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
Changes from rc.0:
- Inline
mixin-deepso it is transpiled consistently for IE
v5.0.0-rc.0
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!
StyleSheetManagerenhancements- you can now supply stylis plugins like stylis-rtl;
<StyleSheetManager stylisPlugins={[]}>...</StyleSheetManager> disableVendorPrefixesremoves autoprefixing if you don't need legacy browser support;<StyleSheetManager disableVendorPrefixes>...</StyleSheetManager>disableCSSOMInjectionforces using the slower injection mode if other integrations in your runtime environment can't parse CSSOM-injected styles;<StyleSheetManager disableCSSOMInjection>...</StyleSheetManager>
- you can now supply stylis plugins like stylis-rtl;
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
- if you get a lot of warnings at dev time from not having units in your styles, this codemod is available to help expedite updates: https://github.com/styled-components/styled-components-native-code-mod thanks @jacobp100
replace merge-anything with mixin-deep (#2838); saving bytes, this is used when merging
defaultPropsfor extended styled componentsshard 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
ThemeProvideris given a reference-equal theme propmake ThemeProvider error straightforward (#2787); more obvious messaging that the
themeprop is required when usingThemeProvider
v4.4.1
Fix
styled-components'sreact-nativeimport for React Native Web, by @fiberjw (see #2797)Remove dev-time warning if referencing a theme prop without an outer
ThemeProvider, the check for it isn't smart enough to handle cases with "or" or ternary fallbacks and creates undesirable noise in various third party integrations
v5.0.0-beta.11
- Revert "Use ownerDocument instead of global document (#2726)" (https://github.com/styled-components/styled-components/pull/2818); unfortunately there was a bug that caused SSR rehydration failures in certain cases
v5.0.0-beta.10
- Fix GroupedTag.insertRules index drifting on failed insertions (#2798)
- Add
useTheme()hook (https://github.com/styled-components/styled-components/pull/2765)
v4.4.0
This is the last minor release before v5, please start using the beta and give us feedback!
This is a minor release not a patch release due to this change: #2738. Apologies if this causes some code churn in your projects, it was a long-standing bug that needed fixing.
Fix to use
ownerDocumentinstead of globaldocument, by @yamachig (see #2721)Backport fix for SSR classname mismatches in development mode for some environments like next.js (see #2701)
Fix attrs not properly taking precedence over props
Backport fix where classnames are composed in the wrong order if custom class names are passed in (see #2760)
Fix add check for style tag detached - sheet in the style tag is null in this case, by @newying61 (see #2707)
v5.0.0-beta.9
- 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
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