From b4e2c6a1e39441a96b30a4e64822cd3c37a96729 Mon Sep 17 00:00:00 2001 From: zodern Date: Mon, 18 Jan 2021 12:39:55 -0600 Subject: [PATCH 1/5] Document react-fast-refresh package --- packages/react-fast-refresh/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 packages/react-fast-refresh/README.md diff --git a/packages/react-fast-refresh/README.md b/packages/react-fast-refresh/README.md new file mode 100644 index 0000000000..f2aa206a79 --- /dev/null +++ b/packages/react-fast-refresh/README.md @@ -0,0 +1,15 @@ +# react-fast-refresh +[Source code of released version](https://github.com/meteor/meteor/tree/master/packages/react-fast-refresh) | [Source code of development version](https://github.com/meteor/meteor/tree/devel/packages/react-fast-refresh) +*** + +This package updates modified React components in the running app for faster +feedback after changing a file. To be enabled, your app must: + +- Use the `hot-module-replacement` package +- Use React 16.9.0 or newer + +This package is disabled in production. It currently only supports the modern web client. + +Learn more in the [React Fast Refresh docs](https://reactnative.dev/docs/fast-refresh) + +React Fast Refresh can be disabled by setting the `DISABLE_REACT_FAST_REFRESH` environment variable before starting Meteor. From 72e6d6eedf85e5cbce97c5f9e1537a82fce82b2d Mon Sep 17 00:00:00 2001 From: zodern Date: Mon, 18 Jan 2021 12:46:05 -0600 Subject: [PATCH 2/5] Fix modules-runtime-hot summary --- packages/modules-runtime-hot/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules-runtime-hot/package.js b/packages/modules-runtime-hot/package.js index ce874611d3..a3ba60a04e 100644 --- a/packages/modules-runtime-hot/package.js +++ b/packages/modules-runtime-hot/package.js @@ -1,7 +1,7 @@ Package.describe({ name: "modules-runtime-hot", version: "0.12.0", - summary: "Patches modules-runtime to support Hot Module Reload", + summary: "Patches modules-runtime to support Hot Module Replacement", git: "https://github.com/benjamn/install", documentation: "README.md" }); From 3684f213740e4d0fa6aec35fa18e027b832170ee Mon Sep 17 00:00:00 2001 From: zodern Date: Mon, 18 Jan 2021 13:35:54 -0600 Subject: [PATCH 3/5] Update react-refresh package --- packages/react-fast-refresh/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-fast-refresh/package.js b/packages/react-fast-refresh/package.js index 5ac4a20b2d..13e8fec931 100644 --- a/packages/react-fast-refresh/package.js +++ b/packages/react-fast-refresh/package.js @@ -7,7 +7,7 @@ Package.describe({ }); Npm.depends({ - 'react-refresh': '0.8.3', + 'react-refresh': '0.9.0', semver: '7.3.4' }); From 8b1ba05b5040406e563ad981fea70f1bbdbaabba Mon Sep 17 00:00:00 2001 From: zodern Date: Mon, 18 Jan 2021 14:53:02 -0600 Subject: [PATCH 4/5] Only set hmr secret env var when HMR is enabled --- tools/runners/run-app.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/runners/run-app.js b/tools/runners/run-app.js index 5d66ec0be9..a702f12279 100644 --- a/tools/runners/run-app.js +++ b/tools/runners/run-app.js @@ -226,7 +226,9 @@ _.extend(AppProcess.prototype, { env.METEOR_PRINT_ON_LISTEN = 'true'; - env.METEOR_HMR_SECRET = self.hmrSecret; + if (self.hmrSecret) { + env.METEOR_HMR_SECRET = self.hmrSecret; + } return env; }, From 34a2f0a6a3b7396bd21d5ff99de1234f78c1abbc Mon Sep 17 00:00:00 2001 From: zodern Date: Mon, 18 Jan 2021 15:03:57 -0600 Subject: [PATCH 5/5] Fix disabling react-fast-refresh --- packages/react-fast-refresh/client-runtime.js | 4 +++- packages/react-fast-refresh/server.js | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/react-fast-refresh/client-runtime.js b/packages/react-fast-refresh/client-runtime.js index ff732143b4..b564ee31ae 100644 --- a/packages/react-fast-refresh/client-runtime.js +++ b/packages/react-fast-refresh/client-runtime.js @@ -1,4 +1,6 @@ -if (process.env.NODE_ENV !== 'production' && module.hot) { +const enabled = __meteor_runtime_config__.reactFastRefreshEnabled; + +if (enabled && process.env.NODE_ENV !== 'production' && module.hot) { const runtime = require('react-refresh/runtime'); let timeout = null; diff --git a/packages/react-fast-refresh/server.js b/packages/react-fast-refresh/server.js index eaadbade22..1fde5134d8 100644 --- a/packages/react-fast-refresh/server.js +++ b/packages/react-fast-refresh/server.js @@ -15,6 +15,10 @@ if (enabled) { } } +if (typeof __meteor_runtime_config__ === 'object') { + __meteor_runtime_config__.reactFastRefreshEnabled = enabled; +} + const babelPlugin = enabled ? require('react-refresh/babel') : null;