Update dependency styled-components to v6.5.3 - #92
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
April 9, 2026 17:38
21e5f71 to
6ab821a
Compare
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
April 21, 2026 15:03
6ab821a to
edc53b8
Compare
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
May 12, 2026 10:58
edc53b8 to
925aaee
Compare
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
May 19, 2026 16:17
925aaee to
14c08d0
Compare
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
June 13, 2026 16:05
14c08d0 to
fb10b05
Compare
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
June 24, 2026 21:31
fb10b05 to
6f93676
Compare
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
July 12, 2026 15:48
6f93676 to
d23f9c3
Compare
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
July 19, 2026 00:32
d23f9c3 to
83a59ac
Compare
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
August 4, 2026 21:29
83a59ac to
7b69fc5
Compare
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
August 7, 2026 15:04
7b69fc5 to
a9251e8
Compare
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
August 12, 2026 01:39
a9251e8 to
6bc42ec
Compare
renovate
Bot
force-pushed
the
renovate/styled-components-6.x
branch
from
August 15, 2026 17:10
6bc42ec to
f97c0e9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
6.3.11→6.5.3Release Notes
styled-components/styled-components (styled-components)
v6.5.3Compare Source
Patch Changes
3470387: Fix TypeScript errors in projects that augment React HTML props with adata-*template-literal index signature.v6.5.2Compare Source
Patch Changes
00b9ee2:.attrs()is cheaper to type-check.Two costs on the
.attrspath are gone. Object-form.attrs()left the rendered target unchanged but still re-resolved that target's whole prop bag on every call, making.attrson an HTML or SVG tag far costlier than on a wrapped component; it now reuses the props already resolved for the tag. Separately, making attrs-provided keys optional ran an avoidably expensive pass over the target's full prop set on every attrs component. Together these cut consumer type-check work measurably across every.attrsform, with no change to the resulting component's accepted props. Redirecting the target with.attrs({ as }), including the function form, is unaffected.00b9ee2: Explicitly annotated styled components type-check faster.Assigning a styled component to an explicit type, as
isolatedDeclarationsand any package that emits.d.tsfiles must (const Button: IStyledComponentBase<'web', ...> = styled.button``), used to be several times more expensive to check than an inferred one, because the annotation'sstyleand the component's widenedstyle` were two different csstype representations that the checker compared property by property.The inline
stylewidening now builds on React's ownCSSProperties, the same type a hand-written annotation carries, so that comparison short-circuits. On a 40-component fixture this cut the types created for the annotated pattern by about 21%, with no change to whatstyleaccepts: CSS custom properties, a component's own narrowstyle, andstyle={undefined}all behave exactly as before.00b9ee2:styled()wrapping a generic polymorphic component keeps its declared props narrow.Wrapping a component whose props are generic over an element type, such as the common
<C extends React.ElementType>(props: PolymorphicProps<C, OwnProps>)pattern, used to let the styled result accept prop values the component itself rejects:styled(Button)would takevariant="anything"even though<Button variant="anything">is a type error. The wrapper now narrows those props exactly as the direct component does, so a bad value is caught in both places. Valid props, children, and plain (non-generic) targets are unaffected.v6.5.1Compare Source
Patch Changes
a0a92cd: Fix a styled component silently dropping props declared as a union whose members have no prop in common, which left every one of those props rejected. The same applied whenaspointed at a component with such props. Where every member's props are optional the union is still flattened, so declare the combined optional shape instead.a0a92cd: Styled components now report the same debug value to React DevTools on every render. Previously the value was only reported on renders that recomputed styles, so it disappeared from the DevTools panel whenever a component re-rendered with unchanged style props.a0a92cd: Fix wrapping a component whose props are a union. Since 6.5.0 the wrapped version accepted only the props common to every member of the union, so a prop belonging to just one member was rejected even though the unwrapped component accepted it.v6.5.0Compare Source
Minor Changes
dfe4baf: React Native components now checkstyleagainst React Native's own style types. Web-only CSS such asfloat, and CSS custom properties such as--brand, were previously accepted even though React Native has never done anything with them at runtime. They now surface as a type error where you write them instead of silently doing nothing.Web components are unaffected and still accept custom properties.
dfe4baf: Declaring your ownstyleprop type now constrains the fields you name while leaving the rest of CSS alone. Previously a declaration likestyled.div<{ style?: { width: number } }>was quietly ignored, because the built-in style type was applied after your props, so any CSS value was still accepted. Nowwidthhas to be a number, whilecolor, custom properties, and everything else you did not mention keep working as before.To remove a field rather than constrain it, declare it as
never. To make your type the only thing accepted, wrap it in the newCustomStylehelper, which removes every field you did not list:The constraint holds when the component is rendered through
asorforwardedAs, so it cannot be sidestepped by rendering the same component as a different tag. Note thatCustomStyleremoves CSS custom properties too, since they are among the fields you did not list.One thing to know if you use
exactOptionalPropertyTypes: on a component that declares its ownstyle, passingstyle={undefined}explicitly is now rejected. Leaving the prop off is unaffected. Writestyle?: { width: number } | undefinedin your declaration if you need to pass it explicitly.Relatedly, reading the style type back off a component (for example with
React.ComponentProps) now reports that CSS custom properties are accepted, which matches what was already allowed when rendering.2949923: Large TypeScript projects type-check dramatically faster. On a 500-component app,tsccheck time drops to under a quarter of what 6.4.4 takes and peak memory to under a third, which resolves the out-of-memory failures some projects hit after upgrading past 6.4.2. Both are now better than 6.4.2 was, so there is no longer a reason to pin to it. Editor responsiveness improves by the same margin, and autocomplete onastargets is unchanged.Patch Changes
dfe4baf: Fixedrefbeing rejected on React Native components created with the shorthand syntax, such asstyled.TextInput. Passing a ref, or a ref callback whose parameter you have not annotated, now works the same way it does withstyled(TextInput).Also fixed a type error when a component's
attrscallback is given an explicit parameter type, as instyled.div.attrs<MyProps>(props => props).dfe4baf: Fixed components built on targets whose props cannot be inspected, such as Mantine's polymorphic components, rejectingchildrenand the target's own props once you added a prop of your own:Wrapping such a target without adding props already worked; adding one turned the permissiveness off. Your own declared props stay strictly typed either way.
v6.4.4Compare Source
Patch Changes
537ea42: Reduce TypeScript type-checking cost for styled components, most noticeablystyled(Component)wrappers and polymorphicasusage. Large codebases that saw elevatedtscmemory and type-instantiation counts get lower type-check memory and time, with no change to the emitted types or runtime behavior.v6.4.3Compare Source
Patch Changes
f692ec2: Fix a TypeScript error when wrapping a component whose props can't be statically read, such as Mantine v7's polymorphic-factory components (Button,Card,Menu.Item, and similar). These styled components no longer reject every prop, includingchildren; arbitrary props are accepted again at the JSX call site and via.attrs(), while components with readable prop types stay fully type-checked.f692ec2: Keep TypeScript attribute autocomplete working while you type props on a polymorphic styled component. When a component renders a different element throughas(for exampleas="video"), beginning to type a new prop name could make the whole suggestion list vanish; the rendered element's props now keep autocompleting as you go.v6.4.2Compare Source
Patch Changes
9945904: Restore TypeScript prop autocomplete inside the JSX of a styled component once the first attribute is typed.9945904: Apply all chain levels' styles when an extended styled component renders with theasprop under Preact'sreact-compat.9945904: Respect a customtoStringon plain value objects (e.g. design tokens) when interpolated into a styled component, rather than walking the object's keys as CSS declarations.9945904: Fix a TypeScript error when wrapping a component whose props include anasprop with a non-string type (such as Next.jsLink'sas?: Url). The styled component now accepts either the styled-components polymorphism value or the wrapped component's ownastype, so spreading the wrapped component's props onto the styled component is assignable again.9945904: Restore reliable styling in production browser bundles built without a runtimeprocessglobal.v6.4.1Compare Source
Patch Changes
49d09ae: Fix a performance regression in 6.4.0 where dynamiccreateGlobalStylecomponents caused significant re-render slowdowns. Also restores pre-6.4 cascade ordering when multiple instances of the samecreateGlobalStylecoexist.eca95b2: Fix outdated dev-mode error messages for keyframes-in-untagged-strings and component-selector references that still pointed atwww.styled-components.comand described behavior from styled-components v3.v6.4.0Compare Source
Minor Changes
b0f3d29:.attrs()improvements: props supplied via attrs are now automatically made optional on the resulting component (previously required even when attrs provided a default). Also fixes a bug where the attrs callback received a mutable props object that could be changed by subsequent attrs processing; it now receives an immutable snapshot.2a973d8: Dropped IE11 support: ES2015 build target, inlined unitless CSS properties (removing @emotion/unitless dependency), removed legacy React class statics from hoist and other unnecessary code.9e07d95: AddcreateTheme(defaultTheme, options?)for CSS variable theming that works across RSC and client components.Returns an object with the same shape where every leaf is
var(--prefix-path, fallback). Pass it toThemeProviderfor stable class name hashes across themes (no hydration mismatch on light/dark switch).varsexposes bare CSS custom property names (same shape as the theme) for use increateGlobalStyledark mode overrides without hand-writing variable names:Options:
prefix(default"sc"),selector(default":root", use":host"for Shadow DOM).79cc7b4: Add first-class CSP nonce support. Nonces can now be configured viaStyleSheetManager'snonceprop (recommended for Next.js, Remix),ServerStyleSheet's constructor,<meta property="csp-nonce">(Vite convention),<meta name="sc-nonce">, or the legacy__webpack_nonce__global.b0f3d29: RearchitectcreateGlobalStyleto use shared stylesheet groups.All instances of a
createGlobalStylecomponent now share a single stylesheet group, registered once at definition time. This fixes unmounting one instance removing styles needed by others (#5695), styles scattering after remount (#3146), and group ID leaks during SSR (#3022).CSS injection order is now fully determined at definition time (lower group ID = earlier in stylesheet). Render order no longer affects CSS order. Keyframes defined before a component correctly appear before that component's rules.
Also fixes: O(n^2) performance regression in jsdom test environments from unbounded rule accumulation, and stale static global styles during client-side HMR (effect deps now include the
globalStylereference so module re-evaluation triggers re-injection).b0f3d29: Significant render performance improvements via three-layer memoization and hot-path micro-optimizations. Client-only; server renders are unaffected.Re-renders that don't change styling now skip style resolution entirely. Components sharing the same CSS (e.g., list items) benefit from cross-sibling caching. Hot-path changes include
forEach→for/for...of, template literal → manual concat, and reduced allocations.Benchmarks vs 6.3.12:
9ada92b: React Server Components support: inline style injection, deduplication, and a newstylisPluginRSCfor child-index selector fixes.Inline style injection: RSC-rendered styled components emit
<style data-styled>tags alongside their elements. CSS is deduplicated per render viaReact.cache(React 19+). Extended components use:where()zero-specificity wrapping on base CSS so extensions always win the cascade regardless of injection order.StyleSheetManagerworks in RSC:stylisPluginsandshouldForwardPropare now applied in server component environments where React context is unavailable.stylisPluginRSC— opt-in stylis plugin that fixes:first-child,:last-child,:nth-child(), and:nth-last-child()selectors broken by inline<style>tags shifting child indices. Rewrites them using CSS Selectors Level 4of Ssyntax to exclude styled-components style tags from the count.The plugin rewrites
:first-child,:last-child,:nth-child(), and:nth-last-child()using CSS Selectors Level 4of Ssyntax to exclude injected style tags from the child count.Browser support: Chrome 111+, Firefox 113+, Safari 9+ (~93% global). In unsupported browsers, the entire CSS rule is dropped — only opt in if your audience supports it. Use
:first-of-type/:nth-of-type()as a universally compatible alternative.HMR: Stale styles during client-side HMR are detected and invalidated when module re-evaluation creates new component instances while IDs remain stable (SWC plugin assigns IDs by file location).
createGlobalStyleadditionally clears stale sheet entries when the instance changes between renders.The plugin is fully tree-shakeable — zero bytes in bundles that don't import it.
Patch Changes
b0f3d29: ExposeasandforwardedAsprops inReact.ComponentPropsextraction for styled components553cbb4: Fix memory leak in long-running apps using components with free-form string interpolations (e.g.color: ${p => p.$dynamicValue}where the value comes from unbounded user input).b0f3d29: React Native improvements: replaced postcss with a lightweight CSS declaration parser, fixingnanoidcrashes in Expo/Metro (#5705) and improving parse speed 4-6x. Parent re-renders with unchanged children are 2.6-3.2x faster via cache-first render. Updated native component alias list (removed 5 dead components, added 4 missing). Addedreact-nativeas an optional peer dependency.74e8b76: Smaller install footprint via unused dependency cleanup.v6.3.12Compare Source
Patch Changes
db4f940: Fix test performance regression in 6.3.x by eliminating double style rendering increateGlobalStyleand removing unnecessary DOM queries during cleanup in client/test environments.1203f80: Fix React Native crash caused bydocumentreferences 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 passedundefinedprops 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.Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.