From 658c1e971d9d10ea9931f7eae009ac62eb3aaa4b Mon Sep 17 00:00:00 2001 From: Rob Grochowicz Date: Tue, 3 Apr 2018 12:46:01 -0500 Subject: [PATCH 1/2] Enable loose mode for `class-properties` --- packages/babel-preset-react-app/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/babel-preset-react-app/index.js b/packages/babel-preset-react-app/index.js index 87b070070d9..cc323c432e9 100644 --- a/packages/babel-preset-react-app/index.js +++ b/packages/babel-preset-react-app/index.js @@ -92,7 +92,14 @@ module.exports = function(api, opts) { // don't work without it: https://github.com/babel/babel/issues/7215 require('@babel/plugin-transform-destructuring').default, // class { handleClick = () => { } } - require('@babel/plugin-proposal-class-properties').default, + // Enable loose mode to use assignment instead of defineProperty, as some + // libraries add getters and setters to prototypes + [ + require('@babel/plugin-proposal-class-properties').default, + { + loose: true, + }, + ], // The following two plugins use Object.assign directly, instead of Babel's // extends helper. Note that this assumes `Object.assign` is available. // { ...todo, completed: true } From c4719d0b91e82c6790d1c620e5fe50931f59e4bb Mon Sep 17 00:00:00 2001 From: Rob Grochowicz Date: Thu, 5 Apr 2018 12:49:00 -0500 Subject: [PATCH 2/2] Update comment to point to discussion --- packages/babel-preset-react-app/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/babel-preset-react-app/index.js b/packages/babel-preset-react-app/index.js index cc323c432e9..72089b9b78b 100644 --- a/packages/babel-preset-react-app/index.js +++ b/packages/babel-preset-react-app/index.js @@ -92,8 +92,8 @@ module.exports = function(api, opts) { // don't work without it: https://github.com/babel/babel/issues/7215 require('@babel/plugin-transform-destructuring').default, // class { handleClick = () => { } } - // Enable loose mode to use assignment instead of defineProperty, as some - // libraries add getters and setters to prototypes + // Enable loose mode to use assignment instead of defineProperty + // See discussion in https://github.com/facebook/create-react-app/issues/4263 [ require('@babel/plugin-proposal-class-properties').default, {