diff --git a/packages/react-native-web/src/exports/StyleSheet/WebStyleSheet.js b/packages/react-native-web/src/exports/StyleSheet/WebStyleSheet.js index c6e18468..839c73e4 100644 --- a/packages/react-native-web/src/exports/StyleSheet/WebStyleSheet.js +++ b/packages/react-native-web/src/exports/StyleSheet/WebStyleSheet.js @@ -55,7 +55,15 @@ export default class WebStyleSheet { // doesn't include styles injected via 'insertRule') if (this._textContent.indexOf(rule) === -1 && this._sheet) { const pos = position || this._sheet.cssRules.length; - this._sheet.insertRule(rule, pos); + try { + this._sheet.insertRule(rule, pos); + } catch (e) { + if (process.env.NODE_ENV !== 'production') { + console.warn( + `Failed to inject CSS: "${rule}". The browser may have rejecting unrecognized vendor prefixes. (This should have no user-facing impact.)` + ); + } + } } } } diff --git a/packages/react-native-web/src/exports/StyleSheet/__tests__/__snapshots__/createAtomicRules.js.snap b/packages/react-native-web/src/exports/StyleSheet/__tests__/__snapshots__/createAtomicRules.js.snap index a9c46293..1a5c1b5f 100644 --- a/packages/react-native-web/src/exports/StyleSheet/__tests__/__snapshots__/createAtomicRules.js.snap +++ b/packages/react-native-web/src/exports/StyleSheet/__tests__/__snapshots__/createAtomicRules.js.snap @@ -2,10 +2,10 @@ exports[`StyleSheet/createAtomicRules transforms custom "animationName" declaration 1`] = ` Array [ - "@media all {@-webkit-keyframes rn-anim-2k74q5{0%{top:0px}50%{top:5px}100%{top:10px}}}", - "@media all {@keyframes rn-anim-2k74q5{0%{top:0px}50%{top:5px}100%{top:10px}}}", - "@media all {@-webkit-keyframes rn-anim-zc91cv{from{left:0px}to{left:10px}}}", - "@media all {@keyframes rn-anim-zc91cv{from{left:0px}to{left:10px}}}", + "@-webkit-keyframes rn-anim-2k74q5{0%{top:0px}50%{top:5px}100%{top:10px}}", + "@keyframes rn-anim-2k74q5{0%{top:0px}50%{top:5px}100%{top:10px}}", + "@-webkit-keyframes rn-anim-zc91cv{from{left:0px}to{left:10px}}", + "@keyframes rn-anim-zc91cv{from{left:0px}to{left:10px}}", ".test{-webkit-animation-name:rn-anim-2k74q5,rn-anim-zc91cv;animation-name:rn-anim-2k74q5,rn-anim-zc91cv}", ] `; diff --git a/packages/react-native-web/src/exports/StyleSheet/createKeyframesRules.js b/packages/react-native-web/src/exports/StyleSheet/createKeyframesRules.js index 3445d34a..537f5d54 100644 --- a/packages/react-native-web/src/exports/StyleSheet/createKeyframesRules.js +++ b/packages/react-native-web/src/exports/StyleSheet/createKeyframesRules.js @@ -29,7 +29,7 @@ const makeSteps = keyframes => const createKeyframesRules = (keyframes: Object): Array => { const identifier = createIdentifier(keyframes); const rules = prefixes.map(prefix => { - return `@media all {@${prefix}keyframes ${identifier}{${makeSteps(keyframes)}}}`; + return `@${prefix}keyframes ${identifier}{${makeSteps(keyframes)}}`; }); return { identifier, rules }; };