NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2881 most downloaded on npm
Fast, expressive styling for React.
Last release 9 days ago
08 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Some releases are documented
notes for 25 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
457 releases · first in 2016
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
db4f940: Fix test performance regression in 6.3.x by eliminating double style rendering in createGlobalStyle and removing unnecessary DOM queries duri
createGlobalStyle and removing unnecessary DOM queries during cleanup in client/test environments.document references in the native build. The native bundle no longer includes DOM code, resolving compatibility with RN 0.79+ and Hermes.undefined props instead of stripping them. This fixes compatibility with libraries like MUI and Radix UI that pass undefined to reset inherited defaults (e.g., role={undefined}). Props set to undefined via .attrs() are still stripped as before.752f5ec: fix: resolve "React is not defined" ReferenceError introduced in 6.3.10 when loading the CJS build in Node.js
f674224: fix: RSC style tags for extended components have correct href and include base CSS
f674224: fix: RSC style tags for extended components have correct href and include base CSS (#5663)
<style href> attribute that caused React 19 hydration failures when using styled() inheritance<style> tag per inheritance level with content-aware hrefs, enabling React 19 deduplication of shared base stylesf674224: Reduce standalone/browser bundle size by making IS_RSC a build-time constant, enabling dead code elimination of RSC-specific branches
Nothing published for this version
ca61aca: Fix CSS block comments containing // (e.g. URLs) causing subsequent styles to not be applied.
// (e.g. URLs) causing subsequent styles to not be applied.createGlobalStyle styles not being removed when unmounted in RSC environments. React 19's precedence attribute on style tags makes them persist as permanent resources; global styles now render without precedence so they follow normal component lifecycle.theme is now undefined instead of {} for styled components, matching the existing behavior of withTheme and createGlobalStyle. This ensures accessing theme properties without a ThemeProvider correctly throws rather than silently returning undefined.withTheme HOC types: ref now correctly resolves to the component instance type instead of the constructor, and theme is properly optional in the wrapped component's props.exports field and restore browser/server build split with browser field in package.json. Fixes require('stream') resolution errors in browser bundlers like webpack 5.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
55d05c1: Make react-dom an optional peer dependency, clean up some unnecessary type peers.
51ffa9c: Fix createGlobalStyle compatibility with React StrictMode and RSC
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 queueMicrotask to 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 useRef inside RSC guard in createGlobalStyle and unify all useContext calls to use consistent !IS_RSC ? pattern.
RSC inline style tag cleanup: Fix bug where server-defined createGlobalStyle rendered 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 createGlobalStyle works correctly with:
precedence attribute51ffa9c: Restore styled.br.
1f794b7: Add package.json "exports" field for better native ESM integration.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
189bc17: Fix url() CSS function values being incorrectly stripped when using unquoted URLs containing // (e.g., url(https://example.com)). The // in p
// (e.g., url(https://example.com)). The // in protocol URLs like https://, http://, file://, and protocol-relative URLs was incorrectly being treated as a JavaScript-style line comment.7ff7002: Fix: Line comments (//) in multiline CSS declarations no longer cause parsing errors (fixes #5613)
7ff7002: Fix: Line comments (//) in multiline CSS declarations no longer cause parsing errors (fixes #5613)
JS-style line comments (//) placed after multiline declarations like calc() 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)
`;
8e8c282: Fixed createGlobalStyle to not use useLayoutEffect on the server, which was causing a warning and broken styles in v6.3.x. The check typeof R
createGlobalStyle to not use useLayoutEffect on the server, which was causing a warning and broken styles in v6.3.x. The check typeof React.useLayoutEffect === 'function' is not reliable for detecting server vs client environments in React 18+, so we now use the __SERVER__ build constant instead.6e4d1e7: fix: suppress false "created dynamically" warnings in React Server Components
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_RSC is 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.
a4b4a6b: fix: include TypeScript declaration files in npm package
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.
046e880: Ensure TypeScript declaration files are included in npm package, needed to tweak a Rollup setting.
28fd502: Add React Server Components (RSC) support
28fd502: Add React Server Components (RSC) support
styled-components now automatically detects RSC environments and handles CSS delivery appropriately:
'use client' directive required: Components work in RSC without any wrapper or directive<style> tags that React 19 automatically hoists and deduplicatesServerStyleSheet continue to work unchangedRSC best practices:
&[data-size='lg'])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>;
ThemeProvider is a no-op in RSCTechnical details:
typeof React.createContext === 'undefined'ThemeProvider and StyleSheetManager become no-ops in RSC (children pass-through)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 elementSVG filter elements:
fe* filter primitive elements (feBlend, feColorMatrix, feComponentTransfer, etc.)clipPath, linearGradient, radialGradient - gradient and clipping elementstextPath - SVG text path elementswitch, symbol, use - SVG structural elementsThis ensures styled-components has comprehensive coverage of all styleable HTML and SVG elements supported by modern browsers and React.
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 propsaef2ad6: Update shared css property handling tools to latest versions.
Nothing published for this version
e7c8055: Experimental support for React 18+ renderToPipeableStream.
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.
aa997d8: fix for React Native >=0.79 crashes when using unsupported web-only CSS values (e.g., fit-content, min-content, max-content). The fix emits a
76b18a4: fix react 19 compatibility
47a4dcb: Fix for loose DefaultTheme type definition
DefaultTheme type definition246c77b: Resolve TS error related to ExoticComponentWithDisplayName API from React.
ExoticComponentWithDisplayName API from React.b9688ae: chore: update postcss to version 8.4.49 and nanoid to version 3.3.8
6908326: Add changesets for release management
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →