This repository has been archived by the owner on Oct 27, 2020. It is now read-only.
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:
^3.4.2
->^5.0.0
Release Notes
styled-components/styled-components
v5.2.0
Compare Source
Make sure
StyleSheetManager
renders 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
keyframes
not 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!
Allow
DISABLE_SPEEDY
to be set tofalse
to enable speedy mode in non-production environments (see #3289) thanks @FastFedora!Enable new style rules can be inserted in the middle of existing sheet when rendering on client after rehydrate.
GroupIDAllocator
is now changed to findnextFreeGroup
by checkingreverseRegister
, instead of setting it to the end of existing groups. (see #3233) thanks @mu29!v5.1.1
Compare Source
New Functionality
shouldForwardProp
API for native and primitive platforms, which was previously missing in [v5.1.0] (see #3093)This has been released under a patch bump instead of a minor, since it's only been missing from Native-support.
Bugfixes
useTheme
hook to named exports for react-primitives entrypoint (see #2982) thanks @jladuval!v5.1.0
Compare Source
New Functionality
Add
shouldForwardProp
API (almost the same as emotion's, just a slightly different usage pattern); #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:
v5.0.1
Compare Source
Added useTheme hook to named exports for react native
Performance enhancements
Added some helpful new dev-time warnings for antipatterns
@import
insidecreateGlobalStyle
and what to do insteadv5.0.0
Compare Source
Read the v5 release announcement!
NOTE: At this time we recommend not using
@import
inside ofcreateGlobalStyle
. 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.StyleSheetManager
enhancements<StyleSheetManager stylisPlugins={[]}>...</StyleSheetManager>
disableVendorPrefixes
removes autoprefixing if you don't need legacy browser support;<StyleSheetManager disableVendorPrefixes>...</StyleSheetManager>
disableCSSOMInjection
forces using the slower injection mode if other integrations in your runtime environment can't parse CSSOM-injected styles;<StyleSheetManager disableCSSOMInjection>...</StyleSheetManager>
Remove deprecated attrs "subfunction" syntax variant
should become
You can still pass objects to
attrs
but individual properties shouldn't have functions that receive props anymore.Fix attrs not taking precedence over props when overriding a given prop
(ReactNative) upgrade css-to-react-native to v3 (changelog)
Replace
merge-anything
withmixin-deep
to save some bytes (this is what handles merging ofdefaultProps
between folded styled components); this is inlined into since the library is written in IE-incompatible syntaxFix certain adblockers messing up styling by purposefully not emitting the substring "ad" (case-insensitive) when generating dynamic class names
Fix regressed behavior between v3 and v4 where className was not correctly aggregated between folded
.attrs
invocationsFix support for styling custom elements (#2819)
v4.4.1
Compare Source
Fix
styled-components
'sreact-native
import 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 integrationsv4.4.0
Compare Source
Fix to use
ownerDocument
instead 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)
v4.3.2
Compare Source
v4.3.1
Compare Source
v4.3.0
Compare Source
Make it possible to initialize
SC_ATTR
andSC_DISABLE_SPEEDY
viaREACT_APP_*
.env variables for easier integration with CRA applications (see #2501)Fix
theme
prop for styled native components, also fixestheme
indefaultProps
for them.Add "forwardedAs" prop to allow deeply passing a different "as" prop value to underlying components
when using
styled()
as a higher-order componentImplement defaultProps folding (see #2597)
v4.2.1
Compare Source
Remove className usage checker dev utility due to excessive false-positive noise in certain runtime environments like next.js and the related warning suppression prop (see #2563).
Attach displayName to forwardRef function as described in React docs (see #2508).
Compatibility with react-native-web 0.11 (see #2453).
Add stack trace to .attrs warning (see #2486).
Fix functions as values for object literals. (see 2489)
Remove validation in Babel macro, by @mAAdhaTTah (see #2427)
v4.2.0
Compare Source
Reduced GC pressure when using component selector styles. (see #2424).
Add svg tag
marker
to domElements.js (see #2389)Make the
GlobalStyleComponent
created bycreateGlobalStyle
call the base constructor withprops
(see #2321).Move to Mono repository structure with lerna @imbhargav5 (see #2326)
Expose
StyleSheetContext
andStyleSheetConsumer
for you fancy babes doing wild stuffFilter
suppressClassNameWarning
to not to pass down to the wrapped components @taneba (see #2365)Fix an edge case where React would break streaming inside
<textarea>
elements, which have special child behavior and aren't a suitable place to inject a style tag (see #2413)v4.1.3
Compare Source
v4.1.2
Compare Source
Fix function-form attrs to receive the full execution context (including theme) (see #2210)
Adjust
innerRef
deprecation warning to not be fired if wrapping a custom component, since that underlying component may not be on forwardRef yet and actually using the prop (see #2211)Expose the
ThemeConsumer
andThemeContext
exports for the native and primitives entries (see #2217)Remove
createGlobalStyle
multimount warning; Concurrent and Strict modes intentionally render the same component multiple times, which causes this warning to be triggered always even when usage is correct in the application (see #2216)Folded components are now targettable via component selector as in v3 if you used the old
.extend
API (see #2239)Don't treat uppercased strings as tag-like components and don't filter out props from them (see #2225)
v4.1.1
Compare Source
v4.1.0
Compare Source
Performance optimization for fully static (no function interpolation) styled-components by avoiding using
ThemeConsumer
since it isn't necessary, by @mxstbr (see #2166)Allow disabling "speedy" mode via global
SC_DISABLE_SPEEDY
variable, by @devrelm (see #2185)To make use of this, you can either set
SC_DISABLE_SPEEDY
in your app's entry file or use something likewebpack.DefinePlugin
to do it at build time:Attrs can now be passed a function (see #2200); thanks @oliverlaz for providing an early PoC PR for this!
e.g.:
Fix the
warnTooManyClasses
dev helper not being totally dead code eliminated in production (see #2200)Deprecate functions as object keys for object-form attrs (see #2200)
e.g.:
Support for this will be removed in styled-components v5. The primary impetus behind this change is to eliminate confusion around basic functions vs styled-components vs React components provided as values in the object-form attrs constructor, each of which has different handling behaviors. The single outer function to receive the props and then return a props object is conceptually simpler.
The standalone CDN build is now UMD-compliant and can be used with RequireJS, etc.
Add pixels to unitless numbers when object interpolation is used, by @Fer0x (see #2173)
Trying to interpolate a non-styled component into CSS is now a hard error, rather than a warning (see #2173)
v4.0.3
Compare Source
Interpolating a styled component into a string now returns the static component selector (emotion cross-compat)
Add
suppressClassNameWarning
prop to disable warning when wrapping a React component withstyled()
and theclassName
isn't used, by @Fer0x (see #2156)Expose ThemeContext to enable static contextType support for React 16.6, by @imbhargav5 (see #2152)
Filter out invalid HTML attributes from
attrs
, by @Fer0x (see #2133)Add warning if an
attrs
prop is a function that returns an element, by @timswalling (see #2162)v4.0.2
Compare Source
v4.0.1
Compare Source
Add suppressMultiMountWarning prop to disable warning on multiple cgs mount, by @imbhargav5 (see #2107)
Fix self-reference replacement edge cases, by @probablyup (see #2109)
v4.0.0
Compare Source
This is a rollup of the highlights of beta 0-11 for convenience. See the migration guide for easy updating steps and the beta announcement blog for our summary of v4's changes, thought process, etc.
New stuff
Add babel macro for full-featured interop with create react app v2+, by @lucleray (see #2032)
Expose
ThemeConsumer
component, context consumer render prop component from theReact.createContext
API if people are interested in using it rather than / in addition to thewithTheme
HOC, by @probablyupAdd
createGlobalStyle
that returns a component which, when mounting, will apply global styles. This is a replacement for theinjectGlobal
API. It can be updated, replaced, removed, etc like any normal component and the global scope will update accordingly, by @JamieDixon @marionebl, @yjimk, and @imbhargav5 (see #1416)Added a first-class API for rendering polymorphism via "as" prop. In most cases, this new prop will replace your need to use the
.withComponent
API. It allows you to control what underlying element or component is rendered at runtime, while not messing with the styles, by @probablyup (see #1962)Breaking changes
Fix how ampersand is handled in self-referential selector combinations, e.g.
& + &
(see #2071)Remove deprecated
consolidateStreamedStyles
API, by @probablyup (see #1906)Remove deprecated
jsnext:main
entry point from package.json, by @probablyup (see #1907)Remove deprecated
.extend
API, by @probablyup (see #1908)Migrate to new context API, by @alexandernanberg (see #1894)
Remove TS typings; they are now to be found in DefinitelyTyped, by @probablyup. See #1778 for more information.
Add new
data-styled-version
attribute to generated<style>
tags to allow multiple versions of styled-components to function on the page at once without clobbering each other, by @probablyupIt's still highly recommended to use aliasing via your bundler to dedupe libraries like styled-components and react.
[Breaking change] Refactor
keyframes
helper, by @fer0x (see #1930).Keyframes is now implemented in a "lazy" manner: its styles will be injected with the render phase of components using them.
keyframes
no longer returns an animation name, instead it returns an object which has method.getName()
for the purpose of getting the animation name.Migrate to use new
React.forwardRef
API, by @probablyup; note that this removes theinnerRef
API since it is no longer needed.Implement
styled()
wrapper folding. In a nutshell, when you nest styled wrappers (e.g.styled(styled.div)
) the components are now folded such that only one is mounted that contains the merged styles of its ancestors. This is conceptually equivalent to the removed "extend" functionality, but without many of the downsides -- and it's automatic, by @probablyup (see #1962)Developer experience improvements
Add warning when component is not a styled component and cannot be referred via component selector, by @egdbear (see #2070)
When using CRA v2, import styled components from
styled-components/macro
instead to gain all the benefits of our babel plugin.Add a warning when wrapping a React component with
styled()
and theclassName
isn't used (meaning styling isn't applied), by @Fer0x (see #2073)Tweak the styled components base component naming to look nicer in DevTools, by @probablyup (see #2012)
Beef up the error message that sometimes occurs when multiple versions of styled components are used together and the StyleSheet instance can't be found, by @probablyup (see #2012)
Misc
Add
enzymeFind
test utility to easily grab instances of a styled-component from enyzme mounted testing scenarios, by @probablyup (see #2049)Inline and optimize the static hoisting functionality to avoid a bundler bug and shed a bit of package weight, by @probablyup (see #2021
Renovate configuration
📅 Schedule: At any time (no schedule defined).
🚦 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 has been generated by WhiteSource Renovate. View repository job log here.