diff --git a/.prettierrc.js b/.prettierrc.js
index df8d863ae4c0..6e5dcb710f0f 100644
--- a/.prettierrc.js
+++ b/.prettierrc.js
@@ -8,7 +8,7 @@ module.exports = {
   jsxBracketSameLine: true,
   trailingComma: 'es5',
   printWidth: 80,
-  parser: 'babylon',
+  parser: 'babel',
 
   overrides: [
     {
diff --git a/fixtures/attribute-behavior/src/App.js b/fixtures/attribute-behavior/src/App.js
index 3764349b958a..7cb678b58738 100644
--- a/fixtures/attribute-behavior/src/App.js
+++ b/fixtures/attribute-behavior/src/App.js
@@ -461,9 +461,7 @@ function prepareState(initGlobals) {
       hasSameBehaviorForAll,
       rowPatternHash,
       // "Good enough" id that we can store in localStorage
-      rowIdHash: `${attribute.name} ${attribute.tagName} ${
-        attribute.overrideStringValue
-      }`,
+      rowIdHash: `${attribute.name} ${attribute.tagName} ${attribute.overrideStringValue}`,
     };
     const rowGroup = rowPatternHashes.get(rowPatternHash) || new Set();
     rowGroup.add(row);
@@ -866,14 +864,12 @@ class App extends React.Component {
     // Sort
     switch (sortOrder) {
       case ALPHABETICAL:
-        return filteredAttributes.sort(
-          (attr1, attr2) =>
-            attr1.name.toLowerCase() < attr2.name.toLowerCase() ? -1 : 1
+        return filteredAttributes.sort((attr1, attr2) =>
+          attr1.name.toLowerCase() < attr2.name.toLowerCase() ? -1 : 1
         );
       case REV_ALPHABETICAL:
-        return filteredAttributes.sort(
-          (attr1, attr2) =>
-            attr1.name.toLowerCase() < attr2.name.toLowerCase() ? 1 : -1
+        return filteredAttributes.sort((attr1, attr2) =>
+          attr1.name.toLowerCase() < attr2.name.toLowerCase() ? 1 : -1
         );
       case GROUPED_BY_ROW_PATTERN: {
         return filteredAttributes.sort((attr1, attr2) => {
diff --git a/fixtures/dom/src/components/Iframe.js b/fixtures/dom/src/components/Iframe.js
index 3030d5059453..b69f74ef3ae8 100644
--- a/fixtures/dom/src/components/Iframe.js
+++ b/fixtures/dom/src/components/Iframe.js
@@ -55,4 +55,4 @@ class IframeSubtree extends React.Component {
   }
 }
 
-export default (ReactDOM.createPortal ? IframePortal : IframeSubtree);
+export default ReactDOM.createPortal ? IframePortal : IframeSubtree;
diff --git a/fixtures/dom/src/components/fixtures/home.js b/fixtures/dom/src/components/fixtures/home.js
index b2f04ef27258..b446cf7e613d 100644
--- a/fixtures/dom/src/components/fixtures/home.js
+++ b/fixtures/dom/src/components/fixtures/home.js
@@ -33,7 +33,8 @@ export default function Home() {
               <td>
                 <a href="https://www.mozilla.org/en-US/firefox/organizations/">
                   ESR<sup>†</sup>
-                </a>, Latest
+                </a>
+                , Latest
               </td>
             </tr>
             <tr>
diff --git a/fixtures/dom/src/components/fixtures/suspense/index.js b/fixtures/dom/src/components/fixtures/suspense/index.js
index 44b9f33192c9..ce4c64f30e8a 100644
--- a/fixtures/dom/src/components/fixtures/suspense/index.js
+++ b/fixtures/dom/src/components/fixtures/suspense/index.js
@@ -213,8 +213,8 @@ class TextInputFixtures extends React.Component {
 
           <Fixture>
             <SuspendyTree>
-              <img src="https://upload.wikimedia.org/wikipedia/commons/e/ee/Atom_%282%29.png" />React
-              is cool
+              <img src="https://upload.wikimedia.org/wikipedia/commons/e/ee/Atom_%282%29.png" />
+              React is cool
             </SuspendyTree>
           </Fixture>
         </TestCase>
@@ -308,7 +308,9 @@ class TextInputFixtures extends React.Component {
               <div style={{height: 200, overflow: 'scroll'}}>
                 {Array(20)
                   .fill()
-                  .map((_, i) => <h2 key={i}>{i + 1}</h2>)}
+                  .map((_, i) => (
+                    <h2 key={i}>{i + 1}</h2>
+                  ))}
               </div>
             </SuspendyTree>
           </Fixture>
diff --git a/fixtures/dom/src/toWarnDev.js b/fixtures/dom/src/toWarnDev.js
index ab4424d735b3..faa793f416c4 100644
--- a/fixtures/dom/src/toWarnDev.js
+++ b/fixtures/dom/src/toWarnDev.js
@@ -205,9 +205,7 @@ const createMatcherFor = consoleMethod =>
           if (withoutStack !== warningsWithoutComponentStack.length) {
             return {
               message: () =>
-                `Expected ${withoutStack} warnings without a component stack but received ${
-                  warningsWithoutComponentStack.length
-                }:\n` +
+                `Expected ${withoutStack} warnings without a component stack but received ${warningsWithoutComponentStack.length}:\n` +
                 warningsWithoutComponentStack.map(warning =>
                   this.utils.printReceived(warning)
                 ),
diff --git a/fixtures/eslint/index.js b/fixtures/eslint/index.js
index 1052cac180fc..d53415310560 100644
--- a/fixtures/eslint/index.js
+++ b/fixtures/eslint/index.js
@@ -8,22 +8,19 @@ function Comment({comment, commentSource}) {
   const currentUserID = comment.viewer.id;
   const environment = RelayEnvironment.forUser(currentUserID);
   const commentID = nullthrows(comment.id);
-  useEffect(
-    () => {
-      const subscription = SubscriptionCounter.subscribeOnce(
-        `StoreSubscription_${commentID}`,
-        () =>
-          StoreSubscription.subscribe(
-            environment,
-            {
-              comment_id: commentID,
-            },
-            currentUserID,
-            commentSource
-          )
-      );
-      return () => subscription.dispose();
-    },
-    [commentID, commentSource, currentUserID, environment]
-  );
+  useEffect(() => {
+    const subscription = SubscriptionCounter.subscribeOnce(
+      `StoreSubscription_${commentID}`,
+      () =>
+        StoreSubscription.subscribe(
+          environment,
+          {
+            comment_id: commentID,
+          },
+          currentUserID,
+          commentSource
+        )
+    );
+    return () => subscription.dispose();
+  }, [commentID, commentSource, currentUserID, environment]);
 }
diff --git a/fixtures/fiber-debugger/src/App.js b/fixtures/fiber-debugger/src/App.js
index a70e3aee5df8..75d74c76b70c 100644
--- a/fixtures/fiber-debugger/src/App.js
+++ b/fixtures/fiber-debugger/src/App.js
@@ -192,8 +192,7 @@ class App extends Component {
               }
             />
             <p>
-              Step {currentStep}
-              : {friendlyAction} (
+              Step {currentStep}: {friendlyAction} (
               <a style={{color: 'gray'}} onClick={this.handleEdit} href="#">
                 Edit
               </a>
diff --git a/fixtures/fiber-debugger/src/Fibers.js b/fixtures/fiber-debugger/src/Fibers.js
index bd5d1b742cee..b6b06e59a717 100644
--- a/fixtures/fiber-debugger/src/Fibers.js
+++ b/fixtures/fiber-debugger/src/Fibers.js
@@ -330,83 +330,76 @@ export default function Fibers({fibers, show, graphSettings, ...rest}) {
               ]}
             </div>
           </Vertex>,
-          fiber.child &&
-            show.child && (
-              <Edge
-                source={fiber.id}
-                target={fiber.child}
-                kind="child"
-                weight={1000}
-                key={`${fiber.id}-${fiber.child}-child`}>
-                child
-              </Edge>
-            ),
-          fiber.sibling &&
-            show.sibling && (
-              <Edge
-                source={fiber.id}
-                target={fiber.sibling}
-                kind="sibling"
-                weight={2000}
-                key={`${fiber.id}-${fiber.sibling}-sibling`}>
-                sibling
-              </Edge>
-            ),
-          fiber.return &&
-            show.return && (
-              <Edge
-                source={fiber.id}
-                target={fiber.return}
-                kind="return"
-                weight={1000}
-                key={`${fiber.id}-${fiber.return}-return`}>
-                return
-              </Edge>
-            ),
-          fiber.nextEffect &&
-            show.fx && (
-              <Edge
-                source={fiber.id}
-                target={fiber.nextEffect}
-                kind="fx"
-                weight={100}
-                key={`${fiber.id}-${fiber.nextEffect}-nextEffect`}>
-                nextFx
-              </Edge>
-            ),
-          fiber.firstEffect &&
-            show.fx && (
-              <Edge
-                source={fiber.id}
-                target={fiber.firstEffect}
-                kind="fx"
-                weight={100}
-                key={`${fiber.id}-${fiber.firstEffect}-firstEffect`}>
-                firstFx
-              </Edge>
-            ),
-          fiber.lastEffect &&
-            show.fx && (
-              <Edge
-                source={fiber.id}
-                target={fiber.lastEffect}
-                kind="fx"
-                weight={100}
-                key={`${fiber.id}-${fiber.lastEffect}-lastEffect`}>
-                lastFx
-              </Edge>
-            ),
-          fiber.alternate &&
-            show.alt && (
-              <Edge
-                source={fiber.id}
-                target={fiber.alternate}
-                kind="alt"
-                weight={10}
-                key={`${fiber.id}-${fiber.alternate}-alt`}>
-                alt
-              </Edge>
-            ),
+          fiber.child && show.child && (
+            <Edge
+              source={fiber.id}
+              target={fiber.child}
+              kind="child"
+              weight={1000}
+              key={`${fiber.id}-${fiber.child}-child`}>
+              child
+            </Edge>
+          ),
+          fiber.sibling && show.sibling && (
+            <Edge
+              source={fiber.id}
+              target={fiber.sibling}
+              kind="sibling"
+              weight={2000}
+              key={`${fiber.id}-${fiber.sibling}-sibling`}>
+              sibling
+            </Edge>
+          ),
+          fiber.return && show.return && (
+            <Edge
+              source={fiber.id}
+              target={fiber.return}
+              kind="return"
+              weight={1000}
+              key={`${fiber.id}-${fiber.return}-return`}>
+              return
+            </Edge>
+          ),
+          fiber.nextEffect && show.fx && (
+            <Edge
+              source={fiber.id}
+              target={fiber.nextEffect}
+              kind="fx"
+              weight={100}
+              key={`${fiber.id}-${fiber.nextEffect}-nextEffect`}>
+              nextFx
+            </Edge>
+          ),
+          fiber.firstEffect && show.fx && (
+            <Edge
+              source={fiber.id}
+              target={fiber.firstEffect}
+              kind="fx"
+              weight={100}
+              key={`${fiber.id}-${fiber.firstEffect}-firstEffect`}>
+              firstFx
+            </Edge>
+          ),
+          fiber.lastEffect && show.fx && (
+            <Edge
+              source={fiber.id}
+              target={fiber.lastEffect}
+              kind="fx"
+              weight={100}
+              key={`${fiber.id}-${fiber.lastEffect}-lastEffect`}>
+              lastFx
+            </Edge>
+          ),
+          fiber.alternate && show.alt && (
+            <Edge
+              source={fiber.id}
+              target={fiber.alternate}
+              kind="alt"
+              weight={10}
+              key={`${fiber.id}-${fiber.alternate}-alt`}>
+              alt
+            </Edge>
+          ),
         ])}
       </Graph>
     </div>
diff --git a/package.json b/package.json
index dde368a682c3..356b8fb7bf06 100644
--- a/package.json
+++ b/package.json
@@ -71,7 +71,7 @@
     "ncp": "^2.0.0",
     "object-assign": "^4.1.1",
     "pacote": "^9.5.6",
-    "prettier": "1.13.7",
+    "prettier": "1.19.1",
     "prop-types": "^15.6.2",
     "random-seed": "^0.3.0",
     "react-lifecycles-compat": "^3.0.2",
diff --git a/packages/create-subscription/src/__tests__/createSubscription-test.internal.js b/packages/create-subscription/src/__tests__/createSubscription-test.internal.js
index fd74298c5957..cd924069ab39 100644
--- a/packages/create-subscription/src/__tests__/createSubscription-test.internal.js
+++ b/packages/create-subscription/src/__tests__/createSubscription-test.internal.js
@@ -118,7 +118,10 @@ describe('createSubscription', () => {
       const Subscription = createSubscription({
         getCurrentValue: source => undefined,
         subscribe: (source, callback) => {
-          source.then(value => callback(value), value => callback(value));
+          source.then(
+            value => callback(value),
+            value => callback(value),
+          );
           // (Can't unsubscribe from a Promise)
           return () => {};
         },
@@ -196,7 +199,10 @@ describe('createSubscription', () => {
       const Subscription = createSubscription({
         getCurrentValue: source => undefined,
         subscribe: (source, callback) => {
-          source.then(value => callback(value), value => callback(value));
+          source.then(
+            value => callback(value),
+            value => callback(value),
+          );
           // (Can't unsubscribe from a Promise)
           return () => {};
         },
diff --git a/packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js b/packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js
index 6e96ecddea54..9ec5e562641e 100644
--- a/packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js
+++ b/packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js
@@ -613,21 +613,15 @@ export default {
                   context.report({
                     node: declaredDependencyNode,
                     message:
-                      `The ${
-                        declaredDependencyNode.raw
-                      } literal is not a valid dependency ` +
+                      `The ${declaredDependencyNode.raw} literal is not a valid dependency ` +
                       `because it never changes. ` +
-                      `Did you mean to include ${
-                        declaredDependencyNode.value
-                      } in the array instead?`,
+                      `Did you mean to include ${declaredDependencyNode.value} in the array instead?`,
                   });
                 } else {
                   context.report({
                     node: declaredDependencyNode,
                     message:
-                      `The ${
-                        declaredDependencyNode.raw
-                      } literal is not a valid dependency ` +
+                      `The ${declaredDependencyNode.raw} literal is not a valid dependency ` +
                       'because it never changes. You can safely remove it.',
                   });
                 }
@@ -697,22 +691,16 @@ export default {
         bareFunctions.forEach(({fn, suggestUseCallback}) => {
           let message =
             `The '${fn.name.name}' function makes the dependencies of ` +
-            `${reactiveHookName} Hook (at line ${
-              declaredDependenciesNode.loc.start.line
-            }) ` +
+            `${reactiveHookName} Hook (at line ${declaredDependenciesNode.loc.start.line}) ` +
             `change on every render.`;
           if (suggestUseCallback) {
             message +=
               ` To fix this, ` +
-              `wrap the '${
-                fn.name.name
-              }' definition into its own useCallback() Hook.`;
+              `wrap the '${fn.name.name}' definition into its own useCallback() Hook.`;
           } else {
             message +=
               ` Move it inside the ${reactiveHookName} callback. ` +
-              `Alternatively, wrap the '${
-                fn.name.name
-              }' definition into its own useCallback() Hook.`;
+              `Alternatively, wrap the '${fn.name.name}' definition into its own useCallback() Hook.`;
           }
           // TODO: What if the function needs to change on every render anyway?
           // Should we suggest removing effect deps as an appropriate fix too?
diff --git a/packages/legacy-events/EventPluginUtils.js b/packages/legacy-events/EventPluginUtils.js
index bdc5f237d860..abba8e9a3dab 100644
--- a/packages/legacy-events/EventPluginUtils.js
+++ b/packages/legacy-events/EventPluginUtils.js
@@ -40,15 +40,15 @@ if (__DEV__) {
     const listenersLen = listenersIsArr
       ? dispatchListeners.length
       : dispatchListeners
-        ? 1
-        : 0;
+      ? 1
+      : 0;
 
     const instancesIsArr = Array.isArray(dispatchInstances);
     const instancesLen = instancesIsArr
       ? dispatchInstances.length
       : dispatchInstances
-        ? 1
-        : 0;
+      ? 1
+      : 0;
 
     if (instancesIsArr !== listenersIsArr || instancesLen !== listenersLen) {
       console.error('EventPluginUtils: Invalid `event`.');
diff --git a/packages/legacy-events/ReactGenericBatching.js b/packages/legacy-events/ReactGenericBatching.js
index 765e44d257ca..e5f536ee15c8 100644
--- a/packages/legacy-events/ReactGenericBatching.js
+++ b/packages/legacy-events/ReactGenericBatching.js
@@ -119,7 +119,8 @@ export function flushDiscreteUpdatesIfNeeded(timeStamp: number) {
   if (
     !isInsideEventHandler &&
     (!enableDeprecatedFlareAPI ||
-      (timeStamp === 0 || lastFlushedEventTimeStamp !== timeStamp))
+      timeStamp === 0 ||
+      lastFlushedEventTimeStamp !== timeStamp)
   ) {
     lastFlushedEventTimeStamp = timeStamp;
     flushDiscreteUpdatesImpl();
diff --git a/packages/legacy-events/ResponderEventPlugin.js b/packages/legacy-events/ResponderEventPlugin.js
index ff736b8aeac0..a5d4fe0251e5 100644
--- a/packages/legacy-events/ResponderEventPlugin.js
+++ b/packages/legacy-events/ResponderEventPlugin.js
@@ -350,10 +350,10 @@ function setResponderAndExtractTransfer(
   const shouldSetEventType = isStartish(topLevelType)
     ? eventTypes.startShouldSetResponder
     : isMoveish(topLevelType)
-      ? eventTypes.moveShouldSetResponder
-      : topLevelType === TOP_SELECTION_CHANGE
-        ? eventTypes.selectionChangeShouldSetResponder
-        : eventTypes.scrollShouldSetResponder;
+    ? eventTypes.moveShouldSetResponder
+    : topLevelType === TOP_SELECTION_CHANGE
+    ? eventTypes.selectionChangeShouldSetResponder
+    : eventTypes.scrollShouldSetResponder;
 
   // TODO: stop one short of the current responder.
   const bubbleShouldSetFrom = !responderInst
@@ -550,10 +550,10 @@ const ResponderEventPlugin = {
     const incrementalTouch = isResponderTouchStart
       ? eventTypes.responderStart
       : isResponderTouchMove
-        ? eventTypes.responderMove
-        : isResponderTouchEnd
-          ? eventTypes.responderEnd
-          : null;
+      ? eventTypes.responderMove
+      : isResponderTouchEnd
+      ? eventTypes.responderEnd
+      : null;
 
     if (incrementalTouch) {
       const gesture = ResponderSyntheticEvent.getPooled(
@@ -577,8 +577,8 @@ const ResponderEventPlugin = {
     const finalTouch = isResponderTerminate
       ? eventTypes.responderTerminate
       : isResponderRelease
-        ? eventTypes.responderRelease
-        : null;
+      ? eventTypes.responderRelease
+      : null;
     if (finalTouch) {
       const finalEvent = ResponderSyntheticEvent.getPooled(
         finalTouch,
diff --git a/packages/legacy-events/__tests__/ResponderEventPlugin-test.internal.js b/packages/legacy-events/__tests__/ResponderEventPlugin-test.internal.js
index abe96a380805..a290784c95c2 100644
--- a/packages/legacy-events/__tests__/ResponderEventPlugin-test.internal.js
+++ b/packages/legacy-events/__tests__/ResponderEventPlugin-test.internal.js
@@ -79,12 +79,12 @@ const _touchConfig = function(
     topType === 'topTouchStart'
       ? allTouchObjects
       : topType === 'topTouchMove'
-        ? allTouchObjects
-        : topType === 'topTouchEnd'
-          ? antiSubsequence(allTouchObjects, changedIndices)
-          : topType === 'topTouchCancel'
-            ? antiSubsequence(allTouchObjects, changedIndices)
-            : null;
+      ? allTouchObjects
+      : topType === 'topTouchEnd'
+      ? antiSubsequence(allTouchObjects, changedIndices)
+      : topType === 'topTouchCancel'
+      ? antiSubsequence(allTouchObjects, changedIndices)
+      : null;
 
   return {
     nativeEvent: touchEvent(
diff --git a/packages/react-art/src/__tests__/ReactART-test.js b/packages/react-art/src/__tests__/ReactART-test.js
index 1d2435436d94..758415ef3804 100644
--- a/packages/react-art/src/__tests__/ReactART-test.js
+++ b/packages/react-art/src/__tests__/ReactART-test.js
@@ -214,7 +214,9 @@ describe('ReactART', () => {
         const chars = this.props.chars.split('');
         return (
           <Surface>
-            {chars.map(text => <Shape key={text} title={text} />)}
+            {chars.map(text => (
+              <Shape key={text} title={text} />
+            ))}
           </Surface>
         );
       }
diff --git a/packages/react-cache/src/__tests__/ReactCache-test.internal.js b/packages/react-cache/src/__tests__/ReactCache-test.internal.js
index 3a14dcfd9a9e..0a459fc9d3a3 100644
--- a/packages/react-cache/src/__tests__/ReactCache-test.internal.js
+++ b/packages/react-cache/src/__tests__/ReactCache-test.internal.js
@@ -33,46 +33,53 @@ describe('ReactCache', () => {
     ReactTestRenderer = require('react-test-renderer');
     Scheduler = require('scheduler');
 
-    TextResource = createResource(([text, ms = 0]) => {
-      let listeners = null;
-      let status = 'pending';
-      let value = null;
-      return {
-        then(resolve, reject) {
-          switch (status) {
-            case 'pending': {
-              if (listeners === null) {
-                listeners = [{resolve, reject}];
-                setTimeout(() => {
-                  if (textResourceShouldFail) {
-                    Scheduler.unstable_yieldValue(`Promise rejected [${text}]`);
-                    status = 'rejected';
-                    value = new Error('Failed to load: ' + text);
-                    listeners.forEach(listener => listener.reject(value));
-                  } else {
-                    Scheduler.unstable_yieldValue(`Promise resolved [${text}]`);
-                    status = 'resolved';
-                    value = text;
-                    listeners.forEach(listener => listener.resolve(value));
-                  }
-                }, ms);
-              } else {
-                listeners.push({resolve, reject});
+    TextResource = createResource(
+      ([text, ms = 0]) => {
+        let listeners = null;
+        let status = 'pending';
+        let value = null;
+        return {
+          then(resolve, reject) {
+            switch (status) {
+              case 'pending': {
+                if (listeners === null) {
+                  listeners = [{resolve, reject}];
+                  setTimeout(() => {
+                    if (textResourceShouldFail) {
+                      Scheduler.unstable_yieldValue(
+                        `Promise rejected [${text}]`,
+                      );
+                      status = 'rejected';
+                      value = new Error('Failed to load: ' + text);
+                      listeners.forEach(listener => listener.reject(value));
+                    } else {
+                      Scheduler.unstable_yieldValue(
+                        `Promise resolved [${text}]`,
+                      );
+                      status = 'resolved';
+                      value = text;
+                      listeners.forEach(listener => listener.resolve(value));
+                    }
+                  }, ms);
+                } else {
+                  listeners.push({resolve, reject});
+                }
+                break;
+              }
+              case 'resolved': {
+                resolve(value);
+                break;
+              }
+              case 'rejected': {
+                reject(value);
+                break;
               }
-              break;
-            }
-            case 'resolved': {
-              resolve(value);
-              break;
-            }
-            case 'rejected': {
-              reject(value);
-              break;
             }
-          }
-        },
-      };
-    }, ([text, ms]) => text);
+          },
+        };
+      },
+      ([text, ms]) => text,
+    );
 
     textResourceShouldFail = false;
   });
@@ -293,26 +300,29 @@ describe('ReactCache', () => {
 
   it('if a thenable resolves multiple times, does not update the first cached value', () => {
     let resolveThenable;
-    const BadTextResource = createResource(([text, ms = 0]) => {
-      let listeners = null;
-      let value = null;
-      return {
-        then(resolve, reject) {
-          if (value !== null) {
-            resolve(value);
-          } else {
-            if (listeners === null) {
-              listeners = [resolve];
-              resolveThenable = v => {
-                listeners.forEach(listener => listener(v));
-              };
+    const BadTextResource = createResource(
+      ([text, ms = 0]) => {
+        let listeners = null;
+        let value = null;
+        return {
+          then(resolve, reject) {
+            if (value !== null) {
+              resolve(value);
             } else {
-              listeners.push(resolve);
+              if (listeners === null) {
+                listeners = [resolve];
+                resolveThenable = v => {
+                  listeners.forEach(listener => listener(v));
+                };
+              } else {
+                listeners.push(resolve);
+              }
             }
-          }
-        },
-      };
-    }, ([text, ms]) => text);
+          },
+        };
+      },
+      ([text, ms]) => text,
+    );
 
     function BadAsyncText(props) {
       const text = props.text;
diff --git a/packages/react-debug-tools/src/ReactDebugHooks.js b/packages/react-debug-tools/src/ReactDebugHooks.js
index 34c3e43b81ed..0ff4d4278b17 100644
--- a/packages/react-debug-tools/src/ReactDebugHooks.js
+++ b/packages/react-debug-tools/src/ReactDebugHooks.js
@@ -116,8 +116,8 @@ function useState<S>(
     hook !== null
       ? hook.memoizedState
       : typeof initialState === 'function'
-        ? initialState()
-        : initialState;
+      ? initialState()
+      : initialState;
   hookLog.push({primitive: 'State', stackError: new Error(), value: state});
   return [state, (action: BasicStateAction<S>) => {}];
 }
diff --git a/packages/react-devtools-core/src/backend.js b/packages/react-devtools-core/src/backend.js
index df8cb0c07ee7..f90a68d0d2f1 100644
--- a/packages/react-devtools-core/src/backend.js
+++ b/packages/react-devtools-core/src/backend.js
@@ -33,9 +33,7 @@ installHook(window);
 
 const hook: DevToolsHook = window.__REACT_DEVTOOLS_GLOBAL_HOOK__;
 
-let savedComponentFilters: Array<
-  ComponentFilter,
-> = getDefaultComponentFilters();
+let savedComponentFilters: Array<ComponentFilter> = getDefaultComponentFilters();
 
 function debug(methodName: string, ...args) {
   if (__DEBUG__) {
@@ -56,8 +54,7 @@ export function connectToDevTools(options: ?ConnectOptions) {
     websocket,
     resolveRNStyle = null,
     isAppActive = () => true,
-  } =
-    options || {};
+  } = options || {};
 
   let retryTimeoutID: TimeoutID | null = null;
 
diff --git a/packages/react-devtools-shared/src/__tests__/inspectedElementContext-test.js b/packages/react-devtools-shared/src/__tests__/inspectedElementContext-test.js
index f8691a5f39c2..82a2c5bb1930 100644
--- a/packages/react-devtools-shared/src/__tests__/inspectedElementContext-test.js
+++ b/packages/react-devtools-shared/src/__tests__/inspectedElementContext-test.js
@@ -520,9 +520,15 @@ describe('InspectedElementContext', () => {
     const exampleFunction = () => {};
     const exampleDateISO = '2019-12-31T23:42:42.000Z';
     const setShallow = new Set(['abc', 123]);
-    const mapShallow = new Map([['name', 'Brian'], ['food', 'sushi']]);
+    const mapShallow = new Map([
+      ['name', 'Brian'],
+      ['food', 'sushi'],
+    ]);
     const setOfSets = new Set([new Set(['a', 'b', 'c']), new Set([1, 2, 3])]);
-    const mapOfMaps = new Map([['first', mapShallow], ['second', mapShallow]]);
+    const mapOfMaps = new Map([
+      ['first', mapShallow],
+      ['second', mapShallow],
+    ]);
     const objectOfObjects = {
       inner: {string: 'abc', number: 123, boolean: true},
     };
diff --git a/packages/react-devtools-shared/src/__tests__/legacy/inspectElement-test.js b/packages/react-devtools-shared/src/__tests__/legacy/inspectElement-test.js
index 90b835ad235b..8c0937ab9d3f 100644
--- a/packages/react-devtools-shared/src/__tests__/legacy/inspectElement-test.js
+++ b/packages/react-devtools-shared/src/__tests__/legacy/inspectElement-test.js
@@ -151,9 +151,15 @@ describe('InspectedElementContext', () => {
     const div = document.createElement('div');
     const exampleFunction = () => {};
     const setShallow = new Set(['abc', 123]);
-    const mapShallow = new Map([['name', 'Brian'], ['food', 'sushi']]);
+    const mapShallow = new Map([
+      ['name', 'Brian'],
+      ['food', 'sushi'],
+    ]);
     const setOfSets = new Set([new Set(['a', 'b', 'c']), new Set([1, 2, 3])]);
-    const mapOfMaps = new Map([['first', mapShallow], ['second', mapShallow]]);
+    const mapOfMaps = new Map([
+      ['first', mapShallow],
+      ['second', mapShallow],
+    ]);
     const objectOfObjects = {
       inner: {string: 'abc', number: 123, boolean: true},
     };
diff --git a/packages/react-devtools-shared/src/__tests__/legacy/storeLegacy-v15-test.js b/packages/react-devtools-shared/src/__tests__/legacy/storeLegacy-v15-test.js
index ccc0d895806d..fb6778521361 100644
--- a/packages/react-devtools-shared/src/__tests__/legacy/storeLegacy-v15-test.js
+++ b/packages/react-devtools-shared/src/__tests__/legacy/storeLegacy-v15-test.js
@@ -63,7 +63,9 @@ describe('Store (legacy)', () => {
       );
       const Parent = ({count}) => (
         <div>
-          {new Array(count).fill(true).map((_, index) => <Child key={index} />)}
+          {new Array(count).fill(true).map((_, index) => (
+            <Child key={index} />
+          ))}
         </div>
       );
       const Child = () => <div>Hi!</div>;
@@ -83,7 +85,9 @@ describe('Store (legacy)', () => {
     it('should support mount and update operations for multiple roots', () => {
       const Parent = ({count}) => (
         <div>
-          {new Array(count).fill(true).map((_, index) => <Child key={index} />)}
+          {new Array(count).fill(true).map((_, index) => (
+            <Child key={index} />
+          ))}
         </div>
       );
       const Child = () => <div>Hi!</div>;
@@ -155,7 +159,9 @@ describe('Store (legacy)', () => {
       );
       const Parent = ({count}) => (
         <div>
-          {new Array(count).fill(true).map((_, index) => <Child key={index} />)}
+          {new Array(count).fill(true).map((_, index) => (
+            <Child key={index} />
+          ))}
         </div>
       );
       const Child = () => <div>Hi!</div>;
@@ -261,7 +267,9 @@ describe('Store (legacy)', () => {
     it('should support mount and update operations', () => {
       const Parent = ({count}) => (
         <div>
-          {new Array(count).fill(true).map((_, index) => <Child key={index} />)}
+          {new Array(count).fill(true).map((_, index) => (
+            <Child key={index} />
+          ))}
         </div>
       );
       const Child = () => <div>Hi!</div>;
@@ -297,7 +305,9 @@ describe('Store (legacy)', () => {
     it('should support mount and update operations for multiple roots', () => {
       const Parent = ({count}) => (
         <div>
-          {new Array(count).fill(true).map((_, index) => <Child key={index} />)}
+          {new Array(count).fill(true).map((_, index) => (
+            <Child key={index} />
+          ))}
         </div>
       );
       const Child = () => <div>Hi!</div>;
@@ -375,7 +385,9 @@ describe('Store (legacy)', () => {
       );
       const Parent = ({count}) => (
         <div>
-          {new Array(count).fill(true).map((_, index) => <Child key={index} />)}
+          {new Array(count).fill(true).map((_, index) => (
+            <Child key={index} />
+          ))}
         </div>
       );
       const Child = () => <div>Hi!</div>;
diff --git a/packages/react-devtools-shared/src/backend/views/Highlighter/index.js b/packages/react-devtools-shared/src/backend/views/Highlighter/index.js
index 2080ed4d78ca..720e74e239c0 100644
--- a/packages/react-devtools-shared/src/backend/views/Highlighter/index.js
+++ b/packages/react-devtools-shared/src/backend/views/Highlighter/index.js
@@ -103,9 +103,9 @@ export default function setupHighlighter(
 
     let nodes: ?Array<HTMLElement> = null;
     if (renderer !== null) {
-      nodes = ((renderer.findNativeNodesForFiberID(id): any): ?Array<
-        HTMLElement,
-      >);
+      nodes = ((renderer.findNativeNodesForFiberID(
+        id,
+      ): any): ?Array<HTMLElement>);
     }
 
     if (nodes != null && nodes[0] != null) {
diff --git a/packages/react-devtools-shared/src/devtools/ContextMenu/ContextMenu.js b/packages/react-devtools-shared/src/devtools/ContextMenu/ContextMenu.js
index 616cd4b5869c..891d24c0518b 100644
--- a/packages/react-devtools-shared/src/devtools/ContextMenu/ContextMenu.js
+++ b/packages/react-devtools-shared/src/devtools/ContextMenu/ContextMenu.js
@@ -74,55 +74,49 @@ export default function ContextMenu({children, id}: Props) {
     };
   }, []);
 
-  useEffect(
-    () => {
-      const showMenu = ({data, pageX, pageY}) => {
-        setState({data, isVisible: true, pageX, pageY});
-      };
-      const hideMenu = () => setState(HIDDEN_STATE);
-      return registerMenu(id, showMenu, hideMenu);
-    },
-    [id],
-  );
-
-  useLayoutEffect(
-    () => {
-      if (!state.isVisible) {
-        return;
-      }
+  useEffect(() => {
+    const showMenu = ({data, pageX, pageY}) => {
+      setState({data, isVisible: true, pageX, pageY});
+    };
+    const hideMenu = () => setState(HIDDEN_STATE);
+    return registerMenu(id, showMenu, hideMenu);
+  }, [id]);
 
-      const menu = menuRef.current;
+  useLayoutEffect(() => {
+    if (!state.isVisible) {
+      return;
+    }
 
-      const hideUnlessContains = event => {
-        if (!menu.contains(event.target)) {
-          setState(HIDDEN_STATE);
-        }
-      };
+    const menu = menuRef.current;
 
-      const hide = event => {
+    const hideUnlessContains = event => {
+      if (!menu.contains(event.target)) {
         setState(HIDDEN_STATE);
-      };
+      }
+    };
 
-      const ownerDocument = containerRef.current.ownerDocument;
-      ownerDocument.addEventListener('mousedown', hideUnlessContains);
-      ownerDocument.addEventListener('touchstart', hideUnlessContains);
-      ownerDocument.addEventListener('keydown', hideUnlessContains);
+    const hide = event => {
+      setState(HIDDEN_STATE);
+    };
 
-      const ownerWindow = ownerDocument.defaultView;
-      ownerWindow.addEventListener('resize', hide);
+    const ownerDocument = containerRef.current.ownerDocument;
+    ownerDocument.addEventListener('mousedown', hideUnlessContains);
+    ownerDocument.addEventListener('touchstart', hideUnlessContains);
+    ownerDocument.addEventListener('keydown', hideUnlessContains);
 
-      respositionToFit(menu, state.pageX, state.pageY);
+    const ownerWindow = ownerDocument.defaultView;
+    ownerWindow.addEventListener('resize', hide);
 
-      return () => {
-        ownerDocument.removeEventListener('mousedown', hideUnlessContains);
-        ownerDocument.removeEventListener('touchstart', hideUnlessContains);
-        ownerDocument.removeEventListener('keydown', hideUnlessContains);
+    respositionToFit(menu, state.pageX, state.pageY);
 
-        ownerWindow.removeEventListener('resize', hide);
-      };
-    },
-    [state],
-  );
+    return () => {
+      ownerDocument.removeEventListener('mousedown', hideUnlessContains);
+      ownerDocument.removeEventListener('touchstart', hideUnlessContains);
+      ownerDocument.removeEventListener('keydown', hideUnlessContains);
+
+      ownerWindow.removeEventListener('resize', hide);
+    };
+  }, [state]);
 
   if (!state.isVisible) {
     return <div ref={bodyAccessorRef} />;
diff --git a/packages/react-devtools-shared/src/devtools/ContextMenu/useContextMenu.js b/packages/react-devtools-shared/src/devtools/ContextMenu/useContextMenu.js
index 1237d6c08b04..1639befc76bb 100644
--- a/packages/react-devtools-shared/src/devtools/ContextMenu/useContextMenu.js
+++ b/packages/react-devtools-shared/src/devtools/ContextMenu/useContextMenu.js
@@ -23,29 +23,24 @@ export default function useContextMenu({
 |}) {
   const {showMenu} = useContext(RegistryContext);
 
-  useEffect(
-    () => {
-      if (ref.current !== null) {
-        const handleContextMenu = event => {
-          event.preventDefault();
-          event.stopPropagation();
-
-          const pageX =
-            event.pageX || (event.touches && event.touches[0].pageX);
-          const pageY =
-            event.pageY || (event.touches && event.touches[0].pageY);
-
-          showMenu({data, id, pageX, pageY});
-        };
-
-        const trigger = ref.current;
-        trigger.addEventListener('contextmenu', handleContextMenu);
-
-        return () => {
-          trigger.removeEventListener('contextmenu', handleContextMenu);
-        };
-      }
-    },
-    [data, id, showMenu],
-  );
+  useEffect(() => {
+    if (ref.current !== null) {
+      const handleContextMenu = event => {
+        event.preventDefault();
+        event.stopPropagation();
+
+        const pageX = event.pageX || (event.touches && event.touches[0].pageX);
+        const pageY = event.pageY || (event.touches && event.touches[0].pageY);
+
+        showMenu({data, id, pageX, pageY});
+      };
+
+      const trigger = ref.current;
+      trigger.addEventListener('contextmenu', handleContextMenu);
+
+      return () => {
+        trigger.removeEventListener('contextmenu', handleContextMenu);
+      };
+    }
+  }, [data, id, showMenu]);
 }
diff --git a/packages/react-devtools-shared/src/devtools/store.js b/packages/react-devtools-shared/src/devtools/store.js
index 5cb23a4d2e87..ad46873c35e9 100644
--- a/packages/react-devtools-shared/src/devtools/store.js
+++ b/packages/react-devtools-shared/src/devtools/store.js
@@ -364,9 +364,7 @@ export default class Store extends EventEmitter<{|
   getElementAtIndex(index: number): Element | null {
     if (index < 0 || index >= this.numElements) {
       console.warn(
-        `Invalid index ${index} specified; store contains ${
-          this.numElements
-        } items.`,
+        `Invalid index ${index} specified; store contains ${this.numElements} items.`,
       );
 
       return null;
diff --git a/packages/react-devtools-shared/src/devtools/utils.js b/packages/react-devtools-shared/src/devtools/utils.js
index e7e8d9137c3a..c5a07f3146fd 100644
--- a/packages/react-devtools-shared/src/devtools/utils.js
+++ b/packages/react-devtools-shared/src/devtools/utils.js
@@ -90,9 +90,7 @@ export function printStore(store: Store, includeWeight: boolean = false) {
   // Make sure the pretty-printed test align with the Store's reported number of total rows.
   if (rootWeight !== store.numElements) {
     throw Error(
-      `Inconsistent Store state. Individual root weights (${rootWeight}) do not match total weight (${
-        store.numElements
-      })`,
+      `Inconsistent Store state. Individual root weights (${rootWeight}) do not match total weight (${store.numElements})`,
     );
   }
 
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/Element.js b/packages/react-devtools-shared/src/devtools/views/Components/Element.js
index 56587112477a..9f3aaed2d69b 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/Element.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/Element.js
@@ -193,12 +193,9 @@ type DisplayNameProps = {|
 
 function DisplayName({displayName, id}: DisplayNameProps) {
   const {searchIndex, searchResults, searchText} = useContext(TreeStateContext);
-  const isSearchResult = useMemo(
-    () => {
-      return searchResults.includes(id);
-    },
-    [id, searchResults],
-  );
+  const isSearchResult = useMemo(() => {
+    return searchResults.includes(id);
+  }, [id, searchResults]);
   const isCurrentResult =
     searchIndex !== null && id === searchResults[searchIndex];
 
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/InspectHostNodesToggle.js b/packages/react-devtools-shared/src/devtools/views/Components/InspectHostNodesToggle.js
index 2bbb704e527f..774054288162 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/InspectHostNodesToggle.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/InspectHostNodesToggle.js
@@ -29,15 +29,12 @@ export default function InspectHostNodesToggle() {
     [bridge],
   );
 
-  useEffect(
-    () => {
-      const onStopInspectingNative = () => setIsInspecting(false);
-      bridge.addListener('stopInspectingNative', onStopInspectingNative);
-      return () =>
-        bridge.removeListener('stopInspectingNative', onStopInspectingNative);
-    },
-    [bridge],
-  );
+  useEffect(() => {
+    const onStopInspectingNative = () => setIsInspecting(false);
+    bridge.addListener('stopInspectingNative', onStopInspectingNative);
+    return () =>
+      bridge.removeListener('stopInspectingNative', onStopInspectingNative);
+  }, [bridge]);
 
   return (
     <Toggle
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/InspectedElementContext.js b/packages/react-devtools-shared/src/devtools/views/Components/InspectedElementContext.js
index 91303e0fcaa6..0467ffd1c6e8 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/InspectedElementContext.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/InspectedElementContext.js
@@ -162,169 +162,162 @@ function InspectedElementContextController({children}: Props) {
   ] = useState<InspectedElementFrontend | null>(null);
 
   // This effect handler invalidates the suspense cache and schedules rendering updates with React.
-  useEffect(
-    () => {
-      const onInspectedElement = (data: InspectedElementPayload) => {
-        const {id} = data;
-
-        let element;
-
-        switch (data.type) {
-          case 'no-change':
-          case 'not-found':
-            // No-op
-            break;
-          case 'hydrated-path':
-            // Merge new data into previous object and invalidate cache
-            element = store.getElementByID(id);
-            if (element !== null) {
-              if (currentlyInspectedElement != null) {
-                const value = hydrateHelper(data.value, data.path);
-                const inspectedElement = {...currentlyInspectedElement};
-
-                fillInPath(inspectedElement, data.value, data.path, value);
-
-                resource.write(element, inspectedElement);
-
-                // Schedule update with React if the curently-selected element has been invalidated.
-                if (id === selectedElementID) {
-                  setCurrentlyInspectedElement(inspectedElement);
-                }
+  useEffect(() => {
+    const onInspectedElement = (data: InspectedElementPayload) => {
+      const {id} = data;
+
+      let element;
+
+      switch (data.type) {
+        case 'no-change':
+        case 'not-found':
+          // No-op
+          break;
+        case 'hydrated-path':
+          // Merge new data into previous object and invalidate cache
+          element = store.getElementByID(id);
+          if (element !== null) {
+            if (currentlyInspectedElement != null) {
+              const value = hydrateHelper(data.value, data.path);
+              const inspectedElement = {...currentlyInspectedElement};
+
+              fillInPath(inspectedElement, data.value, data.path, value);
+
+              resource.write(element, inspectedElement);
+
+              // Schedule update with React if the curently-selected element has been invalidated.
+              if (id === selectedElementID) {
+                setCurrentlyInspectedElement(inspectedElement);
               }
             }
-            break;
-          case 'full-data':
-            const {
-              canEditFunctionProps,
-              canEditHooks,
-              canToggleSuspense,
-              canViewSource,
-              hasLegacyContext,
-              source,
-              type,
-              owners,
-              context,
-              hooks,
-              props,
-              state,
-            } = ((data.value: any): InspectedElementBackend);
-
-            const inspectedElement: InspectedElementFrontend = {
-              canEditFunctionProps,
-              canEditHooks,
-              canToggleSuspense,
-              canViewSource,
-              hasLegacyContext,
-              id,
-              source,
-              type,
-              owners:
-                owners === null
-                  ? null
-                  : owners.map(owner => {
-                      const [
-                        displayName,
-                        hocDisplayNames,
-                      ] = separateDisplayNameAndHOCs(
-                        owner.displayName,
-                        owner.type,
-                      );
-                      return {
-                        ...owner,
-                        displayName,
-                        hocDisplayNames,
-                      };
-                    }),
-              context: hydrateHelper(context),
-              hooks: hydrateHelper(hooks),
-              props: hydrateHelper(props),
-              state: hydrateHelper(state),
-            };
-
-            element = store.getElementByID(id);
-            if (element !== null) {
-              const request = inProgressRequests.get(element);
-              if (request != null) {
-                inProgressRequests.delete(element);
-                batchedUpdates(() => {
-                  request.resolveFn(inspectedElement);
-                  setCurrentlyInspectedElement(inspectedElement);
-                });
-              } else {
-                resource.write(element, inspectedElement);
-
-                // Schedule update with React if the curently-selected element has been invalidated.
-                if (id === selectedElementID) {
-                  setCurrentlyInspectedElement(inspectedElement);
-                }
+          }
+          break;
+        case 'full-data':
+          const {
+            canEditFunctionProps,
+            canEditHooks,
+            canToggleSuspense,
+            canViewSource,
+            hasLegacyContext,
+            source,
+            type,
+            owners,
+            context,
+            hooks,
+            props,
+            state,
+          } = ((data.value: any): InspectedElementBackend);
+
+          const inspectedElement: InspectedElementFrontend = {
+            canEditFunctionProps,
+            canEditHooks,
+            canToggleSuspense,
+            canViewSource,
+            hasLegacyContext,
+            id,
+            source,
+            type,
+            owners:
+              owners === null
+                ? null
+                : owners.map(owner => {
+                    const [
+                      displayName,
+                      hocDisplayNames,
+                    ] = separateDisplayNameAndHOCs(
+                      owner.displayName,
+                      owner.type,
+                    );
+                    return {
+                      ...owner,
+                      displayName,
+                      hocDisplayNames,
+                    };
+                  }),
+            context: hydrateHelper(context),
+            hooks: hydrateHelper(hooks),
+            props: hydrateHelper(props),
+            state: hydrateHelper(state),
+          };
+
+          element = store.getElementByID(id);
+          if (element !== null) {
+            const request = inProgressRequests.get(element);
+            if (request != null) {
+              inProgressRequests.delete(element);
+              batchedUpdates(() => {
+                request.resolveFn(inspectedElement);
+                setCurrentlyInspectedElement(inspectedElement);
+              });
+            } else {
+              resource.write(element, inspectedElement);
+
+              // Schedule update with React if the curently-selected element has been invalidated.
+              if (id === selectedElementID) {
+                setCurrentlyInspectedElement(inspectedElement);
               }
             }
-            break;
-          default:
-            break;
-        }
-      };
+          }
+          break;
+        default:
+          break;
+      }
+    };
 
-      bridge.addListener('inspectedElement', onInspectedElement);
-      return () =>
-        bridge.removeListener('inspectedElement', onInspectedElement);
-    },
-    [bridge, currentlyInspectedElement, selectedElementID, store],
-  );
+    bridge.addListener('inspectedElement', onInspectedElement);
+    return () => bridge.removeListener('inspectedElement', onInspectedElement);
+  }, [bridge, currentlyInspectedElement, selectedElementID, store]);
 
   // This effect handler polls for updates on the currently selected element.
-  useEffect(
-    () => {
-      if (selectedElementID === null) {
-        return () => {};
-      }
+  useEffect(() => {
+    if (selectedElementID === null) {
+      return () => {};
+    }
 
-      const rendererID = store.getRendererIDForElement(selectedElementID);
+    const rendererID = store.getRendererIDForElement(selectedElementID);
 
-      let timeoutID: TimeoutID | null = null;
+    let timeoutID: TimeoutID | null = null;
 
-      const sendRequest = () => {
-        timeoutID = null;
+    const sendRequest = () => {
+      timeoutID = null;
 
-        if (rendererID !== null) {
-          bridge.send('inspectElement', {id: selectedElementID, rendererID});
-        }
-      };
-
-      // Send the initial inspection request.
-      // We'll poll for an update in the response handler below.
-      sendRequest();
-
-      const onInspectedElement = (data: InspectedElementPayload) => {
-        // If this is the element we requested, wait a little bit and then ask for another update.
-        if (data.id === selectedElementID) {
-          switch (data.type) {
-            case 'no-change':
-            case 'full-data':
-            case 'hydrated-path':
-              if (timeoutID !== null) {
-                clearTimeout(timeoutID);
-              }
-              timeoutID = setTimeout(sendRequest, 1000);
-              break;
-            default:
-              break;
-          }
+      if (rendererID !== null) {
+        bridge.send('inspectElement', {id: selectedElementID, rendererID});
+      }
+    };
+
+    // Send the initial inspection request.
+    // We'll poll for an update in the response handler below.
+    sendRequest();
+
+    const onInspectedElement = (data: InspectedElementPayload) => {
+      // If this is the element we requested, wait a little bit and then ask for another update.
+      if (data.id === selectedElementID) {
+        switch (data.type) {
+          case 'no-change':
+          case 'full-data':
+          case 'hydrated-path':
+            if (timeoutID !== null) {
+              clearTimeout(timeoutID);
+            }
+            timeoutID = setTimeout(sendRequest, 1000);
+            break;
+          default:
+            break;
         }
-      };
+      }
+    };
 
-      bridge.addListener('inspectedElement', onInspectedElement);
+    bridge.addListener('inspectedElement', onInspectedElement);
 
-      return () => {
-        bridge.removeListener('inspectedElement', onInspectedElement);
+    return () => {
+      bridge.removeListener('inspectedElement', onInspectedElement);
 
-        if (timeoutID !== null) {
-          clearTimeout(timeoutID);
-        }
-      };
-    },
-    [bridge, selectedElementID, store],
-  );
+      if (timeoutID !== null) {
+        clearTimeout(timeoutID);
+      }
+    };
+  }, [bridge, selectedElementID, store]);
 
   const value = useMemo(
     () => ({
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/KeyValue.js b/packages/react-devtools-shared/src/devtools/views/Components/KeyValue.js
index f19907800503..e45a5488c4a7 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/KeyValue.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/KeyValue.js
@@ -55,20 +55,17 @@ export default function KeyValue({
     value[meta.inspectable] &&
     value[meta.size] !== 0;
 
-  useEffect(
-    () => {
-      if (
-        isInspectable &&
-        isOpen &&
-        !prevIsOpenRef.current &&
-        typeof inspectPath === 'function'
-      ) {
-        inspectPath(path);
-      }
-      prevIsOpenRef.current = isOpen;
-    },
-    [inspectPath, isInspectable, isOpen, path],
-  );
+  useEffect(() => {
+    if (
+      isInspectable &&
+      isOpen &&
+      !prevIsOpenRef.current &&
+      typeof inspectPath === 'function'
+    ) {
+      inspectPath(path);
+    }
+    prevIsOpenRef.current = isOpen;
+  }, [inspectPath, isInspectable, isOpen, path]);
 
   const toggleIsOpen = () => setIsOpen(prevIsOpen => !prevIsOpen);
 
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.js b/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.js
index 4adcae74fb90..03d6b47b5194 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.js
@@ -65,27 +65,24 @@ export default function AutoSizeInput({
   }, []);
 
   // Resize input any time text changes
-  useLayoutEffect(
-    () => {
-      if (hiddenDivRef.current === null) {
-        return;
-      }
+  useLayoutEffect(() => {
+    if (hiddenDivRef.current === null) {
+      return;
+    }
 
-      const scrollWidth = hiddenDivRef.current.getBoundingClientRect().width;
-      if (!scrollWidth) {
-        return;
-      }
+    const scrollWidth = hiddenDivRef.current.getBoundingClientRect().width;
+    if (!scrollWidth) {
+      return;
+    }
 
-      // Adding an extra pixel avoids a slight horizontal scroll when changing text selection/cursor.
-      // Not sure why this is, but the old DevTools did a similar thing.
-      const targetWidth = Math.ceil(scrollWidth) + 1;
+    // Adding an extra pixel avoids a slight horizontal scroll when changing text selection/cursor.
+    // Not sure why this is, but the old DevTools did a similar thing.
+    const targetWidth = Math.ceil(scrollWidth) + 1;
 
-      if (inputRef.current !== null) {
-        inputRef.current.style.width = `${targetWidth}px`;
-      }
-    },
-    [value],
-  );
+    if (inputRef.current !== null) {
+      inputRef.current.style.width = `${targetWidth}px`;
+    }
+  }, [value]);
 
   const isEmpty = value === '' || value === '""';
 
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/context.js b/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/context.js
index 52b1a285dda6..2542957f882f 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/context.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/context.js
@@ -102,94 +102,88 @@ function NativeStyleContextController({children}: Props) {
   ] = useState<StyleAndLayoutFrontend | null>(null);
 
   // This effect handler invalidates the suspense cache and schedules rendering updates with React.
-  useEffect(
-    () => {
-      const onStyleAndLayout = ({id, layout, style}: StyleAndLayoutBackend) => {
-        let element = store.getElementByID(id);
-        if (element !== null) {
-          const styleAndLayout: StyleAndLayoutFrontend = {
-            layout,
-            style,
-          };
-          const request = inProgressRequests.get(element);
-          if (request != null) {
-            inProgressRequests.delete(element);
-            batchedUpdates(() => {
-              request.resolveFn(styleAndLayout);
-              setCurrentStyleAndLayout(styleAndLayout);
-            });
-          } else {
-            resource.write(element, styleAndLayout);
-
-            // Schedule update with React if the currently-selected element has been invalidated.
-            if (id === selectedElementID) {
-              setCurrentStyleAndLayout(styleAndLayout);
-            }
+  useEffect(() => {
+    const onStyleAndLayout = ({id, layout, style}: StyleAndLayoutBackend) => {
+      let element = store.getElementByID(id);
+      if (element !== null) {
+        const styleAndLayout: StyleAndLayoutFrontend = {
+          layout,
+          style,
+        };
+        const request = inProgressRequests.get(element);
+        if (request != null) {
+          inProgressRequests.delete(element);
+          batchedUpdates(() => {
+            request.resolveFn(styleAndLayout);
+            setCurrentStyleAndLayout(styleAndLayout);
+          });
+        } else {
+          resource.write(element, styleAndLayout);
+
+          // Schedule update with React if the currently-selected element has been invalidated.
+          if (id === selectedElementID) {
+            setCurrentStyleAndLayout(styleAndLayout);
           }
         }
-      };
-
-      bridge.addListener('NativeStyleEditor_styleAndLayout', onStyleAndLayout);
-      return () =>
-        bridge.removeListener(
-          'NativeStyleEditor_styleAndLayout',
-          onStyleAndLayout,
-        );
-    },
-    [bridge, currentStyleAndLayout, selectedElementID, store],
-  );
-
-  // This effect handler polls for updates on the currently selected element.
-  useEffect(
-    () => {
-      if (selectedElementID === null) {
-        return () => {};
       }
+    };
 
-      const rendererID = store.getRendererIDForElement(selectedElementID);
-
-      let timeoutID: TimeoutID | null = null;
+    bridge.addListener('NativeStyleEditor_styleAndLayout', onStyleAndLayout);
+    return () =>
+      bridge.removeListener(
+        'NativeStyleEditor_styleAndLayout',
+        onStyleAndLayout,
+      );
+  }, [bridge, currentStyleAndLayout, selectedElementID, store]);
 
-      const sendRequest = () => {
-        timeoutID = null;
+  // This effect handler polls for updates on the currently selected element.
+  useEffect(() => {
+    if (selectedElementID === null) {
+      return () => {};
+    }
 
-        if (rendererID !== null) {
-          bridge.send('NativeStyleEditor_measure', {
-            id: selectedElementID,
-            rendererID,
-          });
-        }
-      };
+    const rendererID = store.getRendererIDForElement(selectedElementID);
 
-      // Send the initial measurement request.
-      // We'll poll for an update in the response handler below.
-      sendRequest();
+    let timeoutID: TimeoutID | null = null;
 
-      const onStyleAndLayout = ({id}: StyleAndLayoutBackend) => {
-        // If this is the element we requested, wait a little bit and then ask for another update.
-        if (id === selectedElementID) {
-          if (timeoutID !== null) {
-            clearTimeout(timeoutID);
-          }
-          timeoutID = setTimeout(sendRequest, 1000);
-        }
-      };
+    const sendRequest = () => {
+      timeoutID = null;
 
-      bridge.addListener('NativeStyleEditor_styleAndLayout', onStyleAndLayout);
+      if (rendererID !== null) {
+        bridge.send('NativeStyleEditor_measure', {
+          id: selectedElementID,
+          rendererID,
+        });
+      }
+    };
 
-      return () => {
-        bridge.removeListener(
-          'NativeStyleEditor_styleAndLayout',
-          onStyleAndLayout,
-        );
+    // Send the initial measurement request.
+    // We'll poll for an update in the response handler below.
+    sendRequest();
 
+    const onStyleAndLayout = ({id}: StyleAndLayoutBackend) => {
+      // If this is the element we requested, wait a little bit and then ask for another update.
+      if (id === selectedElementID) {
         if (timeoutID !== null) {
           clearTimeout(timeoutID);
         }
-      };
-    },
-    [bridge, selectedElementID, store],
-  );
+        timeoutID = setTimeout(sendRequest, 1000);
+      }
+    };
+
+    bridge.addListener('NativeStyleEditor_styleAndLayout', onStyleAndLayout);
+
+    return () => {
+      bridge.removeListener(
+        'NativeStyleEditor_styleAndLayout',
+        onStyleAndLayout,
+      );
+
+      if (timeoutID !== null) {
+        clearTimeout(timeoutID);
+      }
+    };
+  }, [bridge, selectedElementID, store]);
 
   const value = useMemo(
     () => ({getStyleAndLayout}),
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/OwnersListContext.js b/packages/react-devtools-shared/src/devtools/views/Components/OwnersListContext.js
index c1faab02da1e..aae74b4f84b5 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/OwnersListContext.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/OwnersListContext.js
@@ -73,60 +73,51 @@ function OwnersListContextController({children}: Props) {
     [store],
   );
 
-  useEffect(
-    () => {
-      const onOwnersList = (ownersList: OwnersList) => {
-        const id = ownersList.id;
-
-        const element = store.getElementByID(id);
-        if (element !== null) {
-          const request = inProgressRequests.get(element);
-          if (request != null) {
-            inProgressRequests.delete(element);
-
-            request.resolveFn(
-              ownersList.owners === null
-                ? null
-                : ownersList.owners.map(owner => {
-                    const [
-                      displayNameWithoutHOCs,
-                      hocDisplayNames,
-                    ] = separateDisplayNameAndHOCs(
-                      owner.displayName,
-                      owner.type,
-                    );
-
-                    return {
-                      ...owner,
-                      displayName: displayNameWithoutHOCs,
-                      hocDisplayNames,
-                    };
-                  }),
-            );
-          }
+  useEffect(() => {
+    const onOwnersList = (ownersList: OwnersList) => {
+      const id = ownersList.id;
+
+      const element = store.getElementByID(id);
+      if (element !== null) {
+        const request = inProgressRequests.get(element);
+        if (request != null) {
+          inProgressRequests.delete(element);
+
+          request.resolveFn(
+            ownersList.owners === null
+              ? null
+              : ownersList.owners.map(owner => {
+                  const [
+                    displayNameWithoutHOCs,
+                    hocDisplayNames,
+                  ] = separateDisplayNameAndHOCs(owner.displayName, owner.type);
+
+                  return {
+                    ...owner,
+                    displayName: displayNameWithoutHOCs,
+                    hocDisplayNames,
+                  };
+                }),
+          );
         }
-      };
+      }
+    };
 
-      bridge.addListener('ownersList', onOwnersList);
-      return () => bridge.removeListener('ownersList', onOwnersList);
-    },
-    [bridge, store],
-  );
+    bridge.addListener('ownersList', onOwnersList);
+    return () => bridge.removeListener('ownersList', onOwnersList);
+  }, [bridge, store]);
 
   // This effect requests an updated owners list any time the selected owner changes
-  useEffect(
-    () => {
-      if (ownerID !== null) {
-        const rendererID = store.getRendererIDForElement(ownerID);
-        if (rendererID !== null) {
-          bridge.send('getOwnersList', {id: ownerID, rendererID});
-        }
+  useEffect(() => {
+    if (ownerID !== null) {
+      const rendererID = store.getRendererIDForElement(ownerID);
+      if (rendererID !== null) {
+        bridge.send('getOwnersList', {id: ownerID, rendererID});
       }
+    }
 
-      return () => {};
-    },
-    [bridge, ownerID, store],
-  );
+    return () => {};
+  }, [bridge, ownerID, store]);
 
   return (
     <OwnersListContext.Provider value={read}>
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/OwnersStack.js b/packages/react-devtools-shared/src/devtools/views/Components/OwnersStack.js
index 669a12e349d3..fa627299fb80 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/OwnersStack.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/OwnersStack.js
@@ -128,30 +128,27 @@ export default function OwnerStack() {
 
   const selectedOwner = owners[selectedIndex];
 
-  useLayoutEffect(
-    () => {
-      // If we're already overflowing, then we don't need to re-measure items.
-      // That's because once the owners stack is open, it can only get larger (by driling in).
-      // A totally new stack can only be reached by exiting this mode and re-entering it.
-      if (elementsBarRef.current === null || isOverflowing) {
-        return () => {};
-      }
-
-      let totalWidth = 0;
-      for (let i = 0; i < owners.length; i++) {
-        const element = elementsBarRef.current.children[i];
-        const computedStyle = getComputedStyle(element);
-
-        totalWidth +=
-          element.offsetWidth +
-          parseInt(computedStyle.marginLeft, 10) +
-          parseInt(computedStyle.marginRight, 10);
-      }
-
-      setElementsTotalWidth(totalWidth);
-    },
-    [elementsBarRef, isOverflowing, owners.length],
-  );
+  useLayoutEffect(() => {
+    // If we're already overflowing, then we don't need to re-measure items.
+    // That's because once the owners stack is open, it can only get larger (by driling in).
+    // A totally new stack can only be reached by exiting this mode and re-entering it.
+    if (elementsBarRef.current === null || isOverflowing) {
+      return () => {};
+    }
+
+    let totalWidth = 0;
+    for (let i = 0; i < owners.length; i++) {
+      const element = elementsBarRef.current.children[i];
+      const computedStyle = getComputedStyle(element);
+
+      totalWidth +=
+        element.offsetWidth +
+        parseInt(computedStyle.marginLeft, 10) +
+        parseInt(computedStyle.marginRight, 10);
+    }
+
+    setElementsTotalWidth(totalWidth);
+  }, [elementsBarRef, isOverflowing, owners.length]);
 
   return (
     <div className={styles.OwnerStack}>
@@ -255,14 +252,11 @@ function ElementView({isSelected, owner, selectOwner}: ElementViewProps) {
   const {displayName, hocDisplayNames, type} = owner;
   const isInStore = store.containsElement(owner.id);
 
-  const handleChange = useCallback(
-    () => {
-      if (isInStore) {
-        selectOwner(owner);
-      }
-    },
-    [isInStore, selectOwner, owner],
-  );
+  const handleChange = useCallback(() => {
+    if (isInStore) {
+      selectOwner(owner);
+    }
+  }, [isInStore, selectOwner, owner]);
 
   return (
     <Toggle
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/SearchInput.js b/packages/react-devtools-shared/src/devtools/views/Components/SearchInput.js
index 5a3ce688bc3a..ded2f2ef06f3 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/SearchInput.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/SearchInput.js
@@ -66,34 +66,30 @@ export default function SearchInput(props: Props) {
   );
 
   // Auto-focus search input
-  useEffect(
-    () => {
-      if (inputRef.current === null) {
-        return () => {};
-      }
+  useEffect(() => {
+    if (inputRef.current === null) {
+      return () => {};
+    }
 
-      const handleWindowKey = (event: KeyboardEvent) => {
-        const {key, metaKey} = event;
-        if (key === 'f' && metaKey) {
-          if (inputRef.current !== null) {
-            inputRef.current.focus();
-            event.preventDefault();
-            event.stopPropagation();
-          }
+    const handleWindowKey = (event: KeyboardEvent) => {
+      const {key, metaKey} = event;
+      if (key === 'f' && metaKey) {
+        if (inputRef.current !== null) {
+          inputRef.current.focus();
+          event.preventDefault();
+          event.stopPropagation();
         }
-      };
+      }
+    };
 
-      // It's important to listen to the ownerDocument to support the browser extension.
-      // Here we use portals to render individual tabs (e.g. Profiler),
-      // and the root document might belong to a different window.
-      const ownerDocument = inputRef.current.ownerDocument;
-      ownerDocument.addEventListener('keydown', handleWindowKey);
+    // It's important to listen to the ownerDocument to support the browser extension.
+    // Here we use portals to render individual tabs (e.g. Profiler),
+    // and the root document might belong to a different window.
+    const ownerDocument = inputRef.current.ownerDocument;
+    ownerDocument.addEventListener('keydown', handleWindowKey);
 
-      return () =>
-        ownerDocument.removeEventListener('keydown', handleWindowKey);
-    },
-    [inputRef],
-  );
+    return () => ownerDocument.removeEventListener('keydown', handleWindowKey);
+  }, [inputRef]);
 
   return (
     <div className={styles.SearchInput}>
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/SelectedElement.js b/packages/react-devtools-shared/src/devtools/views/Components/SelectedElement.js
index 055378efca79..432f5a543612 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/SelectedElement.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/SelectedElement.js
@@ -72,51 +72,42 @@ export default function SelectedElement(_: Props) {
   const inspectedElement =
     inspectedElementID != null ? getInspectedElement(inspectedElementID) : null;
 
-  const highlightElement = useCallback(
-    () => {
-      if (element !== null && inspectedElementID !== null) {
-        const rendererID = store.getRendererIDForElement(inspectedElementID);
-        if (rendererID !== null) {
-          bridge.send('highlightNativeElement', {
-            displayName: element.displayName,
-            hideAfterTimeout: true,
-            id: inspectedElementID,
-            openNativeElementsPanel: true,
-            rendererID,
-            scrollIntoView: true,
-          });
-        }
-      }
-    },
-    [bridge, element, inspectedElementID, store],
-  );
-
-  const logElement = useCallback(
-    () => {
-      if (inspectedElementID !== null) {
-        const rendererID = store.getRendererIDForElement(inspectedElementID);
-        if (rendererID !== null) {
-          bridge.send('logElementToConsole', {
-            id: inspectedElementID,
-            rendererID,
-          });
-        }
+  const highlightElement = useCallback(() => {
+    if (element !== null && inspectedElementID !== null) {
+      const rendererID = store.getRendererIDForElement(inspectedElementID);
+      if (rendererID !== null) {
+        bridge.send('highlightNativeElement', {
+          displayName: element.displayName,
+          hideAfterTimeout: true,
+          id: inspectedElementID,
+          openNativeElementsPanel: true,
+          rendererID,
+          scrollIntoView: true,
+        });
       }
-    },
-    [bridge, inspectedElementID, store],
-  );
+    }
+  }, [bridge, element, inspectedElementID, store]);
 
-  const viewSource = useCallback(
-    () => {
-      if (viewElementSourceFunction != null && inspectedElement !== null) {
-        viewElementSourceFunction(
-          inspectedElement.id,
-          ((inspectedElement: any): InspectedElement),
-        );
+  const logElement = useCallback(() => {
+    if (inspectedElementID !== null) {
+      const rendererID = store.getRendererIDForElement(inspectedElementID);
+      if (rendererID !== null) {
+        bridge.send('logElementToConsole', {
+          id: inspectedElementID,
+          rendererID,
+        });
       }
-    },
-    [inspectedElement, viewElementSourceFunction],
-  );
+    }
+  }, [bridge, inspectedElementID, store]);
+
+  const viewSource = useCallback(() => {
+    if (viewElementSourceFunction != null && inspectedElement !== null) {
+      viewElementSourceFunction(
+        inspectedElement.id,
+        ((inspectedElement: any): InspectedElement),
+      );
+    }
+  }, [inspectedElement, viewElementSourceFunction]);
 
   // In some cases (e.g. FB internal usage) the standalone shell might not be able to view the source.
   // To detect this case, we defer to an injected helper function (if present).
@@ -137,56 +128,53 @@ export default function SelectedElement(_: Props) {
     inspectedElement != null && inspectedElement.canToggleSuspense;
 
   // TODO (suspense toggle) Would be nice to eventually use a two setState pattern here as well.
-  const toggleSuspended = useCallback(
-    () => {
-      let nearestSuspenseElement = null;
-      let currentElement = element;
-      while (currentElement !== null) {
-        if (currentElement.type === ElementTypeSuspense) {
-          nearestSuspenseElement = currentElement;
-          break;
-        } else if (currentElement.parentID > 0) {
-          currentElement = store.getElementByID(currentElement.parentID);
-        } else {
-          currentElement = null;
-        }
+  const toggleSuspended = useCallback(() => {
+    let nearestSuspenseElement = null;
+    let currentElement = element;
+    while (currentElement !== null) {
+      if (currentElement.type === ElementTypeSuspense) {
+        nearestSuspenseElement = currentElement;
+        break;
+      } else if (currentElement.parentID > 0) {
+        currentElement = store.getElementByID(currentElement.parentID);
+      } else {
+        currentElement = null;
       }
+    }
 
-      // If we didn't find a Suspense ancestor, we can't suspend.
-      // Instead we can show a warning to the user.
-      if (nearestSuspenseElement === null) {
-        modalDialogDispatch({
-          type: 'SHOW',
-          content: <CannotSuspendWarningMessage />,
+    // If we didn't find a Suspense ancestor, we can't suspend.
+    // Instead we can show a warning to the user.
+    if (nearestSuspenseElement === null) {
+      modalDialogDispatch({
+        type: 'SHOW',
+        content: <CannotSuspendWarningMessage />,
+      });
+    } else {
+      const nearestSuspenseElementID = nearestSuspenseElement.id;
+
+      // If we're suspending from an arbitary (non-Suspense) component, select the nearest Suspense element in the Tree.
+      // This way when the fallback UI is shown and the current element is hidden, something meaningful is selected.
+      if (nearestSuspenseElement !== element) {
+        dispatch({
+          type: 'SELECT_ELEMENT_BY_ID',
+          payload: nearestSuspenseElementID,
         });
-      } else {
-        const nearestSuspenseElementID = nearestSuspenseElement.id;
-
-        // If we're suspending from an arbitary (non-Suspense) component, select the nearest Suspense element in the Tree.
-        // This way when the fallback UI is shown and the current element is hidden, something meaningful is selected.
-        if (nearestSuspenseElement !== element) {
-          dispatch({
-            type: 'SELECT_ELEMENT_BY_ID',
-            payload: nearestSuspenseElementID,
-          });
-        }
-
-        const rendererID = store.getRendererIDForElement(
-          nearestSuspenseElementID,
-        );
-
-        // Toggle suspended
-        if (rendererID !== null) {
-          bridge.send('overrideSuspense', {
-            id: nearestSuspenseElementID,
-            rendererID,
-            forceFallback: !isSuspended,
-          });
-        }
       }
-    },
-    [bridge, dispatch, element, isSuspended, modalDialogDispatch, store],
-  );
+
+      const rendererID = store.getRendererIDForElement(
+        nearestSuspenseElementID,
+      );
+
+      // Toggle suspended
+      if (rendererID !== null) {
+        bridge.send('overrideSuspense', {
+          id: nearestSuspenseElementID,
+          rendererID,
+          forceFallback: !isSuspended,
+        });
+      }
+    }
+  }, [bridge, dispatch, element, isSuspended, modalDialogDispatch, store]);
 
   if (element === null) {
     return (
@@ -417,23 +405,21 @@ function InspectedElementView({
 
         <NativeStyleEditor />
 
-        {ownerID === null &&
-          owners !== null &&
-          owners.length > 0 && (
-            <div className={styles.Owners}>
-              <div className={styles.OwnersHeader}>rendered by</div>
-              {owners.map(owner => (
-                <OwnerView
-                  key={owner.id}
-                  displayName={owner.displayName || 'Anonymous'}
-                  hocDisplayNames={owner.hocDisplayNames}
-                  id={owner.id}
-                  isInStore={store.containsElement(owner.id)}
-                  type={owner.type}
-                />
-              ))}
-            </div>
-          )}
+        {ownerID === null && owners !== null && owners.length > 0 && (
+          <div className={styles.Owners}>
+            <div className={styles.OwnersHeader}>rendered by</div>
+            {owners.map(owner => (
+              <OwnerView
+                key={owner.id}
+                displayName={owner.displayName || 'Anonymous'}
+                hocDisplayNames={owner.hocDisplayNames}
+                id={owner.id}
+                isInStore={store.containsElement(owner.id)}
+                type={owner.type}
+              />
+            ))}
+          </div>
+        )}
 
         {source !== null && (
           <Source fileName={source.fileName} lineNumber={source.lineNumber} />
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/Tree.js b/packages/react-devtools-shared/src/devtools/views/Components/Tree.js
index 2c65df8fa199..fe03d443ffac 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/Tree.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/Tree.js
@@ -89,22 +89,16 @@ export default function Tree(props: Props) {
 
   // Picking an element in the inspector should put focus into the tree.
   // This ensures that keyboard navigation works right after picking a node.
-  useEffect(
-    () => {
-      function handleStopInspectingNative(didSelectNode) {
-        if (didSelectNode && focusTargetRef.current !== null) {
-          focusTargetRef.current.focus();
-        }
+  useEffect(() => {
+    function handleStopInspectingNative(didSelectNode) {
+      if (didSelectNode && focusTargetRef.current !== null) {
+        focusTargetRef.current.focus();
       }
-      bridge.addListener('stopInspectingNative', handleStopInspectingNative);
-      return () =>
-        bridge.removeListener(
-          'stopInspectingNative',
-          handleStopInspectingNative,
-        );
-    },
-    [bridge],
-  );
+    }
+    bridge.addListener('stopInspectingNative', handleStopInspectingNative);
+    return () =>
+      bridge.removeListener('stopInspectingNative', handleStopInspectingNative);
+  }, [bridge]);
 
   // This ref is passed down the context to elements.
   // It lets them avoid autoscrolling to the same item many times
@@ -112,93 +106,87 @@ export default function Tree(props: Props) {
   const lastScrolledIDRef = useRef<number | null>(null);
 
   // Navigate the tree with up/down arrow keys.
-  useEffect(
-    () => {
-      if (treeRef.current === null) {
-        return () => {};
+  useEffect(() => {
+    if (treeRef.current === null) {
+      return () => {};
+    }
+
+    const handleKeyDown = (event: KeyboardEvent) => {
+      if ((event: any).target.tagName === 'INPUT' || event.defaultPrevented) {
+        return;
       }
 
-      const handleKeyDown = (event: KeyboardEvent) => {
-        if ((event: any).target.tagName === 'INPUT' || event.defaultPrevented) {
-          return;
-        }
-
-        // TODO We should ignore arrow keys if the focus is outside of DevTools.
-        // Otherwise the inline (embedded) DevTools might change selection unexpectedly,
-        // e.g. when a text input or a select has focus.
-
-        let element;
-        switch (event.key) {
-          case 'ArrowDown':
-            event.preventDefault();
-            dispatch({type: 'SELECT_NEXT_ELEMENT_IN_TREE'});
-            break;
-          case 'ArrowLeft':
-            event.preventDefault();
-            element =
-              selectedElementID !== null
-                ? store.getElementByID(selectedElementID)
-                : null;
-            if (element !== null) {
-              if (element.children.length > 0 && !element.isCollapsed) {
-                store.toggleIsCollapsed(element.id, true);
-              } else {
-                dispatch({type: 'SELECT_PARENT_ELEMENT_IN_TREE'});
-              }
+      // TODO We should ignore arrow keys if the focus is outside of DevTools.
+      // Otherwise the inline (embedded) DevTools might change selection unexpectedly,
+      // e.g. when a text input or a select has focus.
+
+      let element;
+      switch (event.key) {
+        case 'ArrowDown':
+          event.preventDefault();
+          dispatch({type: 'SELECT_NEXT_ELEMENT_IN_TREE'});
+          break;
+        case 'ArrowLeft':
+          event.preventDefault();
+          element =
+            selectedElementID !== null
+              ? store.getElementByID(selectedElementID)
+              : null;
+          if (element !== null) {
+            if (element.children.length > 0 && !element.isCollapsed) {
+              store.toggleIsCollapsed(element.id, true);
+            } else {
+              dispatch({type: 'SELECT_PARENT_ELEMENT_IN_TREE'});
             }
-            break;
-          case 'ArrowRight':
-            event.preventDefault();
-            element =
-              selectedElementID !== null
-                ? store.getElementByID(selectedElementID)
-                : null;
-            if (element !== null) {
-              if (element.children.length > 0 && element.isCollapsed) {
-                store.toggleIsCollapsed(element.id, false);
-              } else {
-                dispatch({type: 'SELECT_CHILD_ELEMENT_IN_TREE'});
-              }
+          }
+          break;
+        case 'ArrowRight':
+          event.preventDefault();
+          element =
+            selectedElementID !== null
+              ? store.getElementByID(selectedElementID)
+              : null;
+          if (element !== null) {
+            if (element.children.length > 0 && element.isCollapsed) {
+              store.toggleIsCollapsed(element.id, false);
+            } else {
+              dispatch({type: 'SELECT_CHILD_ELEMENT_IN_TREE'});
             }
-            break;
-          case 'ArrowUp':
-            event.preventDefault();
-            dispatch({type: 'SELECT_PREVIOUS_ELEMENT_IN_TREE'});
-            break;
-          default:
-            return;
-        }
-        setIsNavigatingWithKeyboard(true);
-      };
-
-      // It's important to listen to the ownerDocument to support the browser extension.
-      // Here we use portals to render individual tabs (e.g. Profiler),
-      // and the root document might belong to a different window.
-      const ownerDocument = treeRef.current.ownerDocument;
-      ownerDocument.addEventListener('keydown', handleKeyDown);
-
-      return () => {
-        ownerDocument.removeEventListener('keydown', handleKeyDown);
-      };
-    },
-    [dispatch, selectedElementID, store],
-  );
+          }
+          break;
+        case 'ArrowUp':
+          event.preventDefault();
+          dispatch({type: 'SELECT_PREVIOUS_ELEMENT_IN_TREE'});
+          break;
+        default:
+          return;
+      }
+      setIsNavigatingWithKeyboard(true);
+    };
+
+    // It's important to listen to the ownerDocument to support the browser extension.
+    // Here we use portals to render individual tabs (e.g. Profiler),
+    // and the root document might belong to a different window.
+    const ownerDocument = treeRef.current.ownerDocument;
+    ownerDocument.addEventListener('keydown', handleKeyDown);
+
+    return () => {
+      ownerDocument.removeEventListener('keydown', handleKeyDown);
+    };
+  }, [dispatch, selectedElementID, store]);
 
   // Focus management.
   const handleBlur = useCallback(() => setTreeFocused(false), []);
-  const handleFocus = useCallback(
-    () => {
-      setTreeFocused(true);
-
-      if (selectedElementIndex === null && numElements > 0) {
-        dispatch({
-          type: 'SELECT_ELEMENT_AT_INDEX',
-          payload: 0,
-        });
-      }
-    },
-    [dispatch, numElements, selectedElementIndex],
-  );
+  const handleFocus = useCallback(() => {
+    setTreeFocused(true);
+
+    if (selectedElementIndex === null && numElements > 0) {
+      dispatch({
+        type: 'SELECT_ELEMENT_AT_INDEX',
+        payload: 0,
+      });
+    }
+  }, [dispatch, numElements, selectedElementIndex]);
 
   const handleKeyPress = useCallback(
     event => {
@@ -237,34 +225,31 @@ export default function Tree(props: Props) {
   // If we switch the selected element while using the keyboard,
   // start highlighting it in the DOM instead of the last hovered node.
   const searchRef = useRef({searchIndex, searchResults});
-  useEffect(
-    () => {
-      let didSelectNewSearchResult = false;
-      if (
-        searchRef.current.searchIndex !== searchIndex ||
-        searchRef.current.searchResults !== searchResults
-      ) {
-        searchRef.current.searchIndex = searchIndex;
-        searchRef.current.searchResults = searchResults;
-        didSelectNewSearchResult = true;
-      }
-      if (isNavigatingWithKeyboard || didSelectNewSearchResult) {
-        if (selectedElementID !== null) {
-          highlightNativeElement(selectedElementID);
-        } else {
-          bridge.send('clearNativeElementHighlight');
-        }
+  useEffect(() => {
+    let didSelectNewSearchResult = false;
+    if (
+      searchRef.current.searchIndex !== searchIndex ||
+      searchRef.current.searchResults !== searchResults
+    ) {
+      searchRef.current.searchIndex = searchIndex;
+      searchRef.current.searchResults = searchResults;
+      didSelectNewSearchResult = true;
+    }
+    if (isNavigatingWithKeyboard || didSelectNewSearchResult) {
+      if (selectedElementID !== null) {
+        highlightNativeElement(selectedElementID);
+      } else {
+        bridge.send('clearNativeElementHighlight');
       }
-    },
-    [
-      bridge,
-      isNavigatingWithKeyboard,
-      highlightNativeElement,
-      searchIndex,
-      searchResults,
-      selectedElementID,
-    ],
-  );
+    }
+  }, [
+    bridge,
+    isNavigatingWithKeyboard,
+    highlightNativeElement,
+    searchIndex,
+    searchResults,
+    selectedElementID,
+  ]);
 
   // Highlight last hovered element.
   const handleElementMouseEnter = useCallback(
@@ -284,12 +269,9 @@ export default function Tree(props: Props) {
     setIsNavigatingWithKeyboard(false);
   }, []);
 
-  const handleMouseLeave = useCallback(
-    () => {
-      bridge.send('clearNativeElementHighlight');
-    },
-    [bridge],
-  );
+  const handleMouseLeave = useCallback(() => {
+    bridge.send('clearNativeElementHighlight');
+  }, [bridge]);
 
   // Let react-window know to re-render any time the underlying tree data changes.
   // This includes the owner context, since it controls a filtered view of the tree.
diff --git a/packages/react-devtools-shared/src/devtools/views/Components/TreeContext.js b/packages/react-devtools-shared/src/devtools/views/Components/TreeContext.js
index 54738bf3d4b7..bdd1fc04cfe5 100644
--- a/packages/react-devtools-shared/src/devtools/views/Components/TreeContext.js
+++ b/packages/react-devtools-shared/src/devtools/views/Components/TreeContext.js
@@ -718,65 +718,56 @@ function TreeContextController({
   );
 
   // Listen for host element selections.
-  useEffect(
-    () => {
-      const handleSelectFiber = (id: number) =>
-        dispatchWrapper({type: 'SELECT_ELEMENT_BY_ID', payload: id});
-      bridge.addListener('selectFiber', handleSelectFiber);
-      return () => bridge.removeListener('selectFiber', handleSelectFiber);
-    },
-    [bridge, dispatchWrapper],
-  );
+  useEffect(() => {
+    const handleSelectFiber = (id: number) =>
+      dispatchWrapper({type: 'SELECT_ELEMENT_BY_ID', payload: id});
+    bridge.addListener('selectFiber', handleSelectFiber);
+    return () => bridge.removeListener('selectFiber', handleSelectFiber);
+  }, [bridge, dispatchWrapper]);
 
   // If a newly-selected search result or inspection selection is inside of a collapsed subtree, auto expand it.
   // This needs to be a layout effect to avoid temporarily flashing an incorrect selection.
   const prevSelectedElementID = useRef<number | null>(null);
-  useLayoutEffect(
-    () => {
-      if (state.selectedElementID !== prevSelectedElementID.current) {
-        prevSelectedElementID.current = state.selectedElementID;
-
-        if (state.selectedElementID !== null) {
-          let element = store.getElementByID(state.selectedElementID);
-          if (element !== null && element.parentID > 0) {
-            store.toggleIsCollapsed(element.parentID, false);
-          }
+  useLayoutEffect(() => {
+    if (state.selectedElementID !== prevSelectedElementID.current) {
+      prevSelectedElementID.current = state.selectedElementID;
+
+      if (state.selectedElementID !== null) {
+        let element = store.getElementByID(state.selectedElementID);
+        if (element !== null && element.parentID > 0) {
+          store.toggleIsCollapsed(element.parentID, false);
         }
       }
-    },
-    [state.selectedElementID, store],
-  );
+    }
+  }, [state.selectedElementID, store]);
 
   // Mutations to the underlying tree may impact this context (e.g. search results, selection state).
-  useEffect(
-    () => {
-      const handleStoreMutated = ([addedElementIDs, removedElementIDs]: [
-        Array<number>,
-        Map<number, number>,
-      ]) => {
-        dispatchWrapper({
-          type: 'HANDLE_STORE_MUTATION',
-          payload: [addedElementIDs, removedElementIDs],
-        });
-      };
-
-      // Since this is a passive effect, the tree may have been mutated before our initial subscription.
-      if (store.revision !== initialRevision) {
-        // At the moment, we can treat this as a mutation.
-        // We don't know which Elements were newly added/removed, but that should be okay in this case.
-        // It would only impact the search state, which is unlikely to exist yet at this point.
-        dispatchWrapper({
-          type: 'HANDLE_STORE_MUTATION',
-          payload: [[], new Map()],
-        });
-      }
+  useEffect(() => {
+    const handleStoreMutated = ([addedElementIDs, removedElementIDs]: [
+      Array<number>,
+      Map<number, number>,
+    ]) => {
+      dispatchWrapper({
+        type: 'HANDLE_STORE_MUTATION',
+        payload: [addedElementIDs, removedElementIDs],
+      });
+    };
+
+    // Since this is a passive effect, the tree may have been mutated before our initial subscription.
+    if (store.revision !== initialRevision) {
+      // At the moment, we can treat this as a mutation.
+      // We don't know which Elements were newly added/removed, but that should be okay in this case.
+      // It would only impact the search state, which is unlikely to exist yet at this point.
+      dispatchWrapper({
+        type: 'HANDLE_STORE_MUTATION',
+        payload: [[], new Map()],
+      });
+    }
 
-      store.addListener('mutated', handleStoreMutated);
+    store.addListener('mutated', handleStoreMutated);
 
-      return () => store.removeListener('mutated', handleStoreMutated);
-    },
-    [dispatchWrapper, initialRevision, store],
-  );
+    return () => store.removeListener('mutated', handleStoreMutated);
+  }, [dispatchWrapper, initialRevision, store]);
 
   return (
     <TreeStateContext.Provider value={state}>
diff --git a/packages/react-devtools-shared/src/devtools/views/DevTools.js b/packages/react-devtools-shared/src/devtools/views/DevTools.js
index f05cdd54e7c1..3d19c9390e68 100644
--- a/packages/react-devtools-shared/src/devtools/views/DevTools.js
+++ b/packages/react-devtools-shared/src/devtools/views/DevTools.js
@@ -126,18 +126,15 @@ export default function DevTools({
     [enabledInspectedElementContextMenu, viewAttributeSourceFunction],
   );
 
-  useEffect(
-    () => {
-      return () => {
-        try {
-          bridge.shutdown();
-        } catch (error) {
-          // Attempting to use a disconnected port.
-        }
-      };
-    },
-    [bridge],
-  );
+  useEffect(() => {
+    return () => {
+      try {
+        bridge.shutdown();
+      } catch (error) {
+        // Attempting to use a disconnected port.
+      }
+    };
+  }, [bridge]);
 
   return (
     <BridgeContext.Provider value={bridge}>
diff --git a/packages/react-devtools-shared/src/devtools/views/ModalDialog.js b/packages/react-devtools-shared/src/devtools/views/ModalDialog.js
index bf9eada1efdf..34aa4b85257e 100644
--- a/packages/react-devtools-shared/src/devtools/views/ModalDialog.js
+++ b/packages/react-devtools-shared/src/devtools/views/ModalDialog.js
@@ -111,14 +111,11 @@ function ModalDialogImpl(_: {||}) {
   const {canBeDismissed, content, dispatch, title} = useContext(
     ModalDialogContext,
   );
-  const dismissModal = useCallback(
-    () => {
-      if (canBeDismissed) {
-        dispatch({type: 'HIDE'});
-      }
-    },
-    [canBeDismissed, dispatch],
-  );
+  const dismissModal = useCallback(() => {
+    if (canBeDismissed) {
+      dispatch({type: 'HIDE'});
+    }
+  }, [canBeDismissed, dispatch]);
   const dialogRef = useRef<HTMLDivElement | null>(null);
 
   // It's important to trap click events within the dialog,
diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraph.js b/packages/react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraph.js
index bade1502241d..f58d18d5c5c8 100644
--- a/packages/react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraph.js
+++ b/packages/react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraph.js
@@ -94,32 +94,26 @@ function CommitFlamegraph({chartData, commitTree, height, width}: Props) {
   const {lineHeight} = useContext(SettingsContext);
   const {selectFiber, selectedFiberID} = useContext(ProfilerContext);
 
-  const selectedChartNodeIndex = useMemo<number>(
-    () => {
-      if (selectedFiberID === null) {
-        return 0;
-      }
-      // The selected node might not be in the tree for this commit,
-      // so it's important that we have a fallback plan.
-      const depth = chartData.idToDepthMap.get(selectedFiberID);
-      return depth !== undefined ? depth - 1 : 0;
-    },
-    [chartData, selectedFiberID],
-  );
-
-  const selectedChartNode = useMemo(
-    () => {
-      if (selectedFiberID !== null) {
-        return (
-          chartData.rows[selectedChartNodeIndex].find(
-            chartNode => chartNode.id === selectedFiberID,
-          ) || null
-        );
-      }
-      return null;
-    },
-    [chartData, selectedFiberID, selectedChartNodeIndex],
-  );
+  const selectedChartNodeIndex = useMemo<number>(() => {
+    if (selectedFiberID === null) {
+      return 0;
+    }
+    // The selected node might not be in the tree for this commit,
+    // so it's important that we have a fallback plan.
+    const depth = chartData.idToDepthMap.get(selectedFiberID);
+    return depth !== undefined ? depth - 1 : 0;
+  }, [chartData, selectedFiberID]);
+
+  const selectedChartNode = useMemo(() => {
+    if (selectedFiberID !== null) {
+      return (
+        chartData.rows[selectedChartNodeIndex].find(
+          chartNode => chartNode.id === selectedFiberID,
+        ) || null
+      );
+    }
+    return null;
+  }, [chartData, selectedFiberID, selectedChartNodeIndex]);
 
   const itemData = useMemo<ItemData>(
     () => ({
diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder.js b/packages/react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder.js
index 085ec2a6dd2d..e122465c617e 100644
--- a/packages/react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder.js
+++ b/packages/react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder.js
@@ -51,9 +51,9 @@ export function getCommitTree({
     rootToCommitTreeMap.set(rootID, []);
   }
 
-  const commitTrees = ((rootToCommitTreeMap.get(rootID): any): Array<
-    CommitTree,
-  >);
+  const commitTrees = ((rootToCommitTreeMap.get(
+    rootID,
+  ): any): Array<CommitTree>);
 
   if (commitIndex < commitTrees.length) {
     return commitTrees[commitIndex];
diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/InteractionListItem.js b/packages/react-devtools-shared/src/devtools/views/Profiler/InteractionListItem.js
index 0e38808bb18c..3bc6bd1f4005 100644
--- a/packages/react-devtools-shared/src/devtools/views/Profiler/InteractionListItem.js
+++ b/packages/react-devtools-shared/src/devtools/views/Profiler/InteractionListItem.js
@@ -41,12 +41,9 @@ function InteractionListItem({data: itemData, index, style}: Props) {
     throw Error(`Could not find interaction #${index}`);
   }
 
-  const handleClick = useCallback(
-    () => {
-      selectInteraction(interaction.id);
-    },
-    [interaction, selectInteraction],
-  );
+  const handleClick = useCallback(() => {
+    selectInteraction(interaction.id);
+  }, [interaction, selectInteraction]);
 
   const commits = interactionCommits.get(interaction.id) || [];
 
diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/Interactions.js b/packages/react-devtools-shared/src/devtools/views/Profiler/Interactions.js
index e3b9b2a8e77f..ffbd07f8863b 100644
--- a/packages/react-devtools-shared/src/devtools/views/Profiler/Interactions.js
+++ b/packages/react-devtools-shared/src/devtools/views/Profiler/Interactions.js
@@ -87,45 +87,42 @@ function Interactions({height, width}: {|height: number, width: number|}) {
     [interactions, selectedInteractionID, selectInteraction],
   );
 
-  const itemData = useMemo<ItemData>(
-    () => {
-      const interactionCommitSize = parseInt(
-        getComputedStyle((document.body: any)).getPropertyValue(
-          '--interaction-commit-size',
-        ),
-        10,
-      );
-      const interactionLabelWidth = parseInt(
-        getComputedStyle((document.body: any)).getPropertyValue(
-          '--interaction-label-width',
-        ),
-        10,
-      );
+  const itemData = useMemo<ItemData>(() => {
+    const interactionCommitSize = parseInt(
+      getComputedStyle((document.body: any)).getPropertyValue(
+        '--interaction-commit-size',
+      ),
+      10,
+    );
+    const interactionLabelWidth = parseInt(
+      getComputedStyle((document.body: any)).getPropertyValue(
+        '--interaction-label-width',
+      ),
+      10,
+    );
 
-      const labelWidth = Math.min(interactionLabelWidth, width / 5);
-      const timelineWidth = width - labelWidth - interactionCommitSize;
+    const labelWidth = Math.min(interactionLabelWidth, width / 5);
+    const timelineWidth = width - labelWidth - interactionCommitSize;
 
-      return {
-        chartData,
-        dataForRoot,
-        labelWidth,
-        scaleX: scale(0, chartData.lastInteractionTime, 0, timelineWidth),
-        selectedInteractionID,
-        selectCommitIndex,
-        selectInteraction,
-        selectTab,
-      };
-    },
-    [
+    return {
       chartData,
       dataForRoot,
+      labelWidth,
+      scaleX: scale(0, chartData.lastInteractionTime, 0, timelineWidth),
       selectedInteractionID,
       selectCommitIndex,
       selectInteraction,
       selectTab,
-      width,
-    ],
-  );
+    };
+  }, [
+    chartData,
+    dataForRoot,
+    selectedInteractionID,
+    selectCommitIndex,
+    selectInteraction,
+    selectTab,
+    width,
+  ]);
 
   // If a commit contains no fibers with an actualDuration > 0,
   // Display a fallback message.
diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilerContext.js b/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilerContext.js
index e94d3e583ef9..4c3bc8834fa9 100644
--- a/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilerContext.js
+++ b/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilerContext.js
@@ -169,9 +169,10 @@ function ProfilerContextController({children}: Props) {
     store,
   ]);
 
-  const [isCommitFilterEnabled, setIsCommitFilterEnabled] = useLocalStorage<
-    boolean,
-  >('React::DevTools::isCommitFilterEnabled', false);
+  const [
+    isCommitFilterEnabled,
+    setIsCommitFilterEnabled,
+  ] = useLocalStorage<boolean>('React::DevTools::isCommitFilterEnabled', false);
   const [minCommitDuration, setMinCommitDuration] = useLocalStorage<number>(
     'minCommitDuration',
     0,
diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.js b/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.js
index 8f6b40199ea2..b23d797aa327 100644
--- a/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.js
+++ b/packages/react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.js
@@ -33,36 +33,33 @@ export default function ProfilingImportExportButtons() {
 
   const {dispatch: modalDialogDispatch} = useContext(ModalDialogContext);
 
-  const downloadData = useCallback(
-    () => {
-      if (rootID === null) {
-        return;
-      }
+  const downloadData = useCallback(() => {
+    if (rootID === null) {
+      return;
+    }
 
-      if (profilingData !== null && downloadRef.current !== null) {
-        const profilingDataExport = prepareProfilingDataExport(profilingData);
-        const date = new Date();
-        const dateString = date
-          .toLocaleDateString(undefined, {
-            year: 'numeric',
-            month: '2-digit',
-            day: '2-digit',
-          })
-          .replace(/\//g, '-');
-        const timeString = date
-          .toLocaleTimeString(undefined, {
-            hour12: false,
-          })
-          .replace(/:/g, '-');
-        downloadFile(
-          downloadRef.current,
-          `profiling-data.${dateString}.${timeString}.json`,
-          JSON.stringify(profilingDataExport, null, 2),
-        );
-      }
-    },
-    [rootID, profilingData],
-  );
+    if (profilingData !== null && downloadRef.current !== null) {
+      const profilingDataExport = prepareProfilingDataExport(profilingData);
+      const date = new Date();
+      const dateString = date
+        .toLocaleDateString(undefined, {
+          year: 'numeric',
+          month: '2-digit',
+          day: '2-digit',
+        })
+        .replace(/\//g, '-');
+      const timeString = date
+        .toLocaleTimeString(undefined, {
+          hour12: false,
+        })
+        .replace(/:/g, '-');
+      downloadFile(
+        downloadRef.current,
+        `profiling-data.${dateString}.${timeString}.json`,
+        JSON.stringify(profilingDataExport, null, 2),
+      );
+    }
+  }, [rootID, profilingData]);
 
   const uploadData = useCallback(() => {
     if (inputRef.current !== null) {
@@ -70,41 +67,38 @@ export default function ProfilingImportExportButtons() {
     }
   }, []);
 
-  const handleFiles = useCallback(
-    () => {
-      const input = inputRef.current;
-      if (input !== null && input.files.length > 0) {
-        const fileReader = new FileReader();
-        fileReader.addEventListener('load', () => {
-          try {
-            const raw = ((fileReader.result: any): string);
-            const profilingDataExport = ((JSON.parse(
-              raw,
-            ): any): ProfilingDataExport);
-            profilerStore.profilingData = prepareProfilingDataFrontendFromExport(
-              profilingDataExport,
-            );
-          } catch (error) {
-            modalDialogDispatch({
-              type: 'SHOW',
-              title: 'Import failed',
-              content: (
-                <Fragment>
-                  <div>The profiling data you selected cannot be imported.</div>
-                  {error !== null && (
-                    <div className={styles.ErrorMessage}>{error.message}</div>
-                  )}
-                </Fragment>
-              ),
-            });
-          }
-        });
-        // TODO (profiling) Handle fileReader errors.
-        fileReader.readAsText(input.files[0]);
-      }
-    },
-    [modalDialogDispatch, profilerStore],
-  );
+  const handleFiles = useCallback(() => {
+    const input = inputRef.current;
+    if (input !== null && input.files.length > 0) {
+      const fileReader = new FileReader();
+      fileReader.addEventListener('load', () => {
+        try {
+          const raw = ((fileReader.result: any): string);
+          const profilingDataExport = ((JSON.parse(
+            raw,
+          ): any): ProfilingDataExport);
+          profilerStore.profilingData = prepareProfilingDataFrontendFromExport(
+            profilingDataExport,
+          );
+        } catch (error) {
+          modalDialogDispatch({
+            type: 'SHOW',
+            title: 'Import failed',
+            content: (
+              <Fragment>
+                <div>The profiling data you selected cannot be imported.</div>
+                {error !== null && (
+                  <div className={styles.ErrorMessage}>{error.message}</div>
+                )}
+              </Fragment>
+            ),
+          });
+        }
+      });
+      // TODO (profiling) Handle fileReader errors.
+      fileReader.readAsText(input.files[0]);
+    }
+  }, [modalDialogDispatch, profilerStore]);
 
   return (
     <Fragment>
diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/ReloadAndProfileButton.js b/packages/react-devtools-shared/src/devtools/views/Profiler/ReloadAndProfileButton.js
index a8cefc198193..d3772ead4d16 100644
--- a/packages/react-devtools-shared/src/devtools/views/Profiler/ReloadAndProfileButton.js
+++ b/packages/react-devtools-shared/src/devtools/views/Profiler/ReloadAndProfileButton.js
@@ -39,22 +39,20 @@ export default function ReloadAndProfileButton() {
     }),
     [store],
   );
-  const {recordChangeDescriptions, supportsReloadAndProfile} = useSubscription<
-    SubscriptionData,
-  >(subscription);
+  const {
+    recordChangeDescriptions,
+    supportsReloadAndProfile,
+  } = useSubscription<SubscriptionData>(subscription);
 
-  const reloadAndProfile = useCallback(
-    () => {
-      // TODO If we want to support reload-and-profile for e.g. React Native,
-      // we might need to also start profiling here before reloading the app (since DevTools itself isn't reloaded).
-      // We'd probably want to do this before reloading though, to avoid sending a message on a disconnected port in the browser.
-      // For now, let's just skip doing it entirely to avoid paying snapshot costs for data we don't need.
-      // startProfiling();
+  const reloadAndProfile = useCallback(() => {
+    // TODO If we want to support reload-and-profile for e.g. React Native,
+    // we might need to also start profiling here before reloading the app (since DevTools itself isn't reloaded).
+    // We'd probably want to do this before reloading though, to avoid sending a message on a disconnected port in the browser.
+    // For now, let's just skip doing it entirely to avoid paying snapshot costs for data we don't need.
+    // startProfiling();
 
-      bridge.send('reloadAndProfile', recordChangeDescriptions);
-    },
-    [bridge, recordChangeDescriptions],
-  );
+    bridge.send('reloadAndProfile', recordChangeDescriptions);
+  }, [bridge, recordChangeDescriptions]);
 
   if (!supportsReloadAndProfile) {
     return null;
diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitList.js b/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitList.js
index 208d4ed5178a..1723b9d5c7fe 100644
--- a/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitList.js
+++ b/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitList.js
@@ -87,17 +87,14 @@ function List({
   const prevCommitIndexRef = useRef<number | null>(null);
 
   // Make sure a newly selected snapshot is fully visible within the list.
-  useEffect(
-    () => {
-      if (selectedFilteredCommitIndex !== prevCommitIndexRef.current) {
-        prevCommitIndexRef.current = selectedFilteredCommitIndex;
-        if (selectedFilteredCommitIndex !== null && listRef.current !== null) {
-          listRef.current.scrollToItem(selectedFilteredCommitIndex);
-        }
+  useEffect(() => {
+    if (selectedFilteredCommitIndex !== prevCommitIndexRef.current) {
+      prevCommitIndexRef.current = selectedFilteredCommitIndex;
+      if (selectedFilteredCommitIndex !== null && listRef.current !== null) {
+        listRef.current.scrollToItem(selectedFilteredCommitIndex);
       }
-    },
-    [listRef, selectedFilteredCommitIndex],
-  );
+    }
+  }, [listRef, selectedFilteredCommitIndex]);
 
   // When the mouse is down, dragging over a commit should auto-select it.
   // This provides a nice way for users to swipe across a range of commits to compare them.
@@ -108,21 +105,18 @@ function List({
   const handleMouseUp = useCallback(() => {
     setIsMouseDown(false);
   }, []);
-  useEffect(
-    () => {
-      if (divRef.current === null) {
-        return () => {};
-      }
+  useEffect(() => {
+    if (divRef.current === null) {
+      return () => {};
+    }
 
-      // It's important to listen to the ownerDocument to support the browser extension.
-      // Here we use portals to render individual tabs (e.g. Profiler),
-      // and the root document might belong to a different window.
-      const ownerDocument = divRef.current.ownerDocument;
-      ownerDocument.addEventListener('mouseup', handleMouseUp);
-      return () => ownerDocument.removeEventListener('mouseup', handleMouseUp);
-    },
-    [divRef, handleMouseUp],
-  );
+    // It's important to listen to the ownerDocument to support the browser extension.
+    // Here we use portals to render individual tabs (e.g. Profiler),
+    // and the root document might belong to a different window.
+    const ownerDocument = divRef.current.ownerDocument;
+    ownerDocument.addEventListener('mouseup', handleMouseUp);
+    return () => ownerDocument.removeEventListener('mouseup', handleMouseUp);
+  }, [divRef, handleMouseUp]);
 
   const itemSize = useMemo(
     () => Math.max(minBarWidth, width / filteredCommitIndices.length),
diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.js b/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.js
index 41979cee6b9f..41d5e7a77ed0 100644
--- a/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.js
+++ b/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.js
@@ -55,19 +55,16 @@ export default function SnapshotSelector(_: Props) {
   const numFilteredCommits = filteredCommitIndices.length;
 
   // Map the (unfiltered) selected commit index to an index within the filtered data.
-  const selectedFilteredCommitIndex = useMemo(
-    () => {
-      if (selectedCommitIndex !== null) {
-        for (let i = 0; i < filteredCommitIndices.length; i++) {
-          if (filteredCommitIndices[i] === selectedCommitIndex) {
-            return i;
-          }
+  const selectedFilteredCommitIndex = useMemo(() => {
+    if (selectedCommitIndex !== null) {
+      for (let i = 0; i < filteredCommitIndices.length; i++) {
+        if (filteredCommitIndices[i] === selectedCommitIndex) {
+          return i;
         }
       }
-      return null;
-    },
-    [filteredCommitIndices, selectedCommitIndex],
-  );
+    }
+    return null;
+  }, [filteredCommitIndices, selectedCommitIndex]);
 
   // TODO (ProfilerContext) This should be managed by the context controller (reducer).
   // It doesn't currently know about the filtered commits though (since it doesn't suspend).
@@ -93,26 +90,20 @@ export default function SnapshotSelector(_: Props) {
       numFilteredCommits;
   }
 
-  const viewNextCommit = useCallback(
-    () => {
-      let nextCommitIndex = ((selectedFilteredCommitIndex: any): number) + 1;
-      if (nextCommitIndex === filteredCommitIndices.length) {
-        nextCommitIndex = 0;
-      }
-      selectCommitIndex(filteredCommitIndices[nextCommitIndex]);
-    },
-    [selectedFilteredCommitIndex, filteredCommitIndices, selectCommitIndex],
-  );
-  const viewPrevCommit = useCallback(
-    () => {
-      let nextCommitIndex = ((selectedFilteredCommitIndex: any): number) - 1;
-      if (nextCommitIndex < 0) {
-        nextCommitIndex = filteredCommitIndices.length - 1;
-      }
-      selectCommitIndex(filteredCommitIndices[nextCommitIndex]);
-    },
-    [selectedFilteredCommitIndex, filteredCommitIndices, selectCommitIndex],
-  );
+  const viewNextCommit = useCallback(() => {
+    let nextCommitIndex = ((selectedFilteredCommitIndex: any): number) + 1;
+    if (nextCommitIndex === filteredCommitIndices.length) {
+      nextCommitIndex = 0;
+    }
+    selectCommitIndex(filteredCommitIndices[nextCommitIndex]);
+  }, [selectedFilteredCommitIndex, filteredCommitIndices, selectCommitIndex]);
+  const viewPrevCommit = useCallback(() => {
+    let nextCommitIndex = ((selectedFilteredCommitIndex: any): number) - 1;
+    if (nextCommitIndex < 0) {
+      nextCommitIndex = filteredCommitIndices.length - 1;
+    }
+    selectCommitIndex(filteredCommitIndices[nextCommitIndex]);
+  }, [selectedFilteredCommitIndex, filteredCommitIndices, selectCommitIndex]);
 
   const handleKeyDown = useCallback(
     event => {
diff --git a/packages/react-devtools-shared/src/devtools/views/Settings/ComponentsSettings.js b/packages/react-devtools-shared/src/devtools/views/Settings/ComponentsSettings.js
index 1d4697abe52e..8244a4b83d62 100644
--- a/packages/react-devtools-shared/src/devtools/views/Settings/ComponentsSettings.js
+++ b/packages/react-devtools-shared/src/devtools/views/Settings/ComponentsSettings.js
@@ -229,13 +229,10 @@ export default function ComponentsSettings(_: {||}) {
   // The Store will avoid doing any expensive work unless they've changed.
   // We just want to batch the work in the event that they do change.
   const componentFiltersRef = useRef<Array<ComponentFilter>>(componentFilters);
-  useEffect(
-    () => {
-      componentFiltersRef.current = componentFilters;
-      return () => {};
-    },
-    [componentFilters],
-  );
+  useEffect(() => {
+    componentFiltersRef.current = componentFilters;
+    return () => {};
+  }, [componentFilters]);
   useEffect(
     () => () => {
       store.componentFilters = [...componentFiltersRef.current];
@@ -282,8 +279,8 @@ export default function ComponentsSettings(_: {||}) {
                     componentFilter.isValid === false
                       ? 'Filter invalid'
                       : componentFilter.isEnabled
-                        ? 'Filter enabled'
-                        : 'Filter disabled'
+                      ? 'Filter enabled'
+                      : 'Filter disabled'
                   }>
                   <ToggleIcon
                     isEnabled={componentFilter.isEnabled}
diff --git a/packages/react-devtools-shared/src/devtools/views/Settings/SettingsContext.js b/packages/react-devtools-shared/src/devtools/views/Settings/SettingsContext.js
index 20938e20175e..ce6dc6022f26 100644
--- a/packages/react-devtools-shared/src/devtools/views/Settings/SettingsContext.js
+++ b/packages/react-devtools-shared/src/devtools/views/Settings/SettingsContext.js
@@ -74,83 +74,70 @@ function SettingsContextController({
     'React::DevTools::theme',
     'auto',
   );
-  const [appendComponentStack, setAppendComponentStack] = useLocalStorage<
-    boolean,
-  >(LOCAL_STORAGE_SHOULD_PATCH_CONSOLE_KEY, true);
-  const [traceUpdatesEnabled, setTraceUpdatesEnabled] = useLocalStorage<
-    boolean,
-  >(LOCAL_STORAGE_TRACE_UPDATES_ENABLED_KEY, false);
+  const [
+    appendComponentStack,
+    setAppendComponentStack,
+  ] = useLocalStorage<boolean>(LOCAL_STORAGE_SHOULD_PATCH_CONSOLE_KEY, true);
+  const [
+    traceUpdatesEnabled,
+    setTraceUpdatesEnabled,
+  ] = useLocalStorage<boolean>(LOCAL_STORAGE_TRACE_UPDATES_ENABLED_KEY, false);
 
-  const documentElements = useMemo<DocumentElements>(
-    () => {
-      const array: Array<HTMLElement> = [
-        ((document.documentElement: any): HTMLElement),
-      ];
-      if (componentsPortalContainer != null) {
-        array.push(
-          ((componentsPortalContainer.ownerDocument
-            .documentElement: any): HTMLElement),
-        );
-      }
-      if (profilerPortalContainer != null) {
-        array.push(
-          ((profilerPortalContainer.ownerDocument
-            .documentElement: any): HTMLElement),
-        );
-      }
-      return array;
-    },
-    [componentsPortalContainer, profilerPortalContainer],
-  );
+  const documentElements = useMemo<DocumentElements>(() => {
+    const array: Array<HTMLElement> = [
+      ((document.documentElement: any): HTMLElement),
+    ];
+    if (componentsPortalContainer != null) {
+      array.push(
+        ((componentsPortalContainer.ownerDocument
+          .documentElement: any): HTMLElement),
+      );
+    }
+    if (profilerPortalContainer != null) {
+      array.push(
+        ((profilerPortalContainer.ownerDocument
+          .documentElement: any): HTMLElement),
+      );
+    }
+    return array;
+  }, [componentsPortalContainer, profilerPortalContainer]);
 
-  useLayoutEffect(
-    () => {
-      switch (displayDensity) {
-        case 'comfortable':
-          updateDisplayDensity('comfortable', documentElements);
-          break;
-        case 'compact':
-          updateDisplayDensity('compact', documentElements);
-          break;
-        default:
-          throw Error(`Unsupported displayDensity value "${displayDensity}"`);
-      }
-    },
-    [displayDensity, documentElements],
-  );
+  useLayoutEffect(() => {
+    switch (displayDensity) {
+      case 'comfortable':
+        updateDisplayDensity('comfortable', documentElements);
+        break;
+      case 'compact':
+        updateDisplayDensity('compact', documentElements);
+        break;
+      default:
+        throw Error(`Unsupported displayDensity value "${displayDensity}"`);
+    }
+  }, [displayDensity, documentElements]);
 
-  useLayoutEffect(
-    () => {
-      switch (theme) {
-        case 'light':
-          updateThemeVariables('light', documentElements);
-          break;
-        case 'dark':
-          updateThemeVariables('dark', documentElements);
-          break;
-        case 'auto':
-          updateThemeVariables(browserTheme, documentElements);
-          break;
-        default:
-          throw Error(`Unsupported theme value "${theme}"`);
-      }
-    },
-    [browserTheme, theme, documentElements],
-  );
+  useLayoutEffect(() => {
+    switch (theme) {
+      case 'light':
+        updateThemeVariables('light', documentElements);
+        break;
+      case 'dark':
+        updateThemeVariables('dark', documentElements);
+        break;
+      case 'auto':
+        updateThemeVariables(browserTheme, documentElements);
+        break;
+      default:
+        throw Error(`Unsupported theme value "${theme}"`);
+    }
+  }, [browserTheme, theme, documentElements]);
 
-  useEffect(
-    () => {
-      bridge.send('updateAppendComponentStack', appendComponentStack);
-    },
-    [bridge, appendComponentStack],
-  );
+  useEffect(() => {
+    bridge.send('updateAppendComponentStack', appendComponentStack);
+  }, [bridge, appendComponentStack]);
 
-  useEffect(
-    () => {
-      bridge.send('setTraceUpdatesEnabled', traceUpdatesEnabled);
-    },
-    [bridge, traceUpdatesEnabled],
-  );
+  useEffect(() => {
+    bridge.send('setTraceUpdatesEnabled', traceUpdatesEnabled);
+  }, [bridge, traceUpdatesEnabled]);
 
   const value = useMemo(
     () => ({
diff --git a/packages/react-devtools-shared/src/devtools/views/Settings/SettingsModal.js b/packages/react-devtools-shared/src/devtools/views/Settings/SettingsModal.js
index 5ac993a91924..e76dae651820 100644
--- a/packages/react-devtools-shared/src/devtools/views/Settings/SettingsModal.js
+++ b/packages/react-devtools-shared/src/devtools/views/Settings/SettingsModal.js
@@ -75,14 +75,11 @@ function SettingsModalImpl(_: {||}) {
   const modalRef = useRef<HTMLDivElement | null>(null);
   useModalDismissSignal(modalRef, dismissModal);
 
-  useEffect(
-    () => {
-      if (modalRef.current !== null) {
-        modalRef.current.focus();
-      }
-    },
-    [modalRef],
-  );
+  useEffect(() => {
+    if (modalRef.current !== null) {
+      modalRef.current.focus();
+    }
+  }, [modalRef]);
 
   let view = null;
   switch (selectedTabID) {
diff --git a/packages/react-devtools-shared/src/devtools/views/UnsupportedVersionDialog.js b/packages/react-devtools-shared/src/devtools/views/UnsupportedVersionDialog.js
index 652c4904c224..1f35eee3c85e 100644
--- a/packages/react-devtools-shared/src/devtools/views/UnsupportedVersionDialog.js
+++ b/packages/react-devtools-shared/src/devtools/views/UnsupportedVersionDialog.js
@@ -22,35 +22,32 @@ export default function UnsupportedVersionDialog(_: {||}) {
   const store = useContext(StoreContext);
   const [state, setState] = useState<DAILOG_STATE>('dialog-not-shown');
 
-  useEffect(
-    () => {
-      if (state === 'dialog-not-shown') {
-        const showDialog = () => {
-          batchedUpdates(() => {
-            setState('show-dialog');
-            dispatch({
-              canBeDismissed: true,
-              type: 'SHOW',
-              content: <DialogContent />,
-            });
+  useEffect(() => {
+    if (state === 'dialog-not-shown') {
+      const showDialog = () => {
+        batchedUpdates(() => {
+          setState('show-dialog');
+          dispatch({
+            canBeDismissed: true,
+            type: 'SHOW',
+            content: <DialogContent />,
           });
-        };
+        });
+      };
 
-        if (store.unsupportedRendererVersionDetected) {
-          showDialog();
-        } else {
-          store.addListener('unsupportedRendererVersionDetected', showDialog);
-          return () => {
-            store.removeListener(
-              'unsupportedRendererVersionDetected',
-              showDialog,
-            );
-          };
-        }
+      if (store.unsupportedRendererVersionDetected) {
+        showDialog();
+      } else {
+        store.addListener('unsupportedRendererVersionDetected', showDialog);
+        return () => {
+          store.removeListener(
+            'unsupportedRendererVersionDetected',
+            showDialog,
+          );
+        };
       }
-    },
-    [state, store],
-  );
+    }
+  }, [state, store]);
 
   return null;
 }
@@ -74,7 +71,8 @@ function DialogContent(_: {||}) {
               rel="noopener noreferrer"
               href={UNSUPPORTED_VERSION_URL}>
               install an older version of the extension
-            </a>.
+            </a>
+            .
           </p>
         </div>
       </div>
diff --git a/packages/react-devtools-shared/src/devtools/views/WarnIfLegacyBackendDetected.js b/packages/react-devtools-shared/src/devtools/views/WarnIfLegacyBackendDetected.js
index cdcee4758ab9..cb4933f8dbda 100644
--- a/packages/react-devtools-shared/src/devtools/views/WarnIfLegacyBackendDetected.js
+++ b/packages/react-devtools-shared/src/devtools/views/WarnIfLegacyBackendDetected.js
@@ -20,58 +20,55 @@ export default function WarnIfLegacyBackendDetected(_: {||}) {
   // Detect pairing with legacy v3 backend.
   // We do this by listening to a message that it broadcasts but the v4 backend doesn't.
   // In this case the frontend should show upgrade instructions.
-  useEffect(
-    () => {
-      // Wall.listen returns a cleanup function
-      let unlisten = bridge.wall.listen(message => {
-        switch (message.type) {
-          case 'call':
-          case 'event':
-          case 'many-events':
-            // Any of these types indicate the v3 backend.
-            dispatch({
-              canBeDismissed: false,
-              type: 'SHOW',
-              title: 'DevTools v4 is incompatible with this version of React',
-              content: <InvalidBackendDetected />,
-            });
+  useEffect(() => {
+    // Wall.listen returns a cleanup function
+    let unlisten = bridge.wall.listen(message => {
+      switch (message.type) {
+        case 'call':
+        case 'event':
+        case 'many-events':
+          // Any of these types indicate the v3 backend.
+          dispatch({
+            canBeDismissed: false,
+            type: 'SHOW',
+            title: 'DevTools v4 is incompatible with this version of React',
+            content: <InvalidBackendDetected />,
+          });
 
-            // Once we've identified the backend version, it's safe to unsubscribe.
-            if (typeof unlisten === 'function') {
-              unlisten();
-              unlisten = null;
-            }
-            break;
-          default:
-            break;
-        }
+          // Once we've identified the backend version, it's safe to unsubscribe.
+          if (typeof unlisten === 'function') {
+            unlisten();
+            unlisten = null;
+          }
+          break;
+        default:
+          break;
+      }
 
-        switch (message.event) {
-          case 'isBackendStorageAPISupported':
-          case 'isNativeStyleEditorSupported':
-          case 'operations':
-          case 'overrideComponentFilters':
-            // Any of these is sufficient to indicate a v4 backend.
-            // Once we've identified the backend version, it's safe to unsubscribe.
-            if (typeof unlisten === 'function') {
-              unlisten();
-              unlisten = null;
-            }
-            break;
-          default:
-            break;
-        }
-      });
+      switch (message.event) {
+        case 'isBackendStorageAPISupported':
+        case 'isNativeStyleEditorSupported':
+        case 'operations':
+        case 'overrideComponentFilters':
+          // Any of these is sufficient to indicate a v4 backend.
+          // Once we've identified the backend version, it's safe to unsubscribe.
+          if (typeof unlisten === 'function') {
+            unlisten();
+            unlisten = null;
+          }
+          break;
+        default:
+          break;
+      }
+    });
 
-      return () => {
-        if (typeof unlisten === 'function') {
-          unlisten();
-          unlisten = null;
-        }
-      };
-    },
-    [bridge, dispatch],
-  );
+    return () => {
+      if (typeof unlisten === 'function') {
+        unlisten();
+        unlisten = null;
+      }
+    };
+  }, [bridge, dispatch]);
 
   return null;
 }
diff --git a/packages/react-devtools-shared/src/devtools/views/hooks.js b/packages/react-devtools-shared/src/devtools/views/hooks.js
index 693f72535bbe..62cafbfed316 100644
--- a/packages/react-devtools-shared/src/devtools/views/hooks.js
+++ b/packages/react-devtools-shared/src/devtools/views/hooks.js
@@ -112,30 +112,27 @@ export function useIsOverflowing(
   const [isOverflowing, setIsOverflowing] = useState<boolean>(false);
 
   // It's important to use a layout effect, so that we avoid showing a flash of overflowed content.
-  useLayoutEffect(
-    () => {
-      if (containerRef.current === null) {
-        return () => {};
-      }
+  useLayoutEffect(() => {
+    if (containerRef.current === null) {
+      return () => {};
+    }
 
-      const container = ((containerRef.current: any): HTMLDivElement);
+    const container = ((containerRef.current: any): HTMLDivElement);
 
-      const handleResize = throttle(
-        () => setIsOverflowing(container.clientWidth <= totalChildWidth),
-        100,
-      );
+    const handleResize = throttle(
+      () => setIsOverflowing(container.clientWidth <= totalChildWidth),
+      100,
+    );
 
-      handleResize();
+    handleResize();
 
-      // It's important to listen to the ownerDocument.defaultView to support the browser extension.
-      // Here we use portals to render individual tabs (e.g. Profiler),
-      // and the root document might belong to a different window.
-      const ownerWindow = container.ownerDocument.defaultView;
-      ownerWindow.addEventListener('resize', handleResize);
-      return () => ownerWindow.removeEventListener('resize', handleResize);
-    },
-    [containerRef, totalChildWidth],
-  );
+    // It's important to listen to the ownerDocument.defaultView to support the browser extension.
+    // Here we use portals to render individual tabs (e.g. Profiler),
+    // and the root document might belong to a different window.
+    const ownerWindow = container.ownerDocument.defaultView;
+    ownerWindow.addEventListener('resize', handleResize);
+    return () => ownerWindow.removeEventListener('resize', handleResize);
+  }, [containerRef, totalChildWidth]);
 
   return isOverflowing;
 }
@@ -145,24 +142,21 @@ export function useLocalStorage<T>(
   key: string,
   initialValue: T | (() => T),
 ): [T, (value: T | (() => T)) => void] {
-  const getValueFromLocalStorage = useCallback(
-    () => {
-      try {
-        const item = localStorageGetItem(key);
-        if (item != null) {
-          return JSON.parse(item);
-        }
-      } catch (error) {
-        console.log(error);
-      }
-      if (typeof initialValue === 'function') {
-        return ((initialValue: any): () => T)();
-      } else {
-        return initialValue;
+  const getValueFromLocalStorage = useCallback(() => {
+    try {
+      const item = localStorageGetItem(key);
+      if (item != null) {
+        return JSON.parse(item);
       }
-    },
-    [initialValue, key],
-  );
+    } catch (error) {
+      console.log(error);
+    }
+    if (typeof initialValue === 'function') {
+      return ((initialValue: any): () => T)();
+    } else {
+      return initialValue;
+    }
+  }, [initialValue, key]);
 
   const [storedValue, setStoredValue] = useState(getValueFromLocalStorage);
 
@@ -182,23 +176,20 @@ export function useLocalStorage<T>(
 
   // Listen for changes to this local storage value made from other windows.
   // This enables the e.g. "⚛️ Elements" tab to update in response to changes from "⚛️ Settings".
-  useLayoutEffect(
-    () => {
-      const onStorage = event => {
-        const newValue = getValueFromLocalStorage();
-        if (key === event.key && storedValue !== newValue) {
-          setValue(newValue);
-        }
-      };
+  useLayoutEffect(() => {
+    const onStorage = event => {
+      const newValue = getValueFromLocalStorage();
+      if (key === event.key && storedValue !== newValue) {
+        setValue(newValue);
+      }
+    };
 
-      window.addEventListener('storage', onStorage);
+    window.addEventListener('storage', onStorage);
 
-      return () => {
-        window.removeEventListener('storage', onStorage);
-      };
-    },
-    [getValueFromLocalStorage, key, storedValue, setValue],
-  );
+    return () => {
+      window.removeEventListener('storage', onStorage);
+    };
+  }, [getValueFromLocalStorage, key, storedValue, setValue]);
 
   return [storedValue, setValue];
 }
@@ -208,47 +199,44 @@ export function useModalDismissSignal(
   dismissCallback: () => void,
   dismissOnClickOutside?: boolean = true,
 ): void {
-  useEffect(
-    () => {
-      if (modalRef.current === null) {
-        return () => {};
-      }
-
-      const handleDocumentKeyDown = ({key}: any) => {
-        if (key === 'Escape') {
-          dismissCallback();
-        }
-      };
-
-      const handleDocumentClick = (event: any) => {
-        // $FlowFixMe
-        if (
-          modalRef.current !== null &&
-          !modalRef.current.contains(event.target)
-        ) {
-          event.stopPropagation();
-          event.preventDefault();
-
-          dismissCallback();
-        }
-      };
+  useEffect(() => {
+    if (modalRef.current === null) {
+      return () => {};
+    }
 
-      // It's important to listen to the ownerDocument to support the browser extension.
-      // Here we use portals to render individual tabs (e.g. Profiler),
-      // and the root document might belong to a different window.
-      const ownerDocument = modalRef.current.ownerDocument;
-      ownerDocument.addEventListener('keydown', handleDocumentKeyDown);
-      if (dismissOnClickOutside) {
-        ownerDocument.addEventListener('click', handleDocumentClick);
+    const handleDocumentKeyDown = ({key}: any) => {
+      if (key === 'Escape') {
+        dismissCallback();
+      }
+    };
+
+    const handleDocumentClick = (event: any) => {
+      // $FlowFixMe
+      if (
+        modalRef.current !== null &&
+        !modalRef.current.contains(event.target)
+      ) {
+        event.stopPropagation();
+        event.preventDefault();
+
+        dismissCallback();
       }
+    };
+
+    // It's important to listen to the ownerDocument to support the browser extension.
+    // Here we use portals to render individual tabs (e.g. Profiler),
+    // and the root document might belong to a different window.
+    const ownerDocument = modalRef.current.ownerDocument;
+    ownerDocument.addEventListener('keydown', handleDocumentKeyDown);
+    if (dismissOnClickOutside) {
+      ownerDocument.addEventListener('click', handleDocumentClick);
+    }
 
-      return () => {
-        ownerDocument.removeEventListener('keydown', handleDocumentKeyDown);
-        ownerDocument.removeEventListener('click', handleDocumentClick);
-      };
-    },
-    [modalRef, dismissCallback, dismissOnClickOutside],
-  );
+    return () => {
+      ownerDocument.removeEventListener('keydown', handleDocumentKeyDown);
+      ownerDocument.removeEventListener('click', handleDocumentClick);
+    };
+  }, [modalRef, dismissCallback, dismissOnClickOutside]);
 }
 
 // Copied from https://github.com/facebook/react/pull/15022
@@ -276,42 +264,39 @@ export function useSubscription<Value>({
     });
   }
 
-  useEffect(
-    () => {
-      let didUnsubscribe = false;
+  useEffect(() => {
+    let didUnsubscribe = false;
 
-      const checkForUpdates = () => {
-        if (didUnsubscribe) {
-          return;
+    const checkForUpdates = () => {
+      if (didUnsubscribe) {
+        return;
+      }
+
+      setState(prevState => {
+        if (
+          prevState.getCurrentValue !== getCurrentValue ||
+          prevState.subscribe !== subscribe
+        ) {
+          return prevState;
         }
 
-        setState(prevState => {
-          if (
-            prevState.getCurrentValue !== getCurrentValue ||
-            prevState.subscribe !== subscribe
-          ) {
-            return prevState;
-          }
-
-          const value = getCurrentValue();
-          if (prevState.value === value) {
-            return prevState;
-          }
-
-          return {...prevState, value};
-        });
-      };
-      const unsubscribe = subscribe(checkForUpdates);
+        const value = getCurrentValue();
+        if (prevState.value === value) {
+          return prevState;
+        }
 
-      checkForUpdates();
+        return {...prevState, value};
+      });
+    };
+    const unsubscribe = subscribe(checkForUpdates);
 
-      return () => {
-        didUnsubscribe = true;
-        unsubscribe();
-      };
-    },
-    [getCurrentValue, subscribe],
-  );
+    checkForUpdates();
+
+    return () => {
+      didUnsubscribe = true;
+      unsubscribe();
+    };
+  }, [getCurrentValue, subscribe]);
 
   return state.value;
 }
diff --git a/packages/react-devtools-shell/src/app/Hydration/index.js b/packages/react-devtools-shell/src/app/Hydration/index.js
index 914bf54ccc07..d2be0e690173 100644
--- a/packages/react-devtools-shell/src/app/Hydration/index.js
+++ b/packages/react-devtools-shell/src/app/Hydration/index.js
@@ -17,8 +17,16 @@ typedArray[1] = 2;
 typedArray[2] = 3;
 
 const arrayOfArrays = [
-  [['a', 'b', 'c'], ['d', 'e', 'f'], ['h', 'i', 'j']],
-  [['k', 'l', 'm'], ['n', 'o', 'p'], ['q', 'r', 's']],
+  [
+    ['a', 'b', 'c'],
+    ['d', 'e', 'f'],
+    ['h', 'i', 'j'],
+  ],
+  [
+    ['k', 'l', 'm'],
+    ['n', 'o', 'p'],
+    ['q', 'r', 's'],
+  ],
   [['t', 'u', 'v'], ['w', 'x', 'y'], ['z']],
   [],
 ];
diff --git a/packages/react-devtools-shell/src/app/InspectableElements/UnserializableProps.js b/packages/react-devtools-shell/src/app/InspectableElements/UnserializableProps.js
index effe7f14a348..561aad203449 100644
--- a/packages/react-devtools-shell/src/app/InspectableElements/UnserializableProps.js
+++ b/packages/react-devtools-shell/src/app/InspectableElements/UnserializableProps.js
@@ -11,9 +11,15 @@ import React from 'react';
 import Immutable from 'immutable';
 
 const set = new Set(['abc', 123]);
-const map = new Map([['name', 'Brian'], ['food', 'sushi']]);
+const map = new Map([
+  ['name', 'Brian'],
+  ['food', 'sushi'],
+]);
 const setOfSets = new Set([new Set(['a', 'b', 'c']), new Set([1, 2, 3])]);
-const mapOfMaps = new Map([['first', map], ['second', map]]);
+const mapOfMaps = new Map([
+  ['first', map],
+  ['second', map],
+]);
 const typedArray = Int8Array.from([100, -100, 0]);
 const arrayBuffer = typedArray.buffer;
 const dataView = new DataView(arrayBuffer);
diff --git a/packages/react-devtools-shell/src/app/InteractionTracing/index.js b/packages/react-devtools-shell/src/app/InteractionTracing/index.js
index be44460bb56d..9d713d8fe5bc 100644
--- a/packages/react-devtools-shell/src/app/InteractionTracing/index.js
+++ b/packages/react-devtools-shell/src/app/InteractionTracing/index.js
@@ -18,66 +18,54 @@ export default function InteractionTracing() {
   const [count, setCount] = useState(0);
   const [shouldCascade, setShouldCascade] = useState(false);
 
-  const handleUpdate = useCallback(
-    () => {
-      trace('count', performance.now(), () => {
-        setTimeout(
-          wrap(() => {
+  const handleUpdate = useCallback(() => {
+    trace('count', performance.now(), () => {
+      setTimeout(
+        wrap(() => {
+          setCount(count + 1);
+        }),
+        count * 100,
+      );
+    });
+  }, [count]);
+
+  const handleCascadingUpdate = useCallback(() => {
+    trace('cascade', performance.now(), () => {
+      setTimeout(
+        wrap(() => {
+          batchedUpdates(() => {
             setCount(count + 1);
-          }),
-          count * 100,
-        );
-      });
-    },
-    [count],
-  );
+            setShouldCascade(true);
+          });
+        }),
+        count * 100,
+      );
+    });
+  }, [count]);
 
-  const handleCascadingUpdate = useCallback(
-    () => {
-      trace('cascade', performance.now(), () => {
+  const handleMultiple = useCallback(() => {
+    trace('first', performance.now(), () => {
+      trace('second', performance.now(), () => {
         setTimeout(
           wrap(() => {
-            batchedUpdates(() => {
-              setCount(count + 1);
-              setShouldCascade(true);
-            });
+            setCount(count + 1);
           }),
           count * 100,
         );
       });
-    },
-    [count],
-  );
+    });
+  }, [count]);
 
-  const handleMultiple = useCallback(
-    () => {
-      trace('first', performance.now(), () => {
-        trace('second', performance.now(), () => {
-          setTimeout(
-            wrap(() => {
-              setCount(count + 1);
-            }),
-            count * 100,
-          );
-        });
-      });
-    },
-    [count],
-  );
-
-  useEffect(
-    () => {
-      if (shouldCascade) {
-        setTimeout(
-          wrap(() => {
-            setShouldCascade(false);
-          }),
-          count * 100,
-        );
-      }
-    },
-    [count, shouldCascade],
-  );
+  useEffect(() => {
+    if (shouldCascade) {
+      setTimeout(
+        wrap(() => {
+          setShouldCascade(false);
+        }),
+        count * 100,
+      );
+    }
+  }, [count, shouldCascade]);
 
   return (
     <Fragment>
diff --git a/packages/react-devtools-shell/src/app/ToDoList/List.js b/packages/react-devtools-shell/src/app/ToDoList/List.js
index 1decfb28e725..e3fee2008079 100644
--- a/packages/react-devtools-shell/src/app/ToDoList/List.js
+++ b/packages/react-devtools-shell/src/app/ToDoList/List.js
@@ -28,23 +28,20 @@ export default function List(props: Props) {
   ]);
   const [uid, setUID] = useState<number>(4);
 
-  const handleClick = useCallback(
-    () => {
-      if (newItemText !== '') {
-        setItems([
-          ...items,
-          {
-            id: uid,
-            isComplete: false,
-            text: newItemText,
-          },
-        ]);
-        setUID(uid + 1);
-        setNewItemText('');
-      }
-    },
-    [newItemText, items, uid],
-  );
+  const handleClick = useCallback(() => {
+    if (newItemText !== '') {
+      setItems([
+        ...items,
+        {
+          id: uid,
+          isComplete: false,
+          text: newItemText,
+        },
+      ]);
+      setUID(uid + 1);
+      setNewItemText('');
+    }
+  }, [newItemText, items, uid]);
 
   const handleKeyPress = useCallback(
     event => {
diff --git a/packages/react-devtools-shell/src/app/ToDoList/ListItem.js b/packages/react-devtools-shell/src/app/ToDoList/ListItem.js
index 6d0a759169cd..9ef1afffdf44 100644
--- a/packages/react-devtools-shell/src/app/ToDoList/ListItem.js
+++ b/packages/react-devtools-shell/src/app/ToDoList/ListItem.js
@@ -19,19 +19,13 @@ type Props = {|
 |};
 
 function ListItem({item, removeItem, toggleItem}: Props) {
-  const handleDelete = useCallback(
-    () => {
-      removeItem(item);
-    },
-    [item, removeItem],
-  );
+  const handleDelete = useCallback(() => {
+    removeItem(item);
+  }, [item, removeItem]);
 
-  const handleToggle = useCallback(
-    () => {
-      toggleItem(item);
-    },
-    [item, toggleItem],
-  );
+  const handleToggle = useCallback(() => {
+    toggleItem(item);
+  }, [item, toggleItem]);
 
   return (
     <li className={styles.ListItem}>
diff --git a/packages/react-dom/src/__tests__/ReactComponentLifeCycle-test.js b/packages/react-dom/src/__tests__/ReactComponentLifeCycle-test.js
index 3b124941d7f1..6b51eb6a1256 100644
--- a/packages/react-dom/src/__tests__/ReactComponentLifeCycle-test.js
+++ b/packages/react-dom/src/__tests__/ReactComponentLifeCycle-test.js
@@ -1148,9 +1148,11 @@ describe('ReactComponentLifeCycle', () => {
       render() {
         childInstance = this;
         return (
-          <div onClick={this.updateState} ref={divRef}>{`remote:${
-            this.state.remote
-          }, local:${this.state.local}`}</div>
+          <div
+            onClick={this.updateState}
+            ref={
+              divRef
+            }>{`remote:${this.state.remote}, local:${this.state.local}`}</div>
         );
       }
     }
@@ -1197,17 +1199,13 @@ describe('ReactComponentLifeCycle', () => {
       }
       getSnapshotBeforeUpdate(prevProps, prevState) {
         log.push(
-          `getSnapshotBeforeUpdate() prevProps:${prevProps.value} prevState:${
-            prevState.value
-          }`,
+          `getSnapshotBeforeUpdate() prevProps:${prevProps.value} prevState:${prevState.value}`,
         );
         return 'abc';
       }
       componentDidUpdate(prevProps, prevState, snapshot) {
         log.push(
-          `componentDidUpdate() prevProps:${prevProps.value} prevState:${
-            prevState.value
-          } snapshot:${snapshot}`,
+          `componentDidUpdate() prevProps:${prevProps.value} prevState:${prevState.value} snapshot:${snapshot}`,
         );
       }
       render() {
diff --git a/packages/react-dom/src/__tests__/ReactCompositeComponent-test.js b/packages/react-dom/src/__tests__/ReactCompositeComponent-test.js
index 5994813d69f2..908d418cac7e 100644
--- a/packages/react-dom/src/__tests__/ReactCompositeComponent-test.js
+++ b/packages/react-dom/src/__tests__/ReactCompositeComponent-test.js
@@ -165,7 +165,9 @@ describe('ReactCompositeComponent', () => {
     // Old API based on heuristic
     let container = document.createElement('div');
     container.innerHTML = markup;
-    expect(() => ReactDOM.render(<Parent />, container)).toWarnDev(
+    expect(() =>
+      ReactDOM.render(<Parent />, container),
+    ).toWarnDev(
       'render(): Calling ReactDOM.render() to hydrate server-rendered markup ' +
         'will stop working in React v17. Replace the ReactDOM.render() call ' +
         'with ReactDOM.hydrate() if you want React to attach to the server HTML.',
diff --git a/packages/react-dom/src/__tests__/ReactDOMComponent-test.js b/packages/react-dom/src/__tests__/ReactDOMComponent-test.js
index acf81a30118e..219b2346d2f5 100644
--- a/packages/react-dom/src/__tests__/ReactDOMComponent-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMComponent-test.js
@@ -182,24 +182,21 @@ describe('ReactDOMComponent', () => {
     it('should warn for unknown string event handlers', () => {
       const container = document.createElement('div');
       expect(() =>
-        ReactDOM.render(<div onUnknown="alert(&quot;hack&quot;)" />, container),
+        ReactDOM.render(<div onUnknown='alert("hack")' />, container),
       ).toErrorDev(
         'Warning: Unknown event handler property `onUnknown`. It will be ignored.\n    in div (at **)',
       );
       expect(container.firstChild.hasAttribute('onUnknown')).toBe(false);
       expect(container.firstChild.onUnknown).toBe(undefined);
       expect(() =>
-        ReactDOM.render(<div onunknown="alert(&quot;hack&quot;)" />, container),
+        ReactDOM.render(<div onunknown='alert("hack")' />, container),
       ).toErrorDev(
         'Warning: Unknown event handler property `onunknown`. It will be ignored.\n    in div (at **)',
       );
       expect(container.firstChild.hasAttribute('onunknown')).toBe(false);
       expect(container.firstChild.onunknown).toBe(undefined);
       expect(() =>
-        ReactDOM.render(
-          <div on-unknown="alert(&quot;hack&quot;)" />,
-          container,
-        ),
+        ReactDOM.render(<div on-unknown='alert("hack")' />, container),
       ).toErrorDev(
         'Warning: Unknown event handler property `on-unknown`. It will be ignored.\n    in div (at **)',
       );
diff --git a/packages/react-dom/src/__tests__/ReactDOMComponentTree-test.js b/packages/react-dom/src/__tests__/ReactDOMComponentTree-test.js
index b00bd145ae14..e27c3b5b660b 100644
--- a/packages/react-dom/src/__tests__/ReactDOMComponentTree-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMComponentTree-test.js
@@ -190,7 +190,9 @@ describe('ReactDOMComponentTree', () => {
   it('finds instance of node that is attempted to be unmounted', () => {
     const component = <div />;
     const node = ReactDOM.render(<div>{component}</div>, container);
-    expect(() => ReactDOM.unmountComponentAtNode(node)).toErrorDev(
+    expect(() =>
+      ReactDOM.unmountComponentAtNode(node),
+    ).toErrorDev(
       "unmountComponentAtNode(): The node you're attempting to unmount " +
         'was rendered by React and is not a top-level container. You may ' +
         'have accidentally passed in a React root node instead of its ' +
@@ -207,7 +209,9 @@ describe('ReactDOMComponentTree', () => {
     );
     const anotherComponent = <div />;
     const instance = ReactDOM.render(component, container);
-    expect(() => ReactDOM.render(anotherComponent, instance)).toErrorDev(
+    expect(() =>
+      ReactDOM.render(anotherComponent, instance),
+    ).toErrorDev(
       'render(...): Replacing React-rendered children with a new root ' +
         'component. If you intended to update the children of this node, ' +
         'you should instead have the existing children update their state ' +
diff --git a/packages/react-dom/src/__tests__/ReactDOMFiber-test.js b/packages/react-dom/src/__tests__/ReactDOMFiber-test.js
index 59d9b5a1fc38..a9856cc3f0c8 100644
--- a/packages/react-dom/src/__tests__/ReactDOMFiber-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMFiber-test.js
@@ -1151,7 +1151,9 @@ describe('ReactDOMFiber', () => {
     expect(container.innerHTML).toBe('<div>bar</div>');
     // then we mess with the DOM before an update
     container.innerHTML = '<div>MEOW.</div>';
-    expect(() => ReactDOM.render(<div>baz</div>, container)).toErrorDev(
+    expect(() =>
+      ReactDOM.render(<div>baz</div>, container),
+    ).toErrorDev(
       'render(...): ' +
         'It looks like the React-rendered content of this container was ' +
         'removed without using React. This is not supported and will ' +
@@ -1168,7 +1170,9 @@ describe('ReactDOMFiber', () => {
     expect(container.innerHTML).toBe('<div>bar</div>');
     // then we mess with the DOM before an update
     container.innerHTML = '';
-    expect(() => ReactDOM.render(<div>baz</div>, container)).toErrorDev(
+    expect(() =>
+      ReactDOM.render(<div>baz</div>, container),
+    ).toErrorDev(
       'render(...): ' +
         'It looks like the React-rendered content of this container was ' +
         'removed without using React. This is not supported and will ' +
diff --git a/packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.internal.js b/packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.internal.js
index 15515672747a..8cf28cc6adf4 100644
--- a/packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.internal.js
+++ b/packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.internal.js
@@ -593,14 +593,11 @@ describe('ReactDOMFiberAsync', () => {
 
     function App({label}) {
       const [step, setStep] = useState(0);
-      useEffect(
-        () => {
-          if (step < 3) {
-            setStep(step + 1);
-          }
-        },
-        [step],
-      );
+      useEffect(() => {
+        if (step < 3) {
+          setStep(step + 1);
+        }
+      }, [step]);
 
       // The component should keep re-rendering itself until `step` is 3.
       return step === 3 ? 'Finished' : 'Unresolved';
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationAttributes-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationAttributes-test.js
index f785addd4485..87673b0e2cf4 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationAttributes-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationAttributes-test.js
@@ -636,10 +636,7 @@ describe('ReactDOMServerIntegration', () => {
     });
 
     itRenders('no unknown events', async render => {
-      const e = await render(
-        <div onunknownevent="alert(&quot;hack&quot;)" />,
-        1,
-      );
+      const e = await render(<div onunknownevent='alert("hack")' />, 1);
       expect(e.getAttribute('onunknownevent')).toBe(null);
     });
 
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationElements-test.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationElements-test.js
index 9c98f10cb2c1..5d56419a1a11 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationElements-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationElements-test.js
@@ -258,8 +258,7 @@ describe('ReactDOMServerIntegration', () => {
           <div>
             {[['a'], 'b']}
             <div>
-              <X key="1" />
-              d
+              <X key="1" />d
             </div>
             e
           </div>,
@@ -493,11 +492,13 @@ describe('ReactDOMServerIntegration', () => {
       // Put dangerouslySetInnerHTML one level deeper because otherwise
       // hydrating from a bad markup would cause a mismatch (since we don't
       // patch dangerouslySetInnerHTML as text content).
-      const e = (await render(
-        <div>
-          <span dangerouslySetInnerHTML={{__html: 0}} />
-        </div>,
-      )).firstChild;
+      const e = (
+        await render(
+          <div>
+            <span dangerouslySetInnerHTML={{__html: 0}} />
+          </div>,
+        )
+      ).firstChild;
       expect(e.childNodes.length).toBe(1);
       expect(e.firstChild.nodeType).toBe(TEXT_NODE_TYPE);
       expect(e.textContent).toBe('0');
@@ -507,11 +508,13 @@ describe('ReactDOMServerIntegration', () => {
       // Put dangerouslySetInnerHTML one level deeper because otherwise
       // hydrating from a bad markup would cause a mismatch (since we don't
       // patch dangerouslySetInnerHTML as text content).
-      const e = (await render(
-        <div>
-          <span dangerouslySetInnerHTML={{__html: false}} />
-        </div>,
-      )).firstChild;
+      const e = (
+        await render(
+          <div>
+            <span dangerouslySetInnerHTML={{__html: false}} />
+          </div>,
+        )
+      ).firstChild;
       expect(e.childNodes.length).toBe(1);
       expect(e.firstChild.nodeType).toBe(TEXT_NODE_TYPE);
       expect(e.firstChild.data).toBe('false');
@@ -523,11 +526,13 @@ describe('ReactDOMServerIntegration', () => {
         // Put dangerouslySetInnerHTML one level deeper because otherwise
         // hydrating from a bad markup would cause a mismatch (since we don't
         // patch dangerouslySetInnerHTML as text content).
-        const e = (await render(
-          <div>
-            <span dangerouslySetInnerHTML={{__html: 'hello'}} />
-          </div>,
-        )).firstChild;
+        const e = (
+          await render(
+            <div>
+              <span dangerouslySetInnerHTML={{__html: 'hello'}} />
+            </div>,
+          )
+        ).firstChild;
         expect(e.childNodes.length).toBe(1);
         expect(e.firstChild.nodeType).toBe(TEXT_NODE_TYPE);
         expect(e.textContent).toBe('hello');
diff --git a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationHooks-test.internal.js b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationHooks-test.internal.js
index b4f99453cd32..a4e638cc006e 100644
--- a/packages/react-dom/src/__tests__/ReactDOMServerIntegrationHooks-test.internal.js
+++ b/packages/react-dom/src/__tests__/ReactDOMServerIntegrationHooks-test.internal.js
@@ -322,13 +322,10 @@ describe('ReactDOMServerHooks', () => {
     itRenders('basic render', async render => {
       function CapitalizedText(props) {
         const text = props.text;
-        const capitalizedText = useMemo(
-          () => {
-            yieldValue(`Capitalize '${text}'`);
-            return text.toUpperCase();
-          },
-          [text],
-        );
+        const capitalizedText = useMemo(() => {
+          yieldValue(`Capitalize '${text}'`);
+          return text.toUpperCase();
+        }, [text]);
         return <Text text={capitalizedText} />;
       }
 
@@ -360,13 +357,10 @@ describe('ReactDOMServerHooks', () => {
       async render => {
         function CapitalizedText(props) {
           const [text, setText] = useState(props.text);
-          const capitalizedText = useMemo(
-            () => {
-              yieldValue(`Capitalize '${text}'`);
-              return text.toUpperCase();
-            },
-            [text],
-          );
+          const capitalizedText = useMemo(() => {
+            yieldValue(`Capitalize '${text}'`);
+            return text.toUpperCase();
+          }, [text]);
 
           if (text === 'hello') {
             setText('hello, world.');
@@ -391,13 +385,10 @@ describe('ReactDOMServerHooks', () => {
         function CapitalizedText(props) {
           const [text, setText] = useState(props.text);
           const [count, setCount] = useState(0);
-          const capitalizedText = useMemo(
-            () => {
-              yieldValue(`Capitalize '${text}'`);
-              return text.toUpperCase();
-            },
-            [text],
-          );
+          const capitalizedText = useMemo(() => {
+            yieldValue(`Capitalize '${text}'`);
+            return text.toUpperCase();
+          }, [text]);
 
           yieldValue(count);
 
diff --git a/packages/react-dom/src/__tests__/ReactDOMSuspensePlaceholder-test.js b/packages/react-dom/src/__tests__/ReactDOMSuspensePlaceholder-test.js
index 7f1d1c5db072..94bd63ff026c 100644
--- a/packages/react-dom/src/__tests__/ReactDOMSuspensePlaceholder-test.js
+++ b/packages/react-dom/src/__tests__/ReactDOMSuspensePlaceholder-test.js
@@ -33,13 +33,16 @@ describe('ReactDOMSuspensePlaceholder', () => {
     container = document.createElement('div');
     document.body.appendChild(container);
 
-    TextResource = ReactCache.unstable_createResource(([text, ms = 0]) => {
-      return new Promise((resolve, reject) =>
-        setTimeout(() => {
-          resolve(text);
-        }, ms),
-      );
-    }, ([text, ms]) => text);
+    TextResource = ReactCache.unstable_createResource(
+      ([text, ms = 0]) => {
+        return new Promise((resolve, reject) =>
+          setTimeout(() => {
+            resolve(text);
+          }, ms),
+        );
+      },
+      ([text, ms]) => text,
+    );
   });
 
   afterEach(() => {
diff --git a/packages/react-dom/src/__tests__/ReactFunctionComponent-test.js b/packages/react-dom/src/__tests__/ReactFunctionComponent-test.js
index ff9c87be6039..2b33321358ff 100644
--- a/packages/react-dom/src/__tests__/ReactFunctionComponent-test.js
+++ b/packages/react-dom/src/__tests__/ReactFunctionComponent-test.js
@@ -163,11 +163,11 @@ describe('ReactFunctionComponent', () => {
         : // It happens because we don't save _owner in production for
           // function components.
           'Element ref was specified as a string (me) but no owner was set. This could happen for one of' +
-          ' the following reasons:\n' +
-          '1. You may be adding a ref to a function component\n' +
-          "2. You may be adding a ref to a component that was not created inside a component's render method\n" +
-          '3. You have multiple copies of React loaded\n' +
-          'See https://fb.me/react-refs-must-have-owner for more information.',
+            ' the following reasons:\n' +
+            '1. You may be adding a ref to a function component\n' +
+            "2. You may be adding a ref to a component that was not created inside a component's render method\n" +
+            '3. You have multiple copies of React loaded\n' +
+            'See https://fb.me/react-refs-must-have-owner for more information.',
     );
   });
 
diff --git a/packages/react-dom/src/__tests__/ReactMount-test.js b/packages/react-dom/src/__tests__/ReactMount-test.js
index 600a085260a7..8d1b03cb4b4f 100644
--- a/packages/react-dom/src/__tests__/ReactMount-test.js
+++ b/packages/react-dom/src/__tests__/ReactMount-test.js
@@ -59,7 +59,9 @@ describe('ReactMount', () => {
       }
     }
 
-    expect(() => ReactTestUtils.renderIntoDocument(Component)).toErrorDev(
+    expect(() =>
+      ReactTestUtils.renderIntoDocument(Component),
+    ).toErrorDev(
       'Functions are not valid as a React child. ' +
         'This may happen if you return a Component instead of <Component /> from render. ' +
         'Or maybe you meant to call this function rather than return it.',
@@ -125,7 +127,9 @@ describe('ReactMount', () => {
     const container = document.createElement('container');
     container.innerHTML = ReactDOMServer.renderToString(<div />) + ' ';
 
-    expect(() => ReactDOM.hydrate(<div />, container)).toErrorDev(
+    expect(() =>
+      ReactDOM.hydrate(<div />, container),
+    ).toErrorDev(
       'Did not expect server HTML to contain the text node " " in <container>.',
       {withoutStack: true},
     );
@@ -195,7 +199,9 @@ describe('ReactMount', () => {
     // Test that blasting away children throws a warning
     const rootNode = container.firstChild;
 
-    expect(() => ReactDOM.render(<span />, rootNode)).toErrorDev(
+    expect(() =>
+      ReactDOM.render(<span />, rootNode),
+    ).toErrorDev(
       'Warning: render(...): Replacing React-rendered children with a new ' +
         'root component. If you intended to update the children of this node, ' +
         'you should instead have the existing children update their state and ' +
@@ -223,7 +229,9 @@ describe('ReactMount', () => {
     // Make sure ReactDOM and ReactDOMOther are different copies
     expect(ReactDOM).not.toEqual(ReactDOMOther);
 
-    expect(() => ReactDOMOther.unmountComponentAtNode(container)).toErrorDev(
+    expect(() =>
+      ReactDOMOther.unmountComponentAtNode(container),
+    ).toErrorDev(
       "Warning: unmountComponentAtNode(): The node you're attempting to unmount " +
         'was rendered by another copy of React.',
       {withoutStack: true},
diff --git a/packages/react-dom/src/__tests__/ReactMountDestruction-test.js b/packages/react-dom/src/__tests__/ReactMountDestruction-test.js
index 360a6802d945..ed65c4cbfa7e 100644
--- a/packages/react-dom/src/__tests__/ReactMountDestruction-test.js
+++ b/packages/react-dom/src/__tests__/ReactMountDestruction-test.js
@@ -50,7 +50,9 @@ describe('ReactMount', () => {
 
     // Test that unmounting at a root node gives a helpful warning
     const rootDiv = mainContainerDiv.firstChild;
-    expect(() => ReactDOM.unmountComponentAtNode(rootDiv)).toErrorDev(
+    expect(() =>
+      ReactDOM.unmountComponentAtNode(rootDiv),
+    ).toErrorDev(
       "Warning: unmountComponentAtNode(): The node you're attempting to " +
         'unmount was rendered by React and is not a top-level container. You ' +
         'may have accidentally passed in a React root node instead of its ' +
@@ -73,7 +75,9 @@ describe('ReactMount', () => {
 
     // Test that unmounting at a non-root node gives a different warning
     const nonRootDiv = mainContainerDiv.firstChild.firstChild;
-    expect(() => ReactDOM.unmountComponentAtNode(nonRootDiv)).toErrorDev(
+    expect(() =>
+      ReactDOM.unmountComponentAtNode(nonRootDiv),
+    ).toErrorDev(
       "Warning: unmountComponentAtNode(): The node you're attempting to " +
         'unmount was rendered by React and is not a top-level container. ' +
         'Instead, have the parent component update its state and rerender in ' +
diff --git a/packages/react-dom/src/__tests__/ReactMultiChild-test.js b/packages/react-dom/src/__tests__/ReactMultiChild-test.js
index 12b845ef139c..6eb0199be9c8 100644
--- a/packages/react-dom/src/__tests__/ReactMultiChild-test.js
+++ b/packages/react-dom/src/__tests__/ReactMultiChild-test.js
@@ -281,7 +281,16 @@ describe('ReactMultiChild', () => {
   it('should warn for using maps as children with owner info', () => {
     class Parent extends React.Component {
       render() {
-        return <div>{new Map([['foo', 0], ['bar', 1]])}</div>;
+        return (
+          <div>
+            {
+              new Map([
+                ['foo', 0],
+                ['bar', 1],
+              ])
+            }
+          </div>
+        );
       }
     }
     const container = document.createElement('div');
@@ -296,8 +305,8 @@ describe('ReactMultiChild', () => {
 
   it('should warn for using generators as children', () => {
     function* Foo() {
-      yield <h1 key="1">Hello</h1>;
-      yield <h1 key="2">World</h1>;
+      yield (<h1 key="1">Hello</h1>);
+      yield (<h1 key="2">World</h1>);
     }
 
     const div = document.createElement('div');
@@ -318,8 +327,8 @@ describe('ReactMultiChild', () => {
   it('should not warn for using generators in legacy iterables', () => {
     const fooIterable = {
       '@@iterator': function*() {
-        yield <h1 key="1">Hello</h1>;
-        yield <h1 key="2">World</h1>;
+        yield (<h1 key="1">Hello</h1>);
+        yield (<h1 key="2">World</h1>);
       },
     };
 
@@ -338,8 +347,8 @@ describe('ReactMultiChild', () => {
   it('should not warn for using generators in modern iterables', () => {
     const fooIterable = {
       [Symbol.iterator]: function*() {
-        yield <h1 key="1">Hello</h1>;
-        yield <h1 key="2">World</h1>;
+        yield (<h1 key="1">Hello</h1>);
+        yield (<h1 key="2">World</h1>);
       },
     };
 
@@ -374,7 +383,13 @@ describe('ReactMultiChild', () => {
     class Letters extends React.Component {
       render() {
         const letters = this.props.letters.split('');
-        return <div>{letters.map(c => <Letter key={c} char={c} />)}</div>;
+        return (
+          <div>
+            {letters.map(c => (
+              <Letter key={c} char={c} />
+            ))}
+          </div>
+        );
       }
     }
 
diff --git a/packages/react-dom/src/__tests__/ReactRenderDocument-test.js b/packages/react-dom/src/__tests__/ReactRenderDocument-test.js
index a85d86475679..97ff0393f874 100644
--- a/packages/react-dom/src/__tests__/ReactRenderDocument-test.js
+++ b/packages/react-dom/src/__tests__/ReactRenderDocument-test.js
@@ -35,7 +35,9 @@ describe('rendering React components at document', () => {
 
   describe('with old implicit hydration API', () => {
     function expectDeprecationWarningWithFiber(callback) {
-      expect(callback).toWarnDev(
+      expect(
+        callback,
+      ).toWarnDev(
         'render(): Calling ReactDOM.render() to hydrate server-rendered markup ' +
           'will stop working in React v17. Replace the ReactDOM.render() call ' +
           'with ReactDOM.hydrate() if you want React to attach to the server HTML.',
diff --git a/packages/react-dom/src/__tests__/ReactServerRendering-test.js b/packages/react-dom/src/__tests__/ReactServerRendering-test.js
index e68de160575c..bcefcdb65246 100644
--- a/packages/react-dom/src/__tests__/ReactServerRendering-test.js
+++ b/packages/react-dom/src/__tests__/ReactServerRendering-test.js
@@ -644,7 +644,9 @@ describe('ReactDOMServer', () => {
     }
 
     ReactDOMServer.renderToString(<Foo />);
-    expect(() => jest.runOnlyPendingTimers()).toErrorDev(
+    expect(() =>
+      jest.runOnlyPendingTimers(),
+    ).toErrorDev(
       'Warning: setState(...): Can only update a mounting component.' +
         ' This usually means you called setState() outside componentWillMount() on the server.' +
         ' This is a no-op.\n\nPlease check the code for the Foo component.',
@@ -672,7 +674,9 @@ describe('ReactDOMServer', () => {
     }
 
     ReactDOMServer.renderToString(<Baz />);
-    expect(() => jest.runOnlyPendingTimers()).toErrorDev(
+    expect(() =>
+      jest.runOnlyPendingTimers(),
+    ).toErrorDev(
       'Warning: forceUpdate(...): Can only update a mounting component. ' +
         'This usually means you called forceUpdate() outside componentWillMount() on the server. ' +
         'This is a no-op.\n\nPlease check the code for the Baz component.',
diff --git a/packages/react-dom/src/__tests__/ReactTestUtils-test.js b/packages/react-dom/src/__tests__/ReactTestUtils-test.js
index 829010d97823..540f23edd17c 100644
--- a/packages/react-dom/src/__tests__/ReactTestUtils-test.js
+++ b/packages/react-dom/src/__tests__/ReactTestUtils-test.js
@@ -53,7 +53,9 @@ describe('ReactTestUtils', () => {
     MockedComponent.prototype.render = jest.fn();
 
     // Patch it up so it returns its children.
-    expect(() => ReactTestUtils.mockComponent(MockedComponent)).toWarnDev(
+    expect(() =>
+      ReactTestUtils.mockComponent(MockedComponent),
+    ).toWarnDev(
       'ReactTestUtils.mockComponent() is deprecated. ' +
         'Use shallow rendering or jest.mock() instead.\n\n' +
         'See https://fb.me/test-utils-mock-component for more information.',
diff --git a/packages/react-dom/src/__tests__/ReactTestUtilsAct-test.js b/packages/react-dom/src/__tests__/ReactTestUtilsAct-test.js
index 7b380a0b82d7..d68a4a114170 100644
--- a/packages/react-dom/src/__tests__/ReactTestUtilsAct-test.js
+++ b/packages/react-dom/src/__tests__/ReactTestUtilsAct-test.js
@@ -337,12 +337,9 @@ function runActTests(label, render, unmount, rerender) {
               await null;
               setState(x => x + 1);
             }
-            React.useEffect(
-              () => {
-                ticker();
-              },
-              [Math.min(state, 4)],
-            );
+            React.useEffect(() => {
+              ticker();
+            }, [Math.min(state, 4)]);
             return state;
           }
 
@@ -521,13 +518,10 @@ function runActTests(label, render, unmount, rerender) {
             await null;
             setState(x => x + 1);
           }
-          React.useEffect(
-            () => {
-              Scheduler.unstable_yieldValue(state);
-              ticker();
-            },
-            [Math.min(state, 4)],
-          );
+          React.useEffect(() => {
+            Scheduler.unstable_yieldValue(state);
+            ticker();
+          }, [Math.min(state, 4)]);
           return state;
         }
 
diff --git a/packages/react-dom/src/__tests__/ReactTestUtilsActUnmockedScheduler-test.js b/packages/react-dom/src/__tests__/ReactTestUtilsActUnmockedScheduler-test.js
index baa4f63e4ba7..3017096d30bf 100644
--- a/packages/react-dom/src/__tests__/ReactTestUtilsActUnmockedScheduler-test.js
+++ b/packages/react-dom/src/__tests__/ReactTestUtilsActUnmockedScheduler-test.js
@@ -147,13 +147,10 @@ it('can handle cascading promises', async () => {
       await null;
       setState(x => x + 1);
     }
-    React.useEffect(
-      () => {
-        yields.push(state);
-        ticker();
-      },
-      [Math.min(state, 4)],
-    );
+    React.useEffect(() => {
+      yields.push(state);
+      ticker();
+    }, [Math.min(state, 4)]);
     return state;
   }
 
diff --git a/packages/react-dom/src/__tests__/renderSubtreeIntoContainer-test.js b/packages/react-dom/src/__tests__/renderSubtreeIntoContainer-test.js
index 881c7b15d794..c5ad79e2eba8 100644
--- a/packages/react-dom/src/__tests__/renderSubtreeIntoContainer-test.js
+++ b/packages/react-dom/src/__tests__/renderSubtreeIntoContainer-test.js
@@ -312,11 +312,11 @@ describe('renderSubtreeIntoContainer', () => {
     }).toThrow(
       __DEV__
         ? '_processChildContext is not available in React 16+. This likely ' +
-          'means you have multiple copies of React and are attempting to nest ' +
-          'a React 15 tree inside a React 16 tree using ' +
-          "unstable_renderSubtreeIntoContainer, which isn't supported. Try to " +
-          'make sure you have only one copy of React (and ideally, switch to ' +
-          'ReactDOM.createPortal).'
+            'means you have multiple copies of React and are attempting to nest ' +
+            'a React 15 tree inside a React 16 tree using ' +
+            "unstable_renderSubtreeIntoContainer, which isn't supported. Try to " +
+            'make sure you have only one copy of React (and ideally, switch to ' +
+            'ReactDOM.createPortal).'
         : "Cannot read property '_processChildContext' of undefined",
     );
   });
diff --git a/packages/react-dom/src/client/ReactDOMLegacy.js b/packages/react-dom/src/client/ReactDOMLegacy.js
index aca2a7a7adbf..3da5e468c267 100644
--- a/packages/react-dom/src/client/ReactDOMLegacy.js
+++ b/packages/react-dom/src/client/ReactDOMLegacy.js
@@ -385,9 +385,9 @@ export function unmountComponentAtNode(container: DOMContainer) {
             'was rendered by React and is not a top-level container. %s',
           isContainerReactRoot
             ? 'You may have accidentally passed in a React root node instead ' +
-              'of its container.'
+                'of its container.'
             : 'Instead, have the parent component update its state and ' +
-              'rerender in order to remove this component.',
+                'rerender in order to remove this component.',
         );
       }
     }
diff --git a/packages/react-dom/src/events/SelectEventPlugin.js b/packages/react-dom/src/events/SelectEventPlugin.js
index cd1c1a436ac7..b358e896eaf3 100644
--- a/packages/react-dom/src/events/SelectEventPlugin.js
+++ b/packages/react-dom/src/events/SelectEventPlugin.js
@@ -94,8 +94,8 @@ function getEventTargetDocument(eventTarget) {
   return eventTarget.window === eventTarget
     ? eventTarget.document
     : eventTarget.nodeType === DOCUMENT_NODE
-      ? eventTarget
-      : eventTarget.ownerDocument;
+    ? eventTarget
+    : eventTarget.ownerDocument;
 }
 
 /**
diff --git a/packages/react-dom/src/events/SyntheticWheelEvent.js b/packages/react-dom/src/events/SyntheticWheelEvent.js
index 7c6a1d1f4eef..e8e152d3414c 100644
--- a/packages/react-dom/src/events/SyntheticWheelEvent.js
+++ b/packages/react-dom/src/events/SyntheticWheelEvent.js
@@ -16,20 +16,20 @@ const SyntheticWheelEvent = SyntheticMouseEvent.extend({
     return 'deltaX' in event
       ? event.deltaX
       : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
-        'wheelDeltaX' in event
-        ? -event.wheelDeltaX
-        : 0;
+      'wheelDeltaX' in event
+      ? -event.wheelDeltaX
+      : 0;
   },
   deltaY(event) {
     return 'deltaY' in event
       ? event.deltaY
       : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
-        'wheelDeltaY' in event
-        ? -event.wheelDeltaY
-        : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
-          'wheelDelta' in event
-          ? -event.wheelDelta
-          : 0;
+      'wheelDeltaY' in event
+      ? -event.wheelDeltaY
+      : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
+      'wheelDelta' in event
+      ? -event.wheelDelta
+      : 0;
   },
   deltaZ: null,
 
diff --git a/packages/react-dom/src/events/__tests__/SimpleEventPlugin-test.internal.js b/packages/react-dom/src/events/__tests__/SimpleEventPlugin-test.internal.js
index 5ddf53fb3344..43d2ad44397c 100644
--- a/packages/react-dom/src/events/__tests__/SimpleEventPlugin-test.internal.js
+++ b/packages/react-dom/src/events/__tests__/SimpleEventPlugin-test.internal.js
@@ -388,9 +388,7 @@ describe('SimpleEventPlugin', function() {
       class Button extends React.Component {
         state = {lowPriCount: 0};
         render() {
-          const text = `High-pri count: ${
-            this.props.highPriCount
-          }, Low-pri count: ${this.state.lowPriCount}`;
+          const text = `High-pri count: ${this.props.highPriCount}, Low-pri count: ${this.state.lowPriCount}`;
           Scheduler.unstable_yieldValue(text);
           return (
             <button
diff --git a/packages/react-dom/src/events/__tests__/SyntheticEvent-test.js b/packages/react-dom/src/events/__tests__/SyntheticEvent-test.js
index 6e3c2beff4d4..5e1bec454b65 100644
--- a/packages/react-dom/src/events/__tests__/SyntheticEvent-test.js
+++ b/packages/react-dom/src/events/__tests__/SyntheticEvent-test.js
@@ -151,18 +151,15 @@ describe('SyntheticEvent', () => {
       'See https://fb.me/react-event-pooling for more information.';
 
     // once for each property accessed
-    expect(() => expect(syntheticEvent.type).toBe(null)).toErrorDev(
-      getExpectedWarning('type'),
-      {withoutStack: true},
-    );
-    expect(() => expect(syntheticEvent.nativeEvent).toBe(null)).toErrorDev(
-      getExpectedWarning('nativeEvent'),
-      {withoutStack: true},
-    );
-    expect(() => expect(syntheticEvent.target).toBe(null)).toErrorDev(
-      getExpectedWarning('target'),
-      {withoutStack: true},
-    );
+    expect(() =>
+      expect(syntheticEvent.type).toBe(null),
+    ).toErrorDev(getExpectedWarning('type'), {withoutStack: true});
+    expect(() =>
+      expect(syntheticEvent.nativeEvent).toBe(null),
+    ).toErrorDev(getExpectedWarning('nativeEvent'), {withoutStack: true});
+    expect(() =>
+      expect(syntheticEvent.target).toBe(null),
+    ).toErrorDev(getExpectedWarning('target'), {withoutStack: true});
 
     expect(expectedCount).toBe(1);
   });
@@ -211,7 +208,9 @@ describe('SyntheticEvent', () => {
     event.initEvent('click', true, true);
     node.dispatchEvent(event);
 
-    expect(() => syntheticEvent.preventDefault()).toErrorDev(
+    expect(() =>
+      syntheticEvent.preventDefault(),
+    ).toErrorDev(
       'Warning: This synthetic event is reused for performance reasons. If ' +
         "you're seeing this, you're accessing the method `preventDefault` on a " +
         'released/nullified synthetic event. This is a no-op function. If you must ' +
@@ -238,7 +237,9 @@ describe('SyntheticEvent', () => {
 
     node.dispatchEvent(event);
 
-    expect(() => syntheticEvent.stopPropagation()).toErrorDev(
+    expect(() =>
+      syntheticEvent.stopPropagation(),
+    ).toErrorDev(
       'Warning: This synthetic event is reused for performance reasons. If ' +
         "you're seeing this, you're accessing the method `stopPropagation` on a " +
         'released/nullified synthetic event. This is a no-op function. If you must ' +
diff --git a/packages/react-interactions/accessibility/src/FocusContain.js b/packages/react-interactions/accessibility/src/FocusContain.js
index 81e314eddcaa..78316af93907 100644
--- a/packages/react-interactions/accessibility/src/FocusContain.js
+++ b/packages/react-interactions/accessibility/src/FocusContain.js
@@ -64,22 +64,19 @@ export default function FocusContain({
       }
     },
   });
-  useLayoutEffect(
-    () => {
-      const scope = scopeRef.current;
-      if (
-        scope !== null &&
-        disabled !== true &&
-        !scope.containsNode(document.activeElement)
-      ) {
-        const fistElem = scope.queryFirstNode(scopeQuery);
-        if (fistElem !== null) {
-          fistElem.focus();
-        }
+  useLayoutEffect(() => {
+    const scope = scopeRef.current;
+    if (
+      scope !== null &&
+      disabled !== true &&
+      !scope.containsNode(document.activeElement)
+    ) {
+      const fistElem = scope.queryFirstNode(scopeQuery);
+      if (fistElem !== null) {
+        fistElem.focus();
       }
-    },
-    [disabled],
-  );
+    }
+  }, [disabled]);
 
   return (
     <FocusContainScope
diff --git a/packages/react-interactions/events/src/dom/Press.js b/packages/react-interactions/events/src/dom/Press.js
index 574ca806832a..6c5a240eab49 100644
--- a/packages/react-interactions/events/src/dom/Press.js
+++ b/packages/react-interactions/events/src/dom/Press.js
@@ -95,9 +95,9 @@ function isValidKey(e): boolean {
   const {tagName, isContentEditable} = (target: any);
   return (
     (key === 'Enter' || key === ' ' || key === 'Spacebar') &&
-    (tagName !== 'INPUT' &&
-      tagName !== 'TEXTAREA' &&
-      isContentEditable !== true)
+    tagName !== 'INPUT' &&
+    tagName !== 'TEXTAREA' &&
+    isContentEditable !== true
   );
 }
 
diff --git a/packages/react-interactions/events/src/dom/PressLegacy.js b/packages/react-interactions/events/src/dom/PressLegacy.js
index 1b44ddf57a62..1c09789ef72b 100644
--- a/packages/react-interactions/events/src/dom/PressLegacy.js
+++ b/packages/react-interactions/events/src/dom/PressLegacy.js
@@ -339,9 +339,9 @@ function isValidKeyboardEvent(nativeEvent: Object): boolean {
   // "Spacebar" is for IE 11
   return (
     (key === 'Enter' || key === ' ' || key === 'Spacebar') &&
-    (tagName !== 'INPUT' &&
-      tagName !== 'TEXTAREA' &&
-      isContentEditable !== true)
+    tagName !== 'INPUT' &&
+    tagName !== 'TEXTAREA' &&
+    isContentEditable !== true
   );
 }
 
@@ -480,7 +480,10 @@ function updateIsPressWithinResponderRegion(
     bottom != null &&
     x !== null &&
     y !== null &&
-    (x >= left && x <= right && y >= top && y <= bottom);
+    x >= left &&
+    x <= right &&
+    y >= top &&
+    y <= bottom;
 }
 
 // After some investigation work, screen reader virtual
diff --git a/packages/react-native-renderer/src/ReactNativeHostConfig.js b/packages/react-native-renderer/src/ReactNativeHostConfig.js
index 33ce87ddffe5..1871c48786aa 100644
--- a/packages/react-native-renderer/src/ReactNativeHostConfig.js
+++ b/packages/react-native-renderer/src/ReactNativeHostConfig.js
@@ -163,11 +163,10 @@ export function finalizeInitialChildren(
 
   // Map from child objects to native tags.
   // Either way we need to pass a copy of the Array to prevent it from being frozen.
-  const nativeTags = parentInstance._children.map(
-    child =>
-      typeof child === 'number'
-        ? child // Leaf node (eg text)
-        : child._nativeTag,
+  const nativeTags = parentInstance._children.map(child =>
+    typeof child === 'number'
+      ? child // Leaf node (eg text)
+      : child._nativeTag,
   );
 
   UIManager.setChildren(
diff --git a/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js b/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js
index 3290abcd58cb..51dd4ca83531 100644
--- a/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js
+++ b/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js
@@ -280,11 +280,9 @@ describe('ReactFabric', () => {
       expect(nativeFabricUIManager.dispatchCommand).not.toBeCalled();
       ReactFabric.dispatchCommand(viewRef, 'updateCommand', [10, 20]);
       expect(nativeFabricUIManager.dispatchCommand).toHaveBeenCalledTimes(1);
-      expect(nativeFabricUIManager.dispatchCommand).toHaveBeenCalledWith(
-        expect.any(Object),
-        'updateCommand',
-        [10, 20],
-      );
+      expect(
+        nativeFabricUIManager.dispatchCommand,
+      ).toHaveBeenCalledWith(expect.any(Object), 'updateCommand', [10, 20]);
     });
   });
 
@@ -550,7 +548,11 @@ describe('ReactFabric', () => {
       render() {
         const chars = this.props.chars.split('');
         return (
-          <View>{chars.map(text => <View key={text} title={text} />)}</View>
+          <View>
+            {chars.map(text => (
+              <View key={text} title={text} />
+            ))}
+          </View>
         );
       }
     }
@@ -586,7 +588,11 @@ describe('ReactFabric', () => {
       render() {
         const chars = this.state.chars.split('');
         return (
-          <View>{chars.map(text => <View key={text} title={text} />)}</View>
+          <View>
+            {chars.map(text => (
+              <View key={text} title={text} />
+            ))}
+          </View>
         );
       }
     }
diff --git a/packages/react-native-renderer/src/__tests__/ReactFabricAndNative-test.internal.js b/packages/react-native-renderer/src/__tests__/ReactFabricAndNative-test.internal.js
index 5efeebfd9211..5156b67cc872 100644
--- a/packages/react-native-renderer/src/__tests__/ReactFabricAndNative-test.internal.js
+++ b/packages/react-native-renderer/src/__tests__/ReactFabricAndNative-test.internal.js
@@ -87,11 +87,9 @@ describe('created with ReactFabric called with ReactNative', () => {
     expect(nativeFabricUIManager.dispatchCommand).not.toBeCalled();
     ReactNative.dispatchCommand(ref.current, 'myCommand', [10, 20]);
     expect(nativeFabricUIManager.dispatchCommand).toHaveBeenCalledTimes(1);
-    expect(nativeFabricUIManager.dispatchCommand).toHaveBeenCalledWith(
-      expect.any(Object),
-      'myCommand',
-      [10, 20],
-    );
+    expect(
+      nativeFabricUIManager.dispatchCommand,
+    ).toHaveBeenCalledWith(expect.any(Object), 'myCommand', [10, 20]);
     expect(UIManager.dispatchViewManagerCommand).not.toBeCalled();
   });
 });
@@ -167,11 +165,9 @@ describe('created with ReactNative called with ReactFabric', () => {
     expect(UIManager.dispatchViewManagerCommand).not.toBeCalled();
     ReactFabric.dispatchCommand(ref.current, 'myCommand', [10, 20]);
     expect(UIManager.dispatchViewManagerCommand).toHaveBeenCalledTimes(1);
-    expect(UIManager.dispatchViewManagerCommand).toHaveBeenCalledWith(
-      expect.any(Number),
-      'myCommand',
-      [10, 20],
-    );
+    expect(
+      UIManager.dispatchViewManagerCommand,
+    ).toHaveBeenCalledWith(expect.any(Number), 'myCommand', [10, 20]);
 
     expect(nativeFabricUIManager.dispatchCommand).not.toBeCalled();
   });
diff --git a/packages/react-native-renderer/src/__tests__/ReactNativeMount-test.internal.js b/packages/react-native-renderer/src/__tests__/ReactNativeMount-test.internal.js
index 946638b72a8c..ac38fcfe2fac 100644
--- a/packages/react-native-renderer/src/__tests__/ReactNativeMount-test.internal.js
+++ b/packages/react-native-renderer/src/__tests__/ReactNativeMount-test.internal.js
@@ -125,11 +125,9 @@ describe('ReactNative', () => {
       expect(UIManager.dispatchViewManagerCommand).not.toBeCalled();
       ReactNative.dispatchCommand(viewRef, 'updateCommand', [10, 20]);
       expect(UIManager.dispatchViewManagerCommand).toHaveBeenCalledTimes(1);
-      expect(UIManager.dispatchViewManagerCommand).toHaveBeenCalledWith(
-        expect.any(Number),
-        'updateCommand',
-        [10, 20],
-      );
+      expect(
+        UIManager.dispatchViewManagerCommand,
+      ).toHaveBeenCalledWith(expect.any(Number), 'updateCommand', [10, 20]);
     });
   });
 
@@ -436,7 +434,11 @@ describe('ReactNative', () => {
       render() {
         const chars = this.props.chars.split('');
         return (
-          <View>{chars.map(text => <View key={text} title={text} />)}</View>
+          <View>
+            {chars.map(text => (
+              <View key={text} title={text} />
+            ))}
+          </View>
         );
       }
     }
diff --git a/packages/react-reconciler/src/ReactFiberBeginWork.js b/packages/react-reconciler/src/ReactFiberBeginWork.js
index b65e8610f6db..6c34f2bbf4c6 100644
--- a/packages/react-reconciler/src/ReactFiberBeginWork.js
+++ b/packages/react-reconciler/src/ReactFiberBeginWork.js
@@ -2384,7 +2384,9 @@ function validateSuspenseListChildren(
   if (__DEV__) {
     if (
       (revealOrder === 'forwards' || revealOrder === 'backwards') &&
-      (children !== undefined && children !== null && children !== false)
+      children !== undefined &&
+      children !== null &&
+      children !== false
     ) {
       if (Array.isArray(children)) {
         for (let i = 0; i < children.length; i++) {
diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.js b/packages/react-reconciler/src/ReactFiberCommitWork.js
index a5bd4cf3cc1b..953adfb46844 100644
--- a/packages/react-reconciler/src/ReactFiberCommitWork.js
+++ b/packages/react-reconciler/src/ReactFiberCommitWork.js
@@ -297,9 +297,7 @@ function commitBeforeMutationLifeCycles(
             prevState,
           );
           if (__DEV__) {
-            const didWarnSet = ((didWarnAboutUndefinedSnapshotBeforeUpdate: any): Set<
-              mixed,
-            >);
+            const didWarnSet = ((didWarnAboutUndefinedSnapshotBeforeUpdate: any): Set<mixed>);
             if (snapshot === undefined && !didWarnSet.has(finishedWork.type)) {
               didWarnSet.add(finishedWork.type);
               console.error(
@@ -940,8 +938,7 @@ function commitContainer(finishedWork: Fiber) {
       const portalOrRoot: {
         containerInfo: Container,
         pendingChildren: ChildSet,
-      } =
-        finishedWork.stateNode;
+      } = finishedWork.stateNode;
       const {containerInfo, pendingChildren} = portalOrRoot;
       replaceContainerChildren(containerInfo, pendingChildren);
       return;
diff --git a/packages/react-reconciler/src/ReactFiberCompleteWork.js b/packages/react-reconciler/src/ReactFiberCompleteWork.js
index a07256f48f9d..46ebd9799fd2 100644
--- a/packages/react-reconciler/src/ReactFiberCompleteWork.js
+++ b/packages/react-reconciler/src/ReactFiberCompleteWork.js
@@ -435,8 +435,7 @@ if (supportsMutation) {
     const portalOrRoot: {
       containerInfo: Container,
       pendingChildren: ChildSet,
-    } =
-      workInProgress.stateNode;
+    } = workInProgress.stateNode;
     const childrenUnchanged = workInProgress.firstEffect === null;
     if (childrenUnchanged) {
       // No changes, just reuse the existing instance.
@@ -1201,8 +1200,7 @@ function completeWork(
         let fundamentalInstance: ReactFundamentalComponentInstance<
           any,
           any,
-        > | null =
-          workInProgress.stateNode;
+        > | null = workInProgress.stateNode;
 
         if (fundamentalInstance === null) {
           const getInitialState = fundamentalImpl.getInitialState;
diff --git a/packages/react-reconciler/src/ReactFiberHooks.js b/packages/react-reconciler/src/ReactFiberHooks.js
index 03711d756a26..bd540ef9a0b6 100644
--- a/packages/react-reconciler/src/ReactFiberHooks.js
+++ b/packages/react-reconciler/src/ReactFiberHooks.js
@@ -1141,18 +1141,15 @@ function mountDeferredValue<T>(
   config: TimeoutConfig | void | null,
 ): T {
   const [prevValue, setValue] = mountState(value);
-  mountEffect(
-    () => {
-      const previousConfig = ReactCurrentBatchConfig.suspense;
-      ReactCurrentBatchConfig.suspense = config === undefined ? null : config;
-      try {
-        setValue(value);
-      } finally {
-        ReactCurrentBatchConfig.suspense = previousConfig;
-      }
-    },
-    [value, config],
-  );
+  mountEffect(() => {
+    const previousConfig = ReactCurrentBatchConfig.suspense;
+    ReactCurrentBatchConfig.suspense = config === undefined ? null : config;
+    try {
+      setValue(value);
+    } finally {
+      ReactCurrentBatchConfig.suspense = previousConfig;
+    }
+  }, [value, config]);
   return prevValue;
 }
 
@@ -1161,18 +1158,15 @@ function updateDeferredValue<T>(
   config: TimeoutConfig | void | null,
 ): T {
   const [prevValue, setValue] = updateState(value);
-  updateEffect(
-    () => {
-      const previousConfig = ReactCurrentBatchConfig.suspense;
-      ReactCurrentBatchConfig.suspense = config === undefined ? null : config;
-      try {
-        setValue(value);
-      } finally {
-        ReactCurrentBatchConfig.suspense = previousConfig;
-      }
-    },
-    [value, config],
-  );
+  updateEffect(() => {
+    const previousConfig = ReactCurrentBatchConfig.suspense;
+    ReactCurrentBatchConfig.suspense = config === undefined ? null : config;
+    try {
+      setValue(value);
+    } finally {
+      ReactCurrentBatchConfig.suspense = previousConfig;
+    }
+  }, [value, config]);
   return prevValue;
 }
 
diff --git a/packages/react-reconciler/src/ReactFiberRoot.js b/packages/react-reconciler/src/ReactFiberRoot.js
index f1314e310801..ee6ebbca5d3f 100644
--- a/packages/react-reconciler/src/ReactFiberRoot.js
+++ b/packages/react-reconciler/src/ReactFiberRoot.js
@@ -163,8 +163,8 @@ export function isRootSuspendedAtTime(
   const lastSuspendedTime = root.lastSuspendedTime;
   return (
     firstSuspendedTime !== NoWork &&
-    (firstSuspendedTime >= expirationTime &&
-      lastSuspendedTime <= expirationTime)
+    firstSuspendedTime >= expirationTime &&
+    lastSuspendedTime <= expirationTime
   );
 }
 
diff --git a/packages/react-reconciler/src/ReactFiberWorkLoop.js b/packages/react-reconciler/src/ReactFiberWorkLoop.js
index bbf9c96a6f90..c0deae8d75f9 100644
--- a/packages/react-reconciler/src/ReactFiberWorkLoop.js
+++ b/packages/react-reconciler/src/ReactFiberWorkLoop.js
@@ -2466,16 +2466,16 @@ function jnd(timeElapsed: number) {
   return timeElapsed < 120
     ? 120
     : timeElapsed < 480
-      ? 480
-      : timeElapsed < 1080
-        ? 1080
-        : timeElapsed < 1920
-          ? 1920
-          : timeElapsed < 3000
-            ? 3000
-            : timeElapsed < 4320
-              ? 4320
-              : ceil(timeElapsed / 1960) * 1960;
+    ? 480
+    : timeElapsed < 1080
+    ? 1080
+    : timeElapsed < 1920
+    ? 1920
+    : timeElapsed < 3000
+    ? 3000
+    : timeElapsed < 4320
+    ? 4320
+    : ceil(timeElapsed / 1960) * 1960;
 }
 
 function computeMsUntilSuspenseLoadingDelay(
diff --git a/packages/react-reconciler/src/__tests__/ReactBatchedMode-test.internal.js b/packages/react-reconciler/src/__tests__/ReactBatchedMode-test.internal.js
index 19ab07bc6646..1104d0bcbabe 100644
--- a/packages/react-reconciler/src/__tests__/ReactBatchedMode-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactBatchedMode-test.internal.js
@@ -18,14 +18,17 @@ describe('ReactBlockingMode', () => {
     ReactCache = require('react-cache');
     Suspense = React.Suspense;
 
-    TextResource = ReactCache.unstable_createResource(([text, ms = 0]) => {
-      return new Promise((resolve, reject) =>
-        setTimeout(() => {
-          Scheduler.unstable_yieldValue(`Promise resolved [${text}]`);
-          resolve(text);
-        }, ms),
-      );
-    }, ([text, ms]) => text);
+    TextResource = ReactCache.unstable_createResource(
+      ([text, ms = 0]) => {
+        return new Promise((resolve, reject) =>
+          setTimeout(() => {
+            Scheduler.unstable_yieldValue(`Promise resolved [${text}]`);
+            resolve(text);
+          }, ms),
+        );
+      },
+      ([text, ms]) => text,
+    );
   });
 
   function Text(props) {
diff --git a/packages/react-reconciler/src/__tests__/ReactFragment-test.js b/packages/react-reconciler/src/__tests__/ReactFragment-test.js
index 10537e0d5ab3..c258b25146ac 100644
--- a/packages/react-reconciler/src/__tests__/ReactFragment-test.js
+++ b/packages/react-reconciler/src/__tests__/ReactFragment-test.js
@@ -23,8 +23,8 @@ describe('ReactFragment', () => {
   });
 
   function div(...children) {
-    children = children.map(
-      c => (typeof c === 'string' ? {text: c, hidden: false} : c),
+    children = children.map(c =>
+      typeof c === 'string' ? {text: c, hidden: false} : c,
     );
     return {type: 'div', children, prop: undefined, hidden: false};
   }
diff --git a/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js b/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js
index b273a66755ec..2ebf8d16a85e 100644
--- a/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactHooks-test.internal.js
@@ -625,10 +625,13 @@ describe('ReactHooks', () => {
   it('warns if switching from dependencies to no dependencies', () => {
     const {useMemo} = React;
     function App({text, hasDeps}) {
-      const resolvedText = useMemo(() => {
-        Scheduler.unstable_yieldValue('Compute');
-        return text.toUpperCase();
-      }, hasDeps ? null : [text]);
+      const resolvedText = useMemo(
+        () => {
+          Scheduler.unstable_yieldValue('Compute');
+          return text.toUpperCase();
+        },
+        hasDeps ? null : [text],
+      );
       return resolvedText;
     }
 
@@ -1183,7 +1186,10 @@ describe('ReactHooks', () => {
       React.useLayoutEffect(() => {});
       React.useCallback(() => {});
       React.useRef();
-      React.useImperativeHandle(() => {}, () => {});
+      React.useImperativeHandle(
+        () => {},
+        () => {},
+      );
       if (__DEV__) {
         React.useDebugValue();
       }
diff --git a/packages/react-reconciler/src/__tests__/ReactHooksWithNoopRenderer-test.internal.js b/packages/react-reconciler/src/__tests__/ReactHooksWithNoopRenderer-test.internal.js
index fc8f1661a382..8ded101a09e1 100644
--- a/packages/react-reconciler/src/__tests__/ReactHooksWithNoopRenderer-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactHooksWithNoopRenderer-test.internal.js
@@ -63,14 +63,17 @@ describe('ReactHooksWithNoopRenderer', () => {
     Suspense = React.Suspense;
     act = ReactNoop.act;
 
-    TextResource = ReactCache.unstable_createResource(([text, ms = 0]) => {
-      return new Promise((resolve, reject) =>
-        setTimeout(() => {
-          Scheduler.unstable_yieldValue(`Promise resolved [${text}]`);
-          resolve(text);
-        }, ms),
-      );
-    }, ([text, ms]) => text);
+    TextResource = ReactCache.unstable_createResource(
+      ([text, ms = 0]) => {
+        return new Promise((resolve, reject) =>
+          setTimeout(() => {
+            Scheduler.unstable_yieldValue(`Promise resolved [${text}]`);
+            resolve(text);
+          }, ms),
+        );
+      },
+      ([text, ms]) => text,
+    );
   });
 
   function span(prop) {
@@ -846,13 +849,10 @@ describe('ReactHooksWithNoopRenderer', () => {
     it('updates have async priority', () => {
       function Counter(props) {
         const [count, updateCount] = useState('(empty)');
-        useEffect(
-          () => {
-            Scheduler.unstable_yieldValue(`Schedule update [${props.count}]`);
-            updateCount(props.count);
-          },
-          [props.count],
-        );
+        useEffect(() => {
+          Scheduler.unstable_yieldValue(`Schedule update [${props.count}]`);
+          updateCount(props.count);
+        }, [props.count]);
         return <Text text={'Count: ' + count} />;
       }
       act(() => {
@@ -884,13 +884,10 @@ describe('ReactHooksWithNoopRenderer', () => {
     it('updates have async priority even if effects are flushed early', () => {
       function Counter(props) {
         const [count, updateCount] = useState('(empty)');
-        useEffect(
-          () => {
-            Scheduler.unstable_yieldValue(`Schedule update [${props.count}]`);
-            updateCount(props.count);
-          },
-          [props.count],
-        );
+        useEffect(() => {
+          Scheduler.unstable_yieldValue(`Schedule update [${props.count}]`);
+          updateCount(props.count);
+        }, [props.count]);
         return <Text text={'Count: ' + count} />;
       }
       act(() => {
@@ -1038,19 +1035,16 @@ describe('ReactHooksWithNoopRenderer', () => {
       () => {
         function Counter(props) {
           const [count, updateCount] = useState('(empty)');
-          useEffect(
-            () => {
-              // Update multiple times. These should all be batched together in
-              // a single render.
-              updateCount(props.count);
-              updateCount(props.count);
-              updateCount(props.count);
-              updateCount(props.count);
-              updateCount(props.count);
-              updateCount(props.count);
-            },
-            [props.count],
-          );
+          useEffect(() => {
+            // Update multiple times. These should all be batched together in
+            // a single render.
+            updateCount(props.count);
+            updateCount(props.count);
+            updateCount(props.count);
+            updateCount(props.count);
+            updateCount(props.count);
+            updateCount(props.count);
+          }, [props.count]);
           return <Text text={'Count: ' + count} />;
         }
         act(() => {
@@ -1071,15 +1065,12 @@ describe('ReactHooksWithNoopRenderer', () => {
     it('flushSync is not allowed', () => {
       function Counter(props) {
         const [count, updateCount] = useState('(empty)');
-        useEffect(
-          () => {
-            Scheduler.unstable_yieldValue(`Schedule update [${props.count}]`);
-            ReactNoop.flushSync(() => {
-              updateCount(props.count);
-            });
-          },
-          [props.count],
-        );
+        useEffect(() => {
+          Scheduler.unstable_yieldValue(`Schedule update [${props.count}]`);
+          ReactNoop.flushSync(() => {
+            updateCount(props.count);
+          });
+        }, [props.count]);
         return <Text text={'Count: ' + count} />;
       }
       act(() => {
@@ -1227,15 +1218,12 @@ describe('ReactHooksWithNoopRenderer', () => {
     it('skips effect if inputs have not changed', () => {
       function Counter(props) {
         const text = `${props.label}: ${props.count}`;
-        useEffect(
-          () => {
-            Scheduler.unstable_yieldValue(`Did create [${text}]`);
-            return () => {
-              Scheduler.unstable_yieldValue(`Did destroy [${text}]`);
-            };
-          },
-          [props.label, props.count],
-        );
+        useEffect(() => {
+          Scheduler.unstable_yieldValue(`Did create [${text}]`);
+          return () => {
+            Scheduler.unstable_yieldValue(`Did destroy [${text}]`);
+          };
+        }, [props.label, props.count]);
         return <Text text={text} />;
       }
       act(() => {
@@ -1699,13 +1687,10 @@ describe('ReactHooksWithNoopRenderer', () => {
     it('memoizes value by comparing to previous inputs', () => {
       function CapitalizedText(props) {
         const text = props.text;
-        const capitalizedText = useMemo(
-          () => {
-            Scheduler.unstable_yieldValue(`Capitalize '${text}'`);
-            return text.toUpperCase();
-          },
-          [text],
-        );
+        const capitalizedText = useMemo(() => {
+          Scheduler.unstable_yieldValue(`Capitalize '${text}'`);
+          return text.toUpperCase();
+        }, [text]);
         return <Text text={capitalizedText} />;
       }
 
@@ -2364,13 +2349,10 @@ describe('ReactHooksWithNoopRenderer', () => {
         Scheduler.unstable_yieldValue('Reducer: ' + count);
         return count;
       }, -1);
-      useEffect(
-        () => {
-          Scheduler.unstable_yieldValue('Effect: ' + count);
-          dispatch();
-        },
-        [count],
-      );
+      useEffect(() => {
+        Scheduler.unstable_yieldValue('Effect: ' + count);
+        dispatch();
+      }, [count]);
       Scheduler.unstable_yieldValue('Render: ' + state);
       return count;
     }
diff --git a/packages/react-reconciler/src/__tests__/ReactIncremental-test.internal.js b/packages/react-reconciler/src/__tests__/ReactIncremental-test.internal.js
index 901eacc9aa73..e39b055f79c5 100644
--- a/packages/react-reconciler/src/__tests__/ReactIncremental-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactIncremental-test.internal.js
@@ -2000,7 +2000,9 @@ describe('ReactIncremental', () => {
     }
 
     ReactNoop.render(<Recurse />);
-    expect(() => expect(Scheduler).toFlushWithoutYielding()).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushWithoutYielding(),
+    ).toErrorDev(
       'Legacy context API has been detected within a strict-mode tree.\n\n' +
         'The old API will be supported in all 16.x releases, but applications ' +
         'using it should migrate to the new version.\n\n' +
@@ -2194,7 +2196,9 @@ describe('ReactIncremental', () => {
         </IndirectionFn>
       </Intl>,
     );
-    expect(() => expect(Scheduler).toFlushWithoutYielding()).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushWithoutYielding(),
+    ).toErrorDev(
       'Legacy context API has been detected within a strict-mode tree.\n\n' +
         'The old API will be supported in all 16.x releases, but applications ' +
         'using it should migrate to the new version.\n\n' +
@@ -2288,7 +2292,9 @@ describe('ReactIncremental', () => {
         </IndirectionFn>
       </Stateful>,
     );
-    expect(() => expect(Scheduler).toFlushWithoutYielding()).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushWithoutYielding(),
+    ).toErrorDev(
       'Legacy context API has been detected within a strict-mode tree.\n\n' +
         'The old API will be supported in all 16.x releases, but applications ' +
         'using it should migrate to the new version.\n\n' +
@@ -2359,7 +2365,9 @@ describe('ReactIncremental', () => {
 
     // Init
     ReactNoop.render(<Root />);
-    expect(() => expect(Scheduler).toFlushWithoutYielding()).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushWithoutYielding(),
+    ).toErrorDev(
       'Legacy context API has been detected within a strict-mode tree.\n\n' +
         'The old API will be supported in all 16.x releases, but applications ' +
         'using it should migrate to the new version.\n\n' +
@@ -2411,7 +2419,9 @@ describe('ReactIncremental', () => {
 
     // Init
     ReactNoop.render(<Root />);
-    expect(() => expect(Scheduler).toFlushWithoutYielding()).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushWithoutYielding(),
+    ).toErrorDev(
       'Legacy context API has been detected within a strict-mode tree.\n\n' +
         'The old API will be supported in all 16.x releases, but applications ' +
         'using it should migrate to the new version.\n\n' +
@@ -2612,7 +2622,9 @@ describe('ReactIncremental', () => {
       </TopContextProvider>,
     );
 
-    expect(() => expect(Scheduler).toFlushWithoutYielding()).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushWithoutYielding(),
+    ).toErrorDev(
       'Legacy context API has been detected within a strict-mode tree.\n\n' +
         'The old API will be supported in all 16.x releases, but applications ' +
         'using it should migrate to the new version.\n\n' +
@@ -2676,7 +2688,9 @@ describe('ReactIncremental', () => {
       </TopContextProvider>,
     );
 
-    expect(() => expect(Scheduler).toFlushWithoutYielding()).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushWithoutYielding(),
+    ).toErrorDev(
       'Legacy context API has been detected within a strict-mode tree.\n\n' +
         'The old API will be supported in all 16.x releases, but applications ' +
         'using it should migrate to the new version.\n\n' +
@@ -2749,7 +2763,9 @@ describe('ReactIncremental', () => {
       </TopContextProvider>,
     );
 
-    expect(() => expect(Scheduler).toFlushWithoutYielding()).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushWithoutYielding(),
+    ).toErrorDev(
       'Legacy context API has been detected within a strict-mode tree.\n\n' +
         'The old API will be supported in all 16.x releases, but applications ' +
         'using it should migrate to the new version.\n\n' +
@@ -2832,7 +2848,9 @@ describe('ReactIncremental', () => {
       </TopContextProvider>,
     );
 
-    expect(() => expect(Scheduler).toFlushWithoutYielding()).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushWithoutYielding(),
+    ).toErrorDev(
       'Legacy context API has been detected within a strict-mode tree.\n\n' +
         'The old API will be supported in all 16.x releases, but applications ' +
         'using it should migrate to the new version.\n\n' +
diff --git a/packages/react-reconciler/src/__tests__/ReactIncrementalErrorHandling-test.internal.js b/packages/react-reconciler/src/__tests__/ReactIncrementalErrorHandling-test.internal.js
index d006b0783dc6..519c2d3f3a85 100644
--- a/packages/react-reconciler/src/__tests__/ReactIncrementalErrorHandling-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactIncrementalErrorHandling-test.internal.js
@@ -1148,7 +1148,9 @@ describe('ReactIncrementalErrorHandling', () => {
         <Connector />
       </Provider>,
     );
-    expect(() => expect(Scheduler).toFlushWithoutYielding()).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushWithoutYielding(),
+    ).toErrorDev(
       'Legacy context API has been detected within a strict-mode tree.\n\n' +
         'The old API will be supported in all 16.x releases, but ' +
         'applications using it should migrate to the new version.\n\n' +
@@ -1252,7 +1254,9 @@ describe('ReactIncrementalErrorHandling', () => {
 
   it('recovers from uncaught reconciler errors', () => {
     const InvalidType = undefined;
-    expect(() => ReactNoop.render(<InvalidType />)).toErrorDev(
+    expect(() =>
+      ReactNoop.render(<InvalidType />),
+    ).toErrorDev(
       'Warning: React.createElement: type is invalid -- expected a string',
       {withoutStack: true},
     );
diff --git a/packages/react-reconciler/src/__tests__/ReactIncrementalReflection-test.internal.js b/packages/react-reconciler/src/__tests__/ReactIncrementalReflection-test.internal.js
index 868d612677b4..0f953154f796 100644
--- a/packages/react-reconciler/src/__tests__/ReactIncrementalReflection-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactIncrementalReflection-test.internal.js
@@ -26,8 +26,8 @@ describe('ReactIncrementalReflection', () => {
   });
 
   function div(...children) {
-    children = children.map(
-      c => (typeof c === 'string' ? {text: c, hidden: false} : c),
+    children = children.map(c =>
+      typeof c === 'string' ? {text: c, hidden: false} : c,
     );
     return {type: 'div', children, prop: undefined, hidden: false};
   }
@@ -114,7 +114,9 @@ describe('ReactIncrementalReflection', () => {
     }
 
     ReactNoop.render(<Foo mount={true} />);
-    expect(() => expect(Scheduler).toFlushAndYield(['Component'])).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushAndYield(['Component']),
+    ).toErrorDev(
       'Using UNSAFE_componentWillMount in strict mode is not recommended',
       {withoutStack: true},
     );
diff --git a/packages/react-reconciler/src/__tests__/ReactIncrementalScheduling-test.internal.js b/packages/react-reconciler/src/__tests__/ReactIncrementalScheduling-test.internal.js
index efc67c3b98b4..1ca7d2baba39 100644
--- a/packages/react-reconciler/src/__tests__/ReactIncrementalScheduling-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactIncrementalScheduling-test.internal.js
@@ -90,12 +90,9 @@ describe('ReactIncrementalScheduling', () => {
   it('works on deferred roots in the order they were scheduled', () => {
     const {useEffect} = React;
     function Text({text}) {
-      useEffect(
-        () => {
-          Scheduler.unstable_yieldValue(text);
-        },
-        [text],
-      );
+      useEffect(() => {
+        Scheduler.unstable_yieldValue(text);
+      }, [text]);
       return text;
     }
 
diff --git a/packages/react-reconciler/src/__tests__/ReactIncrementalSideEffects-test.internal.js b/packages/react-reconciler/src/__tests__/ReactIncrementalSideEffects-test.internal.js
index ce4c4ce63ef5..8544542b8893 100644
--- a/packages/react-reconciler/src/__tests__/ReactIncrementalSideEffects-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactIncrementalSideEffects-test.internal.js
@@ -26,8 +26,8 @@ describe('ReactIncrementalSideEffects', () => {
   });
 
   function div(...children) {
-    children = children.map(
-      c => (typeof c === 'string' ? {text: c, hidden: false} : c),
+    children = children.map(c =>
+      typeof c === 'string' ? {text: c, hidden: false} : c,
     );
     return {type: 'div', children, prop: undefined, hidden: false};
   }
@@ -75,8 +75,8 @@ describe('ReactIncrementalSideEffects', () => {
           {props.text === 'World'
             ? [<Bar key="a" text={props.text} />, <div key="b" />]
             : props.text === 'Hi'
-              ? [<div key="b" />, <Bar key="a" text={props.text} />]
-              : null}
+            ? [<div key="b" />, <Bar key="a" text={props.text} />]
+            : null}
           <span prop="test" />
         </div>
       );
diff --git a/packages/react-reconciler/src/__tests__/ReactIncrementalUpdates-test.internal.js b/packages/react-reconciler/src/__tests__/ReactIncrementalUpdates-test.internal.js
index b850d3847d2d..bcb9f7189c05 100644
--- a/packages/react-reconciler/src/__tests__/ReactIncrementalUpdates-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactIncrementalUpdates-test.internal.js
@@ -345,7 +345,9 @@ describe('ReactIncrementalUpdates', () => {
       }
     }
     ReactNoop.render(<Foo />);
-    expect(() => expect(Scheduler).toFlushWithoutYielding()).toErrorDev(
+    expect(() =>
+      expect(Scheduler).toFlushWithoutYielding(),
+    ).toErrorDev(
       'Using UNSAFE_componentWillReceiveProps in strict mode is not recommended',
       {withoutStack: true},
     );
@@ -663,22 +665,19 @@ describe('ReactIncrementalUpdates', () => {
         setLog(prevLog => prevLog + msg);
       };
 
-      useLayoutEffect(
-        () => {
-          Scheduler.unstable_yieldValue('Committed: ' + log);
-          if (log === 'B') {
-            // Right after B commits, schedule additional updates.
-            Scheduler.unstable_runWithPriority(
-              Scheduler.unstable_UserBlockingPriority,
-              () => {
-                pushToLog('C');
-              },
-            );
-            setLog(prevLog => prevLog + 'D');
-          }
-        },
-        [log],
-      );
+      useLayoutEffect(() => {
+        Scheduler.unstable_yieldValue('Committed: ' + log);
+        if (log === 'B') {
+          // Right after B commits, schedule additional updates.
+          Scheduler.unstable_runWithPriority(
+            Scheduler.unstable_UserBlockingPriority,
+            () => {
+              pushToLog('C');
+            },
+          );
+          setLog(prevLog => prevLog + 'D');
+        }
+      }, [log]);
 
       return log;
     }
diff --git a/packages/react-reconciler/src/__tests__/ReactLazy-test.internal.js b/packages/react-reconciler/src/__tests__/ReactLazy-test.internal.js
index e39043b1182d..d4b205560705 100644
--- a/packages/react-reconciler/src/__tests__/ReactLazy-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactLazy-test.internal.js
@@ -466,9 +466,7 @@ describe('ReactLazy', () => {
 
       UNSAFE_componentWillReceiveProps(nextProps) {
         Scheduler.unstable_yieldValue(
-          `UNSAFE_componentWillReceiveProps: ${this.props.text} -> ${
-            nextProps.text
-          }`,
+          `UNSAFE_componentWillReceiveProps: ${this.props.text} -> ${nextProps.text}`,
         );
       }
 
diff --git a/packages/react-reconciler/src/__tests__/ReactMemo-test.internal.js b/packages/react-reconciler/src/__tests__/ReactMemo-test.internal.js
index ef9f54f4dc72..25d4ac83a9af 100644
--- a/packages/react-reconciler/src/__tests__/ReactMemo-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactMemo-test.internal.js
@@ -311,7 +311,9 @@ describe('memo', () => {
       });
 
       it('warns if the first argument is undefined', () => {
-        expect(() => memo()).toErrorDev(
+        expect(() =>
+          memo(),
+        ).toErrorDev(
           'memo: The first argument must be a component. Instead ' +
             'received: undefined',
           {withoutStack: true},
@@ -319,7 +321,9 @@ describe('memo', () => {
       });
 
       it('warns if the first argument is null', () => {
-        expect(() => memo(null)).toErrorDev(
+        expect(() =>
+          memo(null),
+        ).toErrorDev(
           'memo: The first argument must be a component. Instead ' +
             'received: null',
           {withoutStack: true},
diff --git a/packages/react-reconciler/src/__tests__/ReactNewContext-test.internal.js b/packages/react-reconciler/src/__tests__/ReactNewContext-test.internal.js
index af350440dcfb..03c5ad4eec66 100644
--- a/packages/react-reconciler/src/__tests__/ReactNewContext-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactNewContext-test.internal.js
@@ -59,7 +59,7 @@ describe('ReactNewContext', () => {
         }).toErrorDev(
           observedBits !== undefined
             ? 'useContext() second argument is reserved for future use in React. ' +
-              `Passing it is not supported. You passed: ${observedBits}.`
+                `Passing it is not supported. You passed: ${observedBits}.`
             : [],
         );
         const render = props.children;
@@ -75,7 +75,7 @@ describe('ReactNewContext', () => {
       }).toErrorDev(
         observedBits !== undefined
           ? 'useContext() second argument is reserved for future use in React. ' +
-            `Passing it is not supported. You passed: ${observedBits}.`
+              `Passing it is not supported. You passed: ${observedBits}.`
           : [],
       );
       const render = props.children;
@@ -91,7 +91,7 @@ describe('ReactNewContext', () => {
       }).toErrorDev(
         observedBits !== undefined
           ? 'useContext() second argument is reserved for future use in React. ' +
-            `Passing it is not supported. You passed: ${observedBits}.`
+              `Passing it is not supported. You passed: ${observedBits}.`
           : [],
       );
       const render = props.children;
@@ -811,9 +811,7 @@ describe('ReactNewContext', () => {
             Scheduler.unstable_yieldValue('Child');
             return (
               <span
-                prop={`Context: ${this.props.context}, Step: ${
-                  this.state.step
-                }`}
+                prop={`Context: ${this.props.context}, Step: ${this.state.step}`}
               />
             );
           }
diff --git a/packages/react-reconciler/src/__tests__/ReactPersistent-test.js b/packages/react-reconciler/src/__tests__/ReactPersistent-test.js
index 3c5209dfc388..46ccfea5c206 100644
--- a/packages/react-reconciler/src/__tests__/ReactPersistent-test.js
+++ b/packages/react-reconciler/src/__tests__/ReactPersistent-test.js
@@ -39,8 +39,8 @@ describe('ReactPersistent', () => {
   }
 
   function div(...children) {
-    children = children.map(
-      c => (typeof c === 'string' ? {text: c, hidden: false} : c),
+    children = children.map(c =>
+      typeof c === 'string' ? {text: c, hidden: false} : c,
     );
     return {type: 'div', children, prop: undefined, hidden: false};
   }
diff --git a/packages/react-reconciler/src/__tests__/ReactSchedulerIntegration-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSchedulerIntegration-test.internal.js
index 8197dbc0fa2b..943f07ad063e 100644
--- a/packages/react-reconciler/src/__tests__/ReactSchedulerIntegration-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactSchedulerIntegration-test.internal.js
@@ -403,8 +403,7 @@ describe('ReactSchedulerIntegration', () => {
     expect(Scheduler).toHaveYielded(['Hidden: B']);
     expect(root).toMatchRenderedOutput(
       <>
-        Visible: B
-        <div hidden={true}>Hidden: B</div>
+        Visible: B<div hidden={true}>Hidden: B</div>
       </>,
     );
   });
diff --git a/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
index 6f4f6552ca48..0a1d209d41f5 100644
--- a/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
@@ -28,46 +28,53 @@ describe('ReactSuspense', () => {
 
     Suspense = React.Suspense;
 
-    TextResource = ReactCache.unstable_createResource(([text, ms = 0]) => {
-      let listeners = null;
-      let status = 'pending';
-      let value = null;
-      return {
-        then(resolve, reject) {
-          switch (status) {
-            case 'pending': {
-              if (listeners === null) {
-                listeners = [{resolve, reject}];
-                setTimeout(() => {
-                  if (textResourceShouldFail) {
-                    Scheduler.unstable_yieldValue(`Promise rejected [${text}]`);
-                    status = 'rejected';
-                    value = new Error('Failed to load: ' + text);
-                    listeners.forEach(listener => listener.reject(value));
-                  } else {
-                    Scheduler.unstable_yieldValue(`Promise resolved [${text}]`);
-                    status = 'resolved';
-                    value = text;
-                    listeners.forEach(listener => listener.resolve(value));
-                  }
-                }, ms);
-              } else {
-                listeners.push({resolve, reject});
+    TextResource = ReactCache.unstable_createResource(
+      ([text, ms = 0]) => {
+        let listeners = null;
+        let status = 'pending';
+        let value = null;
+        return {
+          then(resolve, reject) {
+            switch (status) {
+              case 'pending': {
+                if (listeners === null) {
+                  listeners = [{resolve, reject}];
+                  setTimeout(() => {
+                    if (textResourceShouldFail) {
+                      Scheduler.unstable_yieldValue(
+                        `Promise rejected [${text}]`,
+                      );
+                      status = 'rejected';
+                      value = new Error('Failed to load: ' + text);
+                      listeners.forEach(listener => listener.reject(value));
+                    } else {
+                      Scheduler.unstable_yieldValue(
+                        `Promise resolved [${text}]`,
+                      );
+                      status = 'resolved';
+                      value = text;
+                      listeners.forEach(listener => listener.resolve(value));
+                    }
+                  }, ms);
+                } else {
+                  listeners.push({resolve, reject});
+                }
+                break;
+              }
+              case 'resolved': {
+                resolve(value);
+                break;
+              }
+              case 'rejected': {
+                reject(value);
+                break;
               }
-              break;
-            }
-            case 'resolved': {
-              resolve(value);
-              break;
-            }
-            case 'rejected': {
-              reject(value);
-              break;
             }
-          }
-        },
-      };
-    }, ([text, ms]) => text);
+          },
+        };
+      },
+      ([text, ms]) => text,
+    );
     textResourceShouldFail = false;
   });
 
@@ -884,12 +891,9 @@ describe('ReactSuspense', () => {
       function AsyncTextWithEffect(props) {
         const text = props.text;
 
-        useLayoutEffect(
-          () => {
-            Scheduler.unstable_yieldValue('Did commit: ' + text);
-          },
-          [text],
-        );
+        useLayoutEffect(() => {
+          Scheduler.unstable_yieldValue('Did commit: ' + text);
+        }, [text]);
 
         try {
           TextResource.read([props.text, props.ms]);
diff --git a/packages/react-reconciler/src/__tests__/ReactSuspenseFuzz-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSuspenseFuzz-test.internal.js
index 95d91dee5d60..e18ee8152656 100644
--- a/packages/react-reconciler/src/__tests__/ReactSuspenseFuzz-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactSuspenseFuzz-test.internal.js
@@ -46,32 +46,29 @@ describe('ReactSuspenseFuzz', () => {
     function Container({children, updates}) {
       const [step, setStep] = useState(0);
 
-      useLayoutEffect(
-        () => {
-          if (updates !== undefined) {
-            const cleanUps = new Set();
-            updates.forEach(({remountAfter}, i) => {
-              const task = {
-                label: `Remount children after ${remountAfter}ms`,
-              };
-              const timeoutID = setTimeout(() => {
-                pendingTasks.delete(task);
-                Scheduler.unstable_yieldValue(task.label);
-                setStep(i + 1);
-              }, remountAfter);
-              pendingTasks.add(task);
-              cleanUps.add(() => {
-                pendingTasks.delete(task);
-                clearTimeout(timeoutID);
-              });
-            });
-            return () => {
-              cleanUps.forEach(cleanUp => cleanUp());
+      useLayoutEffect(() => {
+        if (updates !== undefined) {
+          const cleanUps = new Set();
+          updates.forEach(({remountAfter}, i) => {
+            const task = {
+              label: `Remount children after ${remountAfter}ms`,
             };
-          }
-        },
-        [updates],
-      );
+            const timeoutID = setTimeout(() => {
+              pendingTasks.delete(task);
+              Scheduler.unstable_yieldValue(task.label);
+              setStep(i + 1);
+            }, remountAfter);
+            pendingTasks.add(task);
+            cleanUps.add(() => {
+              pendingTasks.delete(task);
+              clearTimeout(timeoutID);
+            });
+          });
+          return () => {
+            cleanUps.forEach(cleanUp => cleanUp());
+          };
+        }
+      }, [updates]);
 
       return <React.Fragment key={step}>{children}</React.Fragment>;
     }
@@ -79,32 +76,29 @@ describe('ReactSuspenseFuzz', () => {
     function Text({text, initialDelay = 0, updates}) {
       const [[step, delay], setStep] = useState([0, initialDelay]);
 
-      useLayoutEffect(
-        () => {
-          if (updates !== undefined) {
-            const cleanUps = new Set();
-            updates.forEach(({beginAfter, suspendFor}, i) => {
-              const task = {
-                label: `Update ${beginAfter}ms after mount and suspend for ${suspendFor}ms [${text}]`,
-              };
-              const timeoutID = setTimeout(() => {
-                pendingTasks.delete(task);
-                Scheduler.unstable_yieldValue(task.label);
-                setStep([i + 1, suspendFor]);
-              }, beginAfter);
-              pendingTasks.add(task);
-              cleanUps.add(() => {
-                pendingTasks.delete(task);
-                clearTimeout(timeoutID);
-              });
-            });
-            return () => {
-              cleanUps.forEach(cleanUp => cleanUp());
+      useLayoutEffect(() => {
+        if (updates !== undefined) {
+          const cleanUps = new Set();
+          updates.forEach(({beginAfter, suspendFor}, i) => {
+            const task = {
+              label: `Update ${beginAfter}ms after mount and suspend for ${suspendFor}ms [${text}]`,
             };
-          }
-        },
-        [updates],
-      );
+            const timeoutID = setTimeout(() => {
+              pendingTasks.delete(task);
+              Scheduler.unstable_yieldValue(task.label);
+              setStep([i + 1, suspendFor]);
+            }, beginAfter);
+            pendingTasks.add(task);
+            cleanUps.add(() => {
+              pendingTasks.delete(task);
+              clearTimeout(timeoutID);
+            });
+          });
+          return () => {
+            cleanUps.forEach(cleanUp => cleanUp());
+          };
+        }
+      }, [updates]);
 
       const fullText = `${text}:${step}`;
 
diff --git a/packages/react-reconciler/src/__tests__/ReactSuspenseList-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSuspenseList-test.internal.js
index cd19aa23bee2..f8675872e314 100644
--- a/packages/react-reconciler/src/__tests__/ReactSuspenseList-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactSuspenseList-test.internal.js
@@ -925,7 +925,14 @@ describe('ReactSuspenseList', () => {
     await B.resolve();
     await D.resolve();
 
-    ReactNoop.render(<Foo items={[['B', B], ['D', D]]} />);
+    ReactNoop.render(
+      <Foo
+        items={[
+          ['B', B],
+          ['D', D],
+        ]}
+      />,
+    );
 
     expect(Scheduler).toFlushAndYield(['B', 'D']);
 
@@ -939,7 +946,14 @@ describe('ReactSuspenseList', () => {
     // Insert items in the beginning, middle and end.
     ReactNoop.render(
       <Foo
-        items={[['A', A], ['B', B], ['C', C], ['D', D], ['E', E], ['F', F]]}
+        items={[
+          ['A', A],
+          ['B', B],
+          ['C', C],
+          ['D', D],
+          ['E', E],
+          ['F', F],
+        ]}
       />,
     );
 
@@ -1021,7 +1035,15 @@ describe('ReactSuspenseList', () => {
     await F.resolve();
 
     // We can also delete some items.
-    ReactNoop.render(<Foo items={[['D', D], ['E', E], ['F', F]]} />);
+    ReactNoop.render(
+      <Foo
+        items={[
+          ['D', D],
+          ['E', E],
+          ['F', F],
+        ]}
+      />,
+    );
 
     expect(Scheduler).toFlushAndYield(['D', 'E', 'F']);
 
@@ -1093,7 +1115,14 @@ describe('ReactSuspenseList', () => {
     // Update items in the beginning, middle and end to start suspending.
     ReactNoop.render(
       <Foo
-        items={[['A', A], ['B', B], ['C', Cs], ['D', D], ['E', Es], ['F', F]]}
+        items={[
+          ['A', A],
+          ['B', B],
+          ['C', Cs],
+          ['D', D],
+          ['E', Es],
+          ['F', F],
+        ]}
       />,
     );
 
@@ -1468,7 +1497,14 @@ describe('ReactSuspenseList', () => {
       );
     }
 
-    ReactNoop.render(<Foo items={[['A', A], ['D', D]]} />);
+    ReactNoop.render(
+      <Foo
+        items={[
+          ['A', A],
+          ['D', D],
+        ]}
+      />,
+    );
 
     await A.resolve();
     await D.resolve();
@@ -1486,7 +1522,14 @@ describe('ReactSuspenseList', () => {
     // For the second render, we're going to insert items in the middle and end.
     ReactNoop.render(
       <Foo
-        items={[['A', A], ['B', B], ['C', C], ['D', D], ['E', E], ['F', F]]}
+        items={[
+          ['A', A],
+          ['B', B],
+          ['C', C],
+          ['D', D],
+          ['E', E],
+          ['F', F],
+        ]}
       />,
     );
 
@@ -1596,7 +1639,14 @@ describe('ReactSuspenseList', () => {
       );
     }
 
-    ReactNoop.render(<Foo items={[['C', C], ['F', F]]} />);
+    ReactNoop.render(
+      <Foo
+        items={[
+          ['C', C],
+          ['F', F],
+        ]}
+      />,
+    );
 
     await C.resolve();
     await F.resolve();
@@ -1614,7 +1664,14 @@ describe('ReactSuspenseList', () => {
     // For the second render, we're going to insert items in the middle and end.
     ReactNoop.render(
       <Foo
-        items={[['A', A], ['B', B], ['C', C], ['D', D], ['E', E], ['F', F]]}
+        items={[
+          ['A', A],
+          ['B', B],
+          ['C', C],
+          ['D', D],
+          ['E', E],
+          ['F', F],
+        ]}
       />,
     );
 
@@ -1733,7 +1790,14 @@ describe('ReactSuspenseList', () => {
       );
     }
 
-    ReactNoop.render(<Foo items={[['A', A], ['D', SyncD]]} />);
+    ReactNoop.render(
+      <Foo
+        items={[
+          ['A', A],
+          ['D', SyncD],
+        ]}
+      />,
+    );
 
     await A.resolve();
 
@@ -1751,7 +1815,14 @@ describe('ReactSuspenseList', () => {
     // Note that D now suspends even though it didn't in the first pass.
     ReactNoop.render(
       <Foo
-        items={[['A', A], ['B', B], ['C', C], ['D', D], ['E', E], ['F', F]]}
+        items={[
+          ['A', A],
+          ['B', B],
+          ['C', C],
+          ['D', D],
+          ['E', E],
+          ['F', F],
+        ]}
       />,
     );
 
diff --git a/packages/react-reconciler/src/__tests__/ReactSuspensePlaceholder-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSuspensePlaceholder-test.internal.js
index f1cda39912d8..012511d7654c 100644
--- a/packages/react-reconciler/src/__tests__/ReactSuspensePlaceholder-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactSuspensePlaceholder-test.internal.js
@@ -34,46 +34,53 @@ describe('ReactSuspensePlaceholder', () => {
     Profiler = React.Profiler;
     Suspense = React.Suspense;
 
-    TextResource = ReactCache.unstable_createResource(([text, ms = 0]) => {
-      let listeners = null;
-      let status = 'pending';
-      let value = null;
-      return {
-        then(resolve, reject) {
-          switch (status) {
-            case 'pending': {
-              if (listeners === null) {
-                listeners = [{resolve, reject}];
-                setTimeout(() => {
-                  if (textResourceShouldFail) {
-                    Scheduler.unstable_yieldValue(`Promise rejected [${text}]`);
-                    status = 'rejected';
-                    value = new Error('Failed to load: ' + text);
-                    listeners.forEach(listener => listener.reject(value));
-                  } else {
-                    Scheduler.unstable_yieldValue(`Promise resolved [${text}]`);
-                    status = 'resolved';
-                    value = text;
-                    listeners.forEach(listener => listener.resolve(value));
-                  }
-                }, ms);
-              } else {
-                listeners.push({resolve, reject});
+    TextResource = ReactCache.unstable_createResource(
+      ([text, ms = 0]) => {
+        let listeners = null;
+        let status = 'pending';
+        let value = null;
+        return {
+          then(resolve, reject) {
+            switch (status) {
+              case 'pending': {
+                if (listeners === null) {
+                  listeners = [{resolve, reject}];
+                  setTimeout(() => {
+                    if (textResourceShouldFail) {
+                      Scheduler.unstable_yieldValue(
+                        `Promise rejected [${text}]`,
+                      );
+                      status = 'rejected';
+                      value = new Error('Failed to load: ' + text);
+                      listeners.forEach(listener => listener.reject(value));
+                    } else {
+                      Scheduler.unstable_yieldValue(
+                        `Promise resolved [${text}]`,
+                      );
+                      status = 'resolved';
+                      value = text;
+                      listeners.forEach(listener => listener.resolve(value));
+                    }
+                  }, ms);
+                } else {
+                  listeners.push({resolve, reject});
+                }
+                break;
+              }
+              case 'resolved': {
+                resolve(value);
+                break;
+              }
+              case 'rejected': {
+                reject(value);
+                break;
               }
-              break;
-            }
-            case 'resolved': {
-              resolve(value);
-              break;
-            }
-            case 'rejected': {
-              reject(value);
-              break;
             }
-          }
-        },
-      };
-    }, ([text, ms]) => text);
+          },
+        };
+      },
+      ([text, ms]) => text,
+    );
     textResourceShouldFail = false;
   });
 
diff --git a/packages/react-reconciler/src/__tests__/ReactSuspenseWithNoopRenderer-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSuspenseWithNoopRenderer-test.internal.js
index 7f80f1f87575..d4997de38f70 100644
--- a/packages/react-reconciler/src/__tests__/ReactSuspenseWithNoopRenderer-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactSuspenseWithNoopRenderer-test.internal.js
@@ -28,19 +28,22 @@ describe('ReactSuspenseWithNoopRenderer', () => {
     ReactCache = require('react-cache');
     Suspense = React.Suspense;
 
-    TextResource = ReactCache.unstable_createResource(([text, ms = 0]) => {
-      return new Promise((resolve, reject) =>
-        setTimeout(() => {
-          if (textResourceShouldFail) {
-            Scheduler.unstable_yieldValue(`Promise rejected [${text}]`);
-            reject(new Error('Failed to load: ' + text));
-          } else {
-            Scheduler.unstable_yieldValue(`Promise resolved [${text}]`);
-            resolve(text);
-          }
-        }, ms),
-      );
-    }, ([text, ms]) => text);
+    TextResource = ReactCache.unstable_createResource(
+      ([text, ms = 0]) => {
+        return new Promise((resolve, reject) =>
+          setTimeout(() => {
+            if (textResourceShouldFail) {
+              Scheduler.unstable_yieldValue(`Promise rejected [${text}]`);
+              reject(new Error('Failed to load: ' + text));
+            } else {
+              Scheduler.unstable_yieldValue(`Promise resolved [${text}]`);
+              resolve(text);
+            }
+          }, ms),
+        );
+      },
+      ([text, ms]) => text,
+    );
     textResourceShouldFail = false;
   });
 
@@ -1514,50 +1517,38 @@ describe('ReactSuspenseWithNoopRenderer', () => {
 
   it('does not call lifecycles of a suspended component (hooks)', async () => {
     function TextWithLifecycle(props) {
-      React.useLayoutEffect(
-        () => {
-          Scheduler.unstable_yieldValue(`Layout Effect [${props.text}]`);
-          return () => {
-            Scheduler.unstable_yieldValue(
-              `Destroy Layout Effect [${props.text}]`,
-            );
-          };
-        },
-        [props.text],
-      );
-      React.useEffect(
-        () => {
-          Scheduler.unstable_yieldValue(`Effect [${props.text}]`);
-          return () => {
-            Scheduler.unstable_yieldValue(`Destroy Effect [${props.text}]`);
-          };
-        },
-        [props.text],
-      );
+      React.useLayoutEffect(() => {
+        Scheduler.unstable_yieldValue(`Layout Effect [${props.text}]`);
+        return () => {
+          Scheduler.unstable_yieldValue(
+            `Destroy Layout Effect [${props.text}]`,
+          );
+        };
+      }, [props.text]);
+      React.useEffect(() => {
+        Scheduler.unstable_yieldValue(`Effect [${props.text}]`);
+        return () => {
+          Scheduler.unstable_yieldValue(`Destroy Effect [${props.text}]`);
+        };
+      }, [props.text]);
       return <Text {...props} />;
     }
 
     function AsyncTextWithLifecycle(props) {
-      React.useLayoutEffect(
-        () => {
-          Scheduler.unstable_yieldValue(`Layout Effect [${props.text}]`);
-          return () => {
-            Scheduler.unstable_yieldValue(
-              `Destroy Layout Effect [${props.text}]`,
-            );
-          };
-        },
-        [props.text],
-      );
-      React.useEffect(
-        () => {
-          Scheduler.unstable_yieldValue(`Effect [${props.text}]`);
-          return () => {
-            Scheduler.unstable_yieldValue(`Destroy Effect [${props.text}]`);
-          };
-        },
-        [props.text],
-      );
+      React.useLayoutEffect(() => {
+        Scheduler.unstable_yieldValue(`Layout Effect [${props.text}]`);
+        return () => {
+          Scheduler.unstable_yieldValue(
+            `Destroy Layout Effect [${props.text}]`,
+          );
+        };
+      }, [props.text]);
+      React.useEffect(() => {
+        Scheduler.unstable_yieldValue(`Effect [${props.text}]`);
+        return () => {
+          Scheduler.unstable_yieldValue(`Destroy Effect [${props.text}]`);
+        };
+      }, [props.text]);
       const text = props.text;
       const ms = props.ms;
       try {
@@ -2896,7 +2887,8 @@ describe('ReactSuspenseWithNoopRenderer', () => {
     expect(ReactNoop).toMatchRenderedOutput(
       <>
         <div hidden={true}>
-          <span prop="A" />Offscreen
+          <span prop="A" />
+          Offscreen
         </div>
         <span prop="A" />
       </>,
diff --git a/packages/react-refresh/src/__tests__/ReactFresh-test.js b/packages/react-refresh/src/__tests__/ReactFresh-test.js
index 602018f652de..61bf2934b1e3 100644
--- a/packages/react-refresh/src/__tests__/ReactFresh-test.js
+++ b/packages/react-refresh/src/__tests__/ReactFresh-test.js
@@ -1817,12 +1817,14 @@ describe('ReactFresh', () => {
             <span />
             Hello
             <span />
-          </HelloV1>,
+          </HelloV1>
+          ,
           <HelloV1>
             <>
               <HelloV1 />
             </>
-          </HelloV1>,
+          </HelloV1>
+          ,
         </div>,
         <HelloV1>
           <HelloV1>
diff --git a/packages/react-test-renderer/src/ReactShallowRenderer.js b/packages/react-test-renderer/src/ReactShallowRenderer.js
index df3f93575287..fbe4f79836a7 100644
--- a/packages/react-test-renderer/src/ReactShallowRenderer.js
+++ b/packages/react-test-renderer/src/ReactShallowRenderer.js
@@ -295,9 +295,10 @@ class ReactShallowRenderer {
           first: null,
           dispatch: null,
         });
-        const dispatch: Dispatch<
-          A,
-        > = (queue.dispatch = (this._dispatchAction.bind(this, queue): any));
+        const dispatch: Dispatch<A> = (queue.dispatch = (this._dispatchAction.bind(
+          this,
+          queue,
+        ): any));
         return [workInProgressHook.memoizedState, dispatch];
       }
     };
@@ -529,7 +530,7 @@ class ReactShallowRenderer {
       'ReactShallowRenderer render(): Invalid component element.%s',
       typeof element === 'function'
         ? ' Instead of passing a component class, make sure to instantiate ' +
-          'it by passing it to React.createElement.'
+            'it by passing it to React.createElement.'
         : '',
     );
     element = ((element: any): ReactElement);
@@ -543,14 +544,15 @@ class ReactShallowRenderer {
     );
     invariant(
       isForwardRef(element) ||
-        (typeof element.type === 'function' || isMemo(element)),
+        typeof element.type === 'function' ||
+        isMemo(element),
       'ReactShallowRenderer render(): Shallow rendering works only with custom ' +
         'components, but the provided element type was `%s`.',
       Array.isArray(element.type)
         ? 'array'
         : element.type === null
-          ? 'null'
-          : typeof element.type,
+        ? 'null'
+        : typeof element.type,
     );
 
     if (this._rendering) {
diff --git a/packages/react/src/ReactHooks.js b/packages/react/src/ReactHooks.js
index 420c68fdb571..cdac30cdc40f 100644
--- a/packages/react/src/ReactHooks.js
+++ b/packages/react/src/ReactHooks.js
@@ -45,8 +45,8 @@ export function useContext<T>(
         unstable_observedBits,
         typeof unstable_observedBits === 'number' && Array.isArray(arguments[2])
           ? '\n\nDid you call array.map(useContext)? ' +
-            'Calling Hooks inside a loop is not supported. ' +
-            'Learn more at https://fb.me/rules-of-hooks'
+              'Calling Hooks inside a loop is not supported. ' +
+              'Learn more at https://fb.me/rules-of-hooks'
           : '',
       );
     }
diff --git a/packages/react/src/__tests__/ReactDOMTracing-test.internal.js b/packages/react/src/__tests__/ReactDOMTracing-test.internal.js
index 020b2b580a24..1e9fe3100653 100644
--- a/packages/react/src/__tests__/ReactDOMTracing-test.internal.js
+++ b/packages/react/src/__tests__/ReactDOMTracing-test.internal.js
@@ -73,17 +73,14 @@ describe('ReactDOMTracing', () => {
         const Child = () => {
           const [didMount, setDidMount] = React.useState(false);
           Scheduler.unstable_yieldValue('Child');
-          React.useEffect(
-            () => {
-              if (didMount) {
-                Scheduler.unstable_yieldValue('Child:update');
-              } else {
-                Scheduler.unstable_yieldValue('Child:mount');
-                setDidMount(true);
-              }
-            },
-            [didMount],
-          );
+          React.useEffect(() => {
+            if (didMount) {
+              Scheduler.unstable_yieldValue('Child:update');
+            } else {
+              Scheduler.unstable_yieldValue('Child:mount');
+              setDidMount(true);
+            }
+          }, [didMount]);
           return <div />;
         };
 
@@ -219,20 +216,17 @@ describe('ReactDOMTracing', () => {
         const Child = () => {
           const [didMount, setDidMount] = React.useState(false);
           Scheduler.unstable_yieldValue('Child');
-          React.useLayoutEffect(
-            () => {
-              if (didMount) {
-                Scheduler.unstable_yieldValue('Child:update');
-              } else {
-                Scheduler.unstable_yieldValue('Child:mount');
-                Scheduler.unstable_runWithPriority(
-                  Scheduler.unstable_IdlePriority,
-                  () => setDidMount(true),
-                );
-              }
-            },
-            [didMount],
-          );
+          React.useLayoutEffect(() => {
+            if (didMount) {
+              Scheduler.unstable_yieldValue('Child:update');
+            } else {
+              Scheduler.unstable_yieldValue('Child:mount');
+              Scheduler.unstable_runWithPriority(
+                Scheduler.unstable_IdlePriority,
+                () => setDidMount(true),
+              );
+            }
+          }, [didMount]);
           return <div />;
         };
 
diff --git a/packages/react/src/__tests__/ReactES6Class-test.js b/packages/react/src/__tests__/ReactES6Class-test.js
index 17186a3fe611..1d554ca9f458 100644
--- a/packages/react/src/__tests__/ReactES6Class-test.js
+++ b/packages/react/src/__tests__/ReactES6Class-test.js
@@ -521,11 +521,15 @@ describe('ReactES6Class', () => {
 
   it('should throw AND warn when trying to access classic APIs', () => {
     const instance = test(<Inner name="foo" />, 'DIV', 'foo');
-    expect(() => expect(() => instance.replaceState({})).toThrow()).toWarnDev(
+    expect(() =>
+      expect(() => instance.replaceState({})).toThrow(),
+    ).toWarnDev(
       'replaceState(...) is deprecated in plain JavaScript React classes',
       {withoutStack: true},
     );
-    expect(() => expect(() => instance.isMounted()).toThrow()).toWarnDev(
+    expect(() =>
+      expect(() => instance.isMounted()).toThrow(),
+    ).toWarnDev(
       'isMounted(...) is deprecated in plain JavaScript React classes',
       {withoutStack: true},
     );
diff --git a/packages/react/src/__tests__/ReactElement-test.js b/packages/react/src/__tests__/ReactElement-test.js
index 85e717a925cc..fddf59d5c07e 100644
--- a/packages/react/src/__tests__/ReactElement-test.js
+++ b/packages/react/src/__tests__/ReactElement-test.js
@@ -42,7 +42,7 @@ describe('ReactElement', () => {
   });
 
   it('uses the fallback value when in an environment without Symbol', () => {
-    expect(<div />.$$typeof).toBe(0xeac7);
+    expect((<div />).$$typeof).toBe(0xeac7);
   });
 
   it('returns a complete element according to spec', () => {
@@ -85,7 +85,9 @@ describe('ReactElement', () => {
 
   it('should warn when `key` is being accessed on a host element', () => {
     const element = <div key="3" />;
-    expect(() => void element.props.key).toErrorDev(
+    expect(
+      () => void element.props.key,
+    ).toErrorDev(
       'div: `key` is not a prop. Trying to access it will result ' +
         'in `undefined` being returned. If you need to access the same ' +
         'value within the child component, you should pass it as a different ' +
diff --git a/packages/react/src/__tests__/ReactElementJSX-test.internal.js b/packages/react/src/__tests__/ReactElementJSX-test.internal.js
index 922fef4a4da4..27368c1f7b46 100644
--- a/packages/react/src/__tests__/ReactElementJSX-test.internal.js
+++ b/packages/react/src/__tests__/ReactElementJSX-test.internal.js
@@ -228,7 +228,9 @@ describe('ReactElement.jsx', () => {
 
   it('should warn when `key` is being accessed on a host element', () => {
     const element = React.jsxs('div', {}, '3');
-    expect(() => void element.props.key).toErrorDev(
+    expect(
+      () => void element.props.key,
+    ).toErrorDev(
       'div: `key` is not a prop. Trying to access it will result ' +
         'in `undefined` being returned. If you need to access the same ' +
         'value within the child component, you should pass it as a different ' +
diff --git a/packages/react/src/__tests__/ReactElementValidator-test.internal.js b/packages/react/src/__tests__/ReactElementValidator-test.internal.js
index 295af13f987b..9e0fed2f7d53 100644
--- a/packages/react/src/__tests__/ReactElementValidator-test.internal.js
+++ b/packages/react/src/__tests__/ReactElementValidator-test.internal.js
@@ -439,7 +439,9 @@ describe('ReactElementValidator', () => {
     }
 
     let TestFactory = React.createFactory(TestComponent);
-    expect(() => TestFactory.type).toWarnDev(
+    expect(
+      () => TestFactory.type,
+    ).toWarnDev(
       'Warning: Factory.type is deprecated. Access the class directly before ' +
         'passing it to createFactory.',
       {withoutStack: true},
@@ -489,7 +491,7 @@ describe('ReactElementValidator', () => {
     // shouldn't blow up either.
 
     const child = {
-      $$typeof: <div />.$$typeof,
+      $$typeof: (<div />).$$typeof,
       type: 'span',
       key: null,
       ref: null,
@@ -497,13 +499,13 @@ describe('ReactElementValidator', () => {
       _owner: null,
     };
 
-    void <div>{[child]}</div>;
+    void (<div>{[child]}</div>);
   });
 
   it('does not blow up on key warning with undefined type', () => {
     const Foo = undefined;
     expect(() => {
-      void <Foo>{[<div />]}</Foo>;
+      void (<Foo>{[<div />]}</Foo>);
     }).toErrorDev(
       'Warning: React.createElement: type is invalid -- expected a string ' +
         '(for built-in components) or a class/function (for composite ' +
diff --git a/packages/react/src/__tests__/ReactJSXElementValidator-test.js b/packages/react/src/__tests__/ReactJSXElementValidator-test.js
index f627f7c325c5..a0f9640b10b0 100644
--- a/packages/react/src/__tests__/ReactJSXElementValidator-test.js
+++ b/packages/react/src/__tests__/ReactJSXElementValidator-test.js
@@ -143,7 +143,7 @@ describe('ReactJSXElementValidator', () => {
   });
 
   it('does not warn when the child array contains non-elements', () => {
-    void <Component>{[{}, {}]}</Component>;
+    void (<Component>{[{}, {}]}</Component>);
   });
 
   it('should give context for PropType errors in nested components.', () => {
@@ -210,7 +210,9 @@ describe('ReactJSXElementValidator', () => {
     const Null = null;
     const True = true;
     const Div = 'div';
-    expect(() => void <Undefined />).toErrorDev(
+    expect(
+      () => void (<Undefined />),
+    ).toErrorDev(
       'Warning: React.createElement: type is invalid -- expected a string ' +
         '(for built-in components) or a class/function (for composite ' +
         'components) but got: undefined. You likely forgot to export your ' +
@@ -219,14 +221,18 @@ describe('ReactJSXElementValidator', () => {
         '\n\nCheck your code at **.',
       {withoutStack: true},
     );
-    expect(() => void <Null />).toErrorDev(
+    expect(
+      () => void (<Null />),
+    ).toErrorDev(
       'Warning: React.createElement: type is invalid -- expected a string ' +
         '(for built-in components) or a class/function (for composite ' +
         'components) but got: null.' +
         '\n\nCheck your code at **.',
       {withoutStack: true},
     );
-    expect(() => void <True />).toErrorDev(
+    expect(
+      () => void (<True />),
+    ).toErrorDev(
       'Warning: React.createElement: type is invalid -- expected a string ' +
         '(for built-in components) or a class/function (for composite ' +
         'components) but got: boolean.' +
@@ -234,7 +240,7 @@ describe('ReactJSXElementValidator', () => {
       {withoutStack: true},
     );
     // No error expected
-    void <Div />;
+    void (<Div />);
   });
 
   it('should check default prop values', () => {
diff --git a/packages/react/src/__tests__/ReactProfiler-test.internal.js b/packages/react/src/__tests__/ReactProfiler-test.internal.js
index 0e7baacbbbf9..ad47793c8259 100644
--- a/packages/react/src/__tests__/ReactProfiler-test.internal.js
+++ b/packages/react/src/__tests__/ReactProfiler-test.internal.js
@@ -65,15 +65,18 @@ function loadModules({
 
   resourcePromise = null;
 
-  TextResource = ReactCache.unstable_createResource(([text, ms = 0]) => {
-    resourcePromise = new Promise((resolve, reject) =>
-      setTimeout(() => {
-        Scheduler.unstable_yieldValue(`Promise resolved [${text}]`);
-        resolve(text);
-      }, ms),
-    );
-    return resourcePromise;
-  }, ([text, ms]) => text);
+  TextResource = ReactCache.unstable_createResource(
+    ([text, ms = 0]) => {
+      resourcePromise = new Promise((resolve, reject) =>
+        setTimeout(() => {
+          Scheduler.unstable_yieldValue(`Promise resolved [${text}]`);
+          resolve(text);
+        }, ms),
+      );
+      return resourcePromise;
+    },
+    ([text, ms]) => text,
+  );
 
   AsyncText = ({ms, text}) => {
     try {
@@ -297,10 +300,13 @@ describe('Profiler', () => {
       it('does not report work done on a sibling', () => {
         const callback = jest.fn();
 
-        const DoesNotUpdate = React.memo(function DoesNotUpdateInner() {
-          Scheduler.unstable_advanceTime(10);
-          return null;
-        }, () => true);
+        const DoesNotUpdate = React.memo(
+          function DoesNotUpdateInner() {
+            Scheduler.unstable_advanceTime(10);
+            return null;
+          },
+          () => true,
+        );
 
         let updateProfilerSibling;
 
diff --git a/packages/react/src/__tests__/ReactStrictMode-test.js b/packages/react/src/__tests__/ReactStrictMode-test.js
index 3f7cde6ec585..15b2ce719c76 100644
--- a/packages/react/src/__tests__/ReactStrictMode-test.js
+++ b/packages/react/src/__tests__/ReactStrictMode-test.js
@@ -535,13 +535,17 @@ Please update the following components: Parent`,
       const container = document.createElement('div');
       const root = ReactDOM.createRoot(container);
       root.render(<AsyncRoot foo={true} />);
-      expect(() => Scheduler.unstable_flushAll()).toErrorDev(
+      expect(() =>
+        Scheduler.unstable_flushAll(),
+      ).toErrorDev(
         'Using UNSAFE_componentWillMount in strict mode is not recommended',
         {withoutStack: true},
       );
 
       root.render(<AsyncRoot foo={false} />);
-      expect(() => Scheduler.unstable_flushAll()).toErrorDev(
+      expect(() =>
+        Scheduler.unstable_flushAll(),
+      ).toErrorDev(
         'Using UNSAFE_componentWillMount in strict mode is not recommended',
         {withoutStack: true},
       );
@@ -592,7 +596,9 @@ Please update the following components: Parent`,
 
     const container = document.createElement('div');
 
-    expect(() => ReactDOM.render(<SyncRoot />, container)).toErrorDev(
+    expect(() =>
+      ReactDOM.render(<SyncRoot />, container),
+    ).toErrorDev(
       'Using UNSAFE_componentWillReceiveProps in strict mode is not recommended',
       {withoutStack: true},
     );
diff --git a/packages/react/src/__tests__/createReactClassIntegration-test.internal.js b/packages/react/src/__tests__/createReactClassIntegration-test.internal.js
index a13797371ae0..3ea37ce80a37 100644
--- a/packages/react/src/__tests__/createReactClassIntegration-test.internal.js
+++ b/packages/react/src/__tests__/createReactClassIntegration-test.internal.js
@@ -50,10 +50,9 @@ describe('create-react-class-integration', () => {
         render: () => null,
       });
 
-      expect(() => ReactNative.render(<View />, 1)).toWarnDev(
-        'componentWillMount has been renamed',
-        {withoutStack: true},
-      );
+      expect(() =>
+        ReactNative.render(<View />, 1),
+      ).toWarnDev('componentWillMount has been renamed', {withoutStack: true});
     });
 
     it('should warn if users specify their own legacy componentWillReceiveProps', () => {
@@ -66,7 +65,9 @@ describe('create-react-class-integration', () => {
 
       expect(() => ReactNative.render(<View />, 1)).toWarnDev(
         'componentWillReceiveProps has been renamed',
-        {withoutStack: true},
+        {
+          withoutStack: true,
+        },
       );
     });
   });
diff --git a/packages/react/src/__tests__/createReactClassIntegration-test.js b/packages/react/src/__tests__/createReactClassIntegration-test.js
index b505e5ff34f4..8fec2209b906 100644
--- a/packages/react/src/__tests__/createReactClassIntegration-test.js
+++ b/packages/react/src/__tests__/createReactClassIntegration-test.js
@@ -361,7 +361,9 @@ describe('create-react-class-integration', () => {
       },
     });
 
-    expect(() => expect(() => Component()).toThrow()).toErrorDev(
+    expect(() =>
+      expect(() => Component()).toThrow(),
+    ).toErrorDev(
       'Warning: Something is calling a React component directly. Use a ' +
         'factory or JSX instead. See: https://fb.me/react-legacyfactory',
       {withoutStack: true},
@@ -717,7 +719,9 @@ describe('create-react-class-integration', () => {
 
     const container = document.createElement('div');
 
-    expect(() => ReactDOM.render(<Component />, container)).toErrorDev(
+    expect(() =>
+      ReactDOM.render(<Component />, container),
+    ).toErrorDev(
       'Warning: MyComponent: isMounted is deprecated. Instead, make sure to ' +
         'clean up subscriptions and pending requests in componentWillUnmount ' +
         'to prevent memory leaks.',
diff --git a/packages/react/src/__tests__/forwardRef-test.js b/packages/react/src/__tests__/forwardRef-test.js
index 835769b2e6ea..68f2065e4e09 100644
--- a/packages/react/src/__tests__/forwardRef-test.js
+++ b/packages/react/src/__tests__/forwardRef-test.js
@@ -126,22 +126,30 @@ describe('forwardRef', () => {
   });
 
   it('should warn if not provided a callback during creation', () => {
-    expect(() => React.forwardRef(undefined)).toErrorDev(
+    expect(() =>
+      React.forwardRef(undefined),
+    ).toErrorDev(
       'forwardRef requires a render function but was given undefined.',
       {withoutStack: true},
     );
     expect(() => React.forwardRef(null)).toErrorDev(
       'forwardRef requires a render function but was given null.',
-      {withoutStack: true},
+      {
+        withoutStack: true,
+      },
     );
-    expect(() => React.forwardRef('foo')).toErrorDev(
+    expect(() =>
+      React.forwardRef('foo'),
+    ).toErrorDev(
       'forwardRef requires a render function but was given string.',
       {withoutStack: true},
     );
   });
 
   it('should warn if no render function is provided', () => {
-    expect(React.forwardRef).toErrorDev(
+    expect(
+      React.forwardRef,
+    ).toErrorDev(
       'forwardRef requires a render function but was given undefined.',
       {withoutStack: true},
     );
@@ -158,12 +166,16 @@ describe('forwardRef', () => {
     }
     renderWithDefaultProps.defaultProps = {};
 
-    expect(() => React.forwardRef(renderWithPropTypes)).toErrorDev(
+    expect(() =>
+      React.forwardRef(renderWithPropTypes),
+    ).toErrorDev(
       'forwardRef render functions do not support propTypes or defaultProps. ' +
         'Did you accidentally pass a React component?',
       {withoutStack: true},
     );
-    expect(() => React.forwardRef(renderWithDefaultProps)).toErrorDev(
+    expect(() =>
+      React.forwardRef(renderWithDefaultProps),
+    ).toErrorDev(
       'forwardRef render functions do not support propTypes or defaultProps. ' +
         'Did you accidentally pass a React component?',
       {withoutStack: true},
@@ -179,7 +191,9 @@ describe('forwardRef', () => {
   it('should warn if the render function provided does not use the forwarded ref parameter', () => {
     const arityOfOne = props => <div {...props} />;
 
-    expect(() => React.forwardRef(arityOfOne)).toErrorDev(
+    expect(() =>
+      React.forwardRef(arityOfOne),
+    ).toErrorDev(
       'forwardRef render functions accept exactly two parameters: props and ref. ' +
         'Did you forget to use the ref parameter?',
       {withoutStack: true},
@@ -194,7 +208,9 @@ describe('forwardRef', () => {
   it('should warn if the render function provided expects to use more than two parameters', () => {
     const arityOfThree = (props, ref, x) => <div {...props} ref={ref} x={x} />;
 
-    expect(() => React.forwardRef(arityOfThree)).toErrorDev(
+    expect(() =>
+      React.forwardRef(arityOfThree),
+    ).toErrorDev(
       'forwardRef render functions accept exactly two parameters: props and ref. ' +
         'Any additional parameter will be undefined.',
       {withoutStack: true},
diff --git a/packages/scheduler/npm/umd/scheduler-tracing.development.js b/packages/scheduler/npm/umd/scheduler-tracing.development.js
index 6c5b5ab78793..a81bf8fe2f98 100644
--- a/packages/scheduler/npm/umd/scheduler-tracing.development.js
+++ b/packages/scheduler/npm/umd/scheduler-tracing.development.js
@@ -14,8 +14,8 @@
   typeof exports === 'object' && typeof module !== 'undefined'
     ? (module.exports = factory(require('react')))
     : typeof define === 'function' && define.amd // eslint-disable-line no-undef
-      ? define(['react'], factory) // eslint-disable-line no-undef
-      : (global.SchedulerTracing = factory(global));
+    ? define(['react'], factory) // eslint-disable-line no-undef
+    : (global.SchedulerTracing = factory(global));
 })(this, function(global) {
   function unstable_clear() {
     return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracing.unstable_clear.apply(
diff --git a/packages/scheduler/npm/umd/scheduler-tracing.production.min.js b/packages/scheduler/npm/umd/scheduler-tracing.production.min.js
index 6c5b5ab78793..a81bf8fe2f98 100644
--- a/packages/scheduler/npm/umd/scheduler-tracing.production.min.js
+++ b/packages/scheduler/npm/umd/scheduler-tracing.production.min.js
@@ -14,8 +14,8 @@
   typeof exports === 'object' && typeof module !== 'undefined'
     ? (module.exports = factory(require('react')))
     : typeof define === 'function' && define.amd // eslint-disable-line no-undef
-      ? define(['react'], factory) // eslint-disable-line no-undef
-      : (global.SchedulerTracing = factory(global));
+    ? define(['react'], factory) // eslint-disable-line no-undef
+    : (global.SchedulerTracing = factory(global));
 })(this, function(global) {
   function unstable_clear() {
     return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracing.unstable_clear.apply(
diff --git a/packages/scheduler/npm/umd/scheduler-tracing.profiling.min.js b/packages/scheduler/npm/umd/scheduler-tracing.profiling.min.js
index 6c5b5ab78793..a81bf8fe2f98 100644
--- a/packages/scheduler/npm/umd/scheduler-tracing.profiling.min.js
+++ b/packages/scheduler/npm/umd/scheduler-tracing.profiling.min.js
@@ -14,8 +14,8 @@
   typeof exports === 'object' && typeof module !== 'undefined'
     ? (module.exports = factory(require('react')))
     : typeof define === 'function' && define.amd // eslint-disable-line no-undef
-      ? define(['react'], factory) // eslint-disable-line no-undef
-      : (global.SchedulerTracing = factory(global));
+    ? define(['react'], factory) // eslint-disable-line no-undef
+    : (global.SchedulerTracing = factory(global));
 })(this, function(global) {
   function unstable_clear() {
     return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracing.unstable_clear.apply(
diff --git a/packages/scheduler/npm/umd/scheduler.development.js b/packages/scheduler/npm/umd/scheduler.development.js
index 91d7a652fe5b..b960dc91132e 100644
--- a/packages/scheduler/npm/umd/scheduler.development.js
+++ b/packages/scheduler/npm/umd/scheduler.development.js
@@ -16,8 +16,8 @@
   typeof exports === 'object' && typeof module !== 'undefined'
     ? (module.exports = factory(require('react')))
     : typeof define === 'function' && define.amd // eslint-disable-line no-undef
-      ? define(['react'], factory) // eslint-disable-line no-undef
-      : (global.Scheduler = factory(global));
+    ? define(['react'], factory) // eslint-disable-line no-undef
+    : (global.Scheduler = factory(global));
 })(this, function(global) {
   function unstable_now() {
     return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_now.apply(
diff --git a/packages/scheduler/npm/umd/scheduler.production.min.js b/packages/scheduler/npm/umd/scheduler.production.min.js
index de979ba0e26d..0c2584331b84 100644
--- a/packages/scheduler/npm/umd/scheduler.production.min.js
+++ b/packages/scheduler/npm/umd/scheduler.production.min.js
@@ -16,8 +16,8 @@
   typeof exports === 'object' && typeof module !== 'undefined'
     ? (module.exports = factory(require('react')))
     : typeof define === 'function' && define.amd // eslint-disable-line no-undef
-      ? define(['react'], factory) // eslint-disable-line no-undef
-      : (global.Scheduler = factory(global));
+    ? define(['react'], factory) // eslint-disable-line no-undef
+    : (global.Scheduler = factory(global));
 })(this, function(global) {
   function unstable_now() {
     return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_now.apply(
diff --git a/packages/scheduler/npm/umd/scheduler.profiling.min.js b/packages/scheduler/npm/umd/scheduler.profiling.min.js
index de979ba0e26d..0c2584331b84 100644
--- a/packages/scheduler/npm/umd/scheduler.profiling.min.js
+++ b/packages/scheduler/npm/umd/scheduler.profiling.min.js
@@ -16,8 +16,8 @@
   typeof exports === 'object' && typeof module !== 'undefined'
     ? (module.exports = factory(require('react')))
     : typeof define === 'function' && define.amd // eslint-disable-line no-undef
-      ? define(['react'], factory) // eslint-disable-line no-undef
-      : (global.Scheduler = factory(global));
+    ? define(['react'], factory) // eslint-disable-line no-undef
+    : (global.Scheduler = factory(global));
 })(this, function(global) {
   function unstable_now() {
     return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_now.apply(
diff --git a/packages/scheduler/src/SchedulerProfiling.js b/packages/scheduler/src/SchedulerProfiling.js
index 41c6003942c3..e1e05ca5d8b6 100644
--- a/packages/scheduler/src/SchedulerProfiling.js
+++ b/packages/scheduler/src/SchedulerProfiling.js
@@ -21,9 +21,9 @@ export const sharedProfilingBuffer = enableProfiling
     typeof SharedArrayBuffer === 'function'
     ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT)
     : // $FlowFixMe Flow doesn't know about ArrayBuffer
-      typeof ArrayBuffer === 'function'
-      ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT)
-      : null // Don't crash the init path on IE9
+    typeof ArrayBuffer === 'function'
+    ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT)
+    : null // Don't crash the init path on IE9
   : null;
 
 const profilingState =
diff --git a/packages/scheduler/src/__tests__/Scheduler-test.js b/packages/scheduler/src/__tests__/Scheduler-test.js
index e0fd9178453c..881d6d9ffe15 100644
--- a/packages/scheduler/src/__tests__/Scheduler-test.js
+++ b/packages/scheduler/src/__tests__/Scheduler-test.js
@@ -154,7 +154,11 @@ describe('Scheduler', () => {
     });
 
     let didYield = false;
-    const tasks = [['C1', 100], ['C2', 100], ['C3', 100]];
+    const tasks = [
+      ['C1', 100],
+      ['C2', 100],
+      ['C3', 100],
+    ];
     const C = () => {
       while (tasks.length > 0) {
         const [label, ms] = tasks.shift();
@@ -188,7 +192,12 @@ describe('Scheduler', () => {
   });
 
   it('continuation callbacks inherit the expiration of the previous callback', () => {
-    const tasks = [['A', 125], ['B', 124], ['C', 100], ['D', 100]];
+    const tasks = [
+      ['A', 125],
+      ['B', 124],
+      ['C', 100],
+      ['D', 100],
+    ];
     const work = () => {
       while (tasks.length > 0) {
         const [label, ms] = tasks.shift();
@@ -212,7 +221,12 @@ describe('Scheduler', () => {
   });
 
   it('continuations are interrupted by higher priority work', () => {
-    const tasks = [['A', 100], ['B', 100], ['C', 100], ['D', 100]];
+    const tasks = [
+      ['A', 100],
+      ['B', 100],
+      ['C', 100],
+      ['D', 100],
+    ];
     const work = () => {
       while (tasks.length > 0) {
         const [label, ms] = tasks.shift();
@@ -238,7 +252,12 @@ describe('Scheduler', () => {
     'continuations are interrupted by higher priority work scheduled ' +
       'inside an executing callback',
     () => {
-      const tasks = [['A', 100], ['B', 100], ['C', 100], ['D', 100]];
+      const tasks = [
+        ['A', 100],
+        ['B', 100],
+        ['C', 100],
+        ['D', 100],
+      ];
       const work = () => {
         while (tasks.length > 0) {
           const task = tasks.shift();
@@ -631,7 +650,12 @@ describe('Scheduler', () => {
       );
 
       // Schedule a time-sliced task at default priority.
-      const tasks = [['A', 100], ['B', 100], ['C', 100], ['D', 100]];
+      const tasks = [
+        ['A', 100],
+        ['B', 100],
+        ['C', 100],
+        ['D', 100],
+      ];
       const work = () => {
         while (tasks.length > 0) {
           const task = tasks.shift();
diff --git a/packages/shared/objectIs.js b/packages/shared/objectIs.js
index 877ec6572682..345b5150b5a7 100644
--- a/packages/shared/objectIs.js
+++ b/packages/shared/objectIs.js
@@ -17,4 +17,4 @@ function is(x: any, y: any) {
   );
 }
 
-export default (typeof Object.is === 'function' ? Object.is : is);
+export default typeof Object.is === 'function' ? Object.is : is;
diff --git a/packages/use-subscription/src/useSubscription.js b/packages/use-subscription/src/useSubscription.js
index 5d7b6500df99..4f5c6c70c509 100644
--- a/packages/use-subscription/src/useSubscription.js
+++ b/packages/use-subscription/src/useSubscription.js
@@ -67,61 +67,58 @@ export function useSubscription<Value>({
   // This also has an added benefit when multiple components are subscribed to the same source:
   // It allows each of the event handlers to safely schedule work without potentially removing an another handler.
   // (Learn more at https://codesandbox.io/s/k0yvr5970o)
-  useEffect(
-    () => {
-      let didUnsubscribe = false;
-
-      const checkForUpdates = () => {
-        // It's possible that this callback will be invoked even after being unsubscribed,
-        // if it's removed as a result of a subscription event/update.
-        // In this case, React will log a DEV warning about an update from an unmounted component.
-        // We can avoid triggering that warning with this check.
-        if (didUnsubscribe) {
-          return;
+  useEffect(() => {
+    let didUnsubscribe = false;
+
+    const checkForUpdates = () => {
+      // It's possible that this callback will be invoked even after being unsubscribed,
+      // if it's removed as a result of a subscription event/update.
+      // In this case, React will log a DEV warning about an update from an unmounted component.
+      // We can avoid triggering that warning with this check.
+      if (didUnsubscribe) {
+        return;
+      }
+
+      // We use a state updater function to avoid scheduling work for a stale source.
+      // However it's important to eagerly read the currently value,
+      // so that all scheduled work shares the same value (in the event of multiple subscriptions).
+      // This avoids visual "tearing" when a mutation happens during a (concurrent) render.
+      const value = getCurrentValue();
+
+      setState(prevState => {
+        // Ignore values from stale sources!
+        // Since we subscribe an unsubscribe in a passive effect,
+        // it's possible that this callback will be invoked for a stale (previous) subscription.
+        // This check avoids scheduling an update for that stale subscription.
+        if (
+          prevState.getCurrentValue !== getCurrentValue ||
+          prevState.subscribe !== subscribe
+        ) {
+          return prevState;
         }
 
-        // We use a state updater function to avoid scheduling work for a stale source.
-        // However it's important to eagerly read the currently value,
-        // so that all scheduled work shares the same value (in the event of multiple subscriptions).
-        // This avoids visual "tearing" when a mutation happens during a (concurrent) render.
-        const value = getCurrentValue();
-
-        setState(prevState => {
-          // Ignore values from stale sources!
-          // Since we subscribe an unsubscribe in a passive effect,
-          // it's possible that this callback will be invoked for a stale (previous) subscription.
-          // This check avoids scheduling an update for that stale subscription.
-          if (
-            prevState.getCurrentValue !== getCurrentValue ||
-            prevState.subscribe !== subscribe
-          ) {
-            return prevState;
-          }
-
-          // Some subscriptions will auto-invoke the handler, even if the value hasn't changed.
-          // If the value hasn't changed, no update is needed.
-          // Return state as-is so React can bail out and avoid an unnecessary render.
-          if (prevState.value === value) {
-            return prevState;
-          }
-
-          return {...prevState, value};
-        });
-      };
-      const unsubscribe = subscribe(checkForUpdates);
-
-      // Because we're subscribing in a passive effect,
-      // it's possible that an update has occurred between render and our effect handler.
-      // Check for this and schedule an update if work has occurred.
-      checkForUpdates();
-
-      return () => {
-        didUnsubscribe = true;
-        unsubscribe();
-      };
-    },
-    [getCurrentValue, subscribe],
-  );
+        // Some subscriptions will auto-invoke the handler, even if the value hasn't changed.
+        // If the value hasn't changed, no update is needed.
+        // Return state as-is so React can bail out and avoid an unnecessary render.
+        if (prevState.value === value) {
+          return prevState;
+        }
+
+        return {...prevState, value};
+      });
+    };
+    const unsubscribe = subscribe(checkForUpdates);
+
+    // Because we're subscribing in a passive effect,
+    // it's possible that an update has occurred between render and our effect handler.
+    // Check for this and schedule an update if work has occurred.
+    checkForUpdates();
+
+    return () => {
+      didUnsubscribe = true;
+      unsubscribe();
+    };
+  }, [getCurrentValue, subscribe]);
 
   // Return the current value for our caller to use while rendering.
   return valueToReturn;
diff --git a/scripts/jest/matchers/interactionTracingMatchers.js b/scripts/jest/matchers/interactionTracingMatchers.js
index 5bbd52b8874a..f697baef2d94 100644
--- a/scripts/jest/matchers/interactionTracingMatchers.js
+++ b/scripts/jest/matchers/interactionTracingMatchers.js
@@ -77,9 +77,7 @@ function toMatchInteractions(actualSetOrArray, expectedSetOrArray) {
   if (actualArray.length !== expectedArray.length) {
     return {
       message: () =>
-        `Expected ${expectedArray.length} interactions but there were ${
-          actualArray.length
-        }`,
+        `Expected ${expectedArray.length} interactions but there were ${actualArray.length}`,
       pass: false,
     };
   }
diff --git a/scripts/jest/matchers/profilerMatchers.js b/scripts/jest/matchers/profilerMatchers.js
index a39169de7bba..db4400d7fa50 100644
--- a/scripts/jest/matchers/profilerMatchers.js
+++ b/scripts/jest/matchers/profilerMatchers.js
@@ -51,9 +51,7 @@ function toMatchInteractions(actualSetOrArray, expectedSetOrArray) {
   if (actualArray.length !== expectedArray.length) {
     return {
       message: () =>
-        `Expected ${expectedArray.length} interactions but there were ${
-          actualArray.length
-        }`,
+        `Expected ${expectedArray.length} interactions but there were ${actualArray.length}`,
       pass: false,
     };
   }
diff --git a/scripts/jest/matchers/toWarnDev.js b/scripts/jest/matchers/toWarnDev.js
index 70657f716ba3..133b4f08a04c 100644
--- a/scripts/jest/matchers/toWarnDev.js
+++ b/scripts/jest/matchers/toWarnDev.js
@@ -177,9 +177,7 @@ const createMatcherFor = (consoleMethod, matcherName) =>
           if (withoutStack !== warningsWithoutComponentStack.length) {
             return {
               message: () =>
-                `Expected ${withoutStack} warnings without a component stack but received ${
-                  warningsWithoutComponentStack.length
-                }:\n` +
+                `Expected ${withoutStack} warnings without a component stack but received ${warningsWithoutComponentStack.length}:\n` +
                 warningsWithoutComponentStack.map(warning =>
                   this.utils.printReceived(warning)
                 ),
diff --git a/scripts/jest/setupHostConfigs.js b/scripts/jest/setupHostConfigs.js
index e547ac2bf160..93078a03cdee 100644
--- a/scripts/jest/setupHostConfigs.js
+++ b/scripts/jest/setupHostConfigs.js
@@ -57,9 +57,7 @@ inlinedHostConfigs.forEach(rendererInfo => {
     jest.mock(shimHostConfigPath, () => {
       hasImportedShimmedConfig = true;
       return require.requireActual(
-        `react-reconciler/src/forks/ReactFiberHostConfig.${
-          rendererInfo.shortName
-        }.js`
+        `react-reconciler/src/forks/ReactFiberHostConfig.${rendererInfo.shortName}.js`
       );
     });
 
@@ -88,17 +86,13 @@ inlinedHostConfigs.forEach(rendererInfo => {
       jest.mock(shimServerHostConfigPath, () => {
         hasImportedShimmedConfig = true;
         return require.requireActual(
-          `react-server/src/forks/ReactServerHostConfig.${
-            rendererInfo.shortName
-          }.js`
+          `react-server/src/forks/ReactServerHostConfig.${rendererInfo.shortName}.js`
         );
       });
       jest.mock(shimServerFormatConfigPath, () => {
         hasImportedShimmedConfig = true;
         return require.requireActual(
-          `react-server/src/forks/ReactServerFormatConfig.${
-            rendererInfo.shortName
-          }.js`
+          `react-server/src/forks/ReactServerFormatConfig.${rendererInfo.shortName}.js`
         );
       });
 
@@ -126,17 +120,13 @@ inlinedHostConfigs.forEach(rendererInfo => {
       jest.mock(shimServerHostConfigPath, () => {
         hasImportedShimmedConfig = true;
         return require.requireActual(
-          `react-server/src/forks/ReactServerHostConfig.${
-            rendererInfo.shortName
-          }.js`
+          `react-server/src/forks/ReactServerHostConfig.${rendererInfo.shortName}.js`
         );
       });
       jest.mock(shimServerFormatConfigPath, () => {
         hasImportedShimmedConfig = true;
         return require.requireActual(
-          `react-server/src/forks/ReactServerFormatConfig.${
-            rendererInfo.shortName
-          }.js`
+          `react-server/src/forks/ReactServerFormatConfig.${rendererInfo.shortName}.js`
         );
       });
 
@@ -164,9 +154,7 @@ inlinedHostConfigs.forEach(rendererInfo => {
       jest.mock(shimFlightClientHostConfigPath, () => {
         hasImportedShimmedConfig = true;
         return require.requireActual(
-          `react-flight/src/forks/ReactFlightClientHostConfig.${
-            rendererInfo.shortName
-          }.js`
+          `react-flight/src/forks/ReactFlightClientHostConfig.${rendererInfo.shortName}.js`
         );
       });
 
diff --git a/scripts/release/create-canary-commands/copy-repo-to-temp-directory.js b/scripts/release/create-canary-commands/copy-repo-to-temp-directory.js
index 3d859b7e23c6..fe8ce357fafb 100644
--- a/scripts/release/create-canary-commands/copy-repo-to-temp-directory.js
+++ b/scripts/release/create-canary-commands/copy-repo-to-temp-directory.js
@@ -27,8 +27,6 @@ const run = async ({commit, cwd, tempDirectory}) => {
 module.exports = async params => {
   return logPromise(
     run(params),
-    theme`Copying React repo to temporary directory ({path ${
-      params.tempDirectory
-    }})`
+    theme`Copying React repo to temporary directory ({path ${params.tempDirectory}})`
   );
 };
diff --git a/scripts/release/create-canary-commands/npm-pack-and-unpack.js b/scripts/release/create-canary-commands/npm-pack-and-unpack.js
index 34736bb63254..3f79373ced6b 100644
--- a/scripts/release/create-canary-commands/npm-pack-and-unpack.js
+++ b/scripts/release/create-canary-commands/npm-pack-and-unpack.js
@@ -32,18 +32,14 @@ const run = async ({cwd, dry, tempDirectory}) => {
   const compressedPackages = readdirSync(join(cwd, 'build/node_modules/'));
   for (let i = 0; i < compressedPackages.length; i++) {
     await exec(
-      `tar -zxvf ./build/node_modules/${
-        compressedPackages[i]
-      } -C ./build/node_modules/`,
+      `tar -zxvf ./build/node_modules/${compressedPackages[i]} -C ./build/node_modules/`,
       {cwd}
     );
     const packageJSON = readJsonSync(
       join(cwd, `./build/node_modules/package/package.json`)
     );
     await exec(
-      `mv ./build/node_modules/package ./build/node_modules/${
-        packageJSON.name
-      }`,
+      `mv ./build/node_modules/package ./build/node_modules/${packageJSON.name}`,
       {cwd}
     );
   }
diff --git a/scripts/release/prepare-stable-commands/update-stable-version-numbers.js b/scripts/release/prepare-stable-commands/update-stable-version-numbers.js
index a65575528344..4388a4b34c8d 100644
--- a/scripts/release/prepare-stable-commands/update-stable-version-numbers.js
+++ b/scripts/release/prepare-stable-commands/update-stable-version-numbers.js
@@ -90,9 +90,7 @@ const run = async ({cwd, packages, version}, versionsMap) => {
       for (let dependencyName in maybeDependency) {
         if (packages.includes(dependencyName)) {
           console.log(
-            theme`• {package ${dependencyName}} {version ${
-              maybeDependency[dependencyName]
-            }} {dimmed ${label}}`
+            theme`• {package ${dependencyName}} {version ${maybeDependency[dependencyName]}} {dimmed ${label}}`
           );
         }
       }
diff --git a/scripts/release/publish-commands/publish-to-npm.js b/scripts/release/publish-commands/publish-to-npm.js
index 73b89f83d86b..cc925bcc6639 100644
--- a/scripts/release/publish-commands/publish-to-npm.js
+++ b/scripts/release/publish-commands/publish-to-npm.js
@@ -44,17 +44,13 @@ const run = async ({cwd, dry, packages, tags}, otp) => {
       for (let j = 1; j < tags.length; j++) {
         if (!dry) {
           await exec(
-            `npm dist-tag add ${packageName}@${version} ${
-              tags[j]
-            } --otp=${otp}`,
+            `npm dist-tag add ${packageName}@${version} ${tags[j]} --otp=${otp}`,
             {cwd: packagePath}
           );
         }
         console.log(
           theme.command(
-            `  npm dist-tag add ${packageName}@${version} ${
-              tags[j]
-            } --otp=${otp}`
+            `  npm dist-tag add ${packageName}@${version} ${tags[j]} --otp=${otp}`
           )
         );
       }
diff --git a/scripts/release/shared-commands/download-build-artifacts.js b/scripts/release/shared-commands/download-build-artifacts.js
index 482655a574f3..cc65c44016a2 100644
--- a/scripts/release/shared-commands/download-build-artifacts.js
+++ b/scripts/release/shared-commands/download-build-artifacts.js
@@ -40,18 +40,14 @@ const run = async ({build, cwd}) => {
   const compressedPackages = readdirSync(join(cwd, 'build/node_modules/'));
   for (let i = 0; i < compressedPackages.length; i++) {
     await exec(
-      `tar zxvf ./build/node_modules/${
-        compressedPackages[i]
-      } -C ./build/node_modules/`,
+      `tar zxvf ./build/node_modules/${compressedPackages[i]} -C ./build/node_modules/`,
       {cwd}
     );
     const packageJSON = readJsonSync(
       join(cwd, `/build/node_modules/package/package.json`)
     );
     await exec(
-      `mv ./build/node_modules/package ./build/node_modules/${
-        packageJSON.name
-      }`,
+      `mv ./build/node_modules/package ./build/node_modules/${packageJSON.name}`,
       {cwd}
     );
   }
diff --git a/scripts/release/utils.js b/scripts/release/utils.js
index 972d311d3016..5c258366fcfb 100644
--- a/scripts/release/utils.js
+++ b/scripts/release/utils.js
@@ -41,9 +41,7 @@ const execRead = async (command, options) => {
 };
 
 const getArtifactsList = async buildID => {
-  const buildMetadataURL = `https://circleci.com/api/v1.1/project/github/facebook/react/${buildID}?circle-token=${
-    process.env.CIRCLE_CI_API_TOKEN
-  }`;
+  const buildMetadataURL = `https://circleci.com/api/v1.1/project/github/facebook/react/${buildID}?circle-token=${process.env.CIRCLE_CI_API_TOKEN}`;
   const buildMetadata = await http.get(buildMetadataURL, true);
   if (!buildMetadata.workflows || !buildMetadata.workflows.workflow_id) {
     console.log(
@@ -57,9 +55,7 @@ const getArtifactsList = async buildID => {
     ? 'process_artifacts_experimental'
     : 'process_artifacts';
   const workflowID = buildMetadata.workflows.workflow_id;
-  const workflowMetadataURL = `https://circleci.com/api/v2/workflow/${workflowID}/job?circle-token=${
-    process.env.CIRCLE_CI_API_TOKEN
-  }`;
+  const workflowMetadataURL = `https://circleci.com/api/v2/workflow/${workflowID}/job?circle-token=${process.env.CIRCLE_CI_API_TOKEN}`;
   const workflowMetadata = await http.get(workflowMetadataURL, true);
   const job = workflowMetadata.items.find(
     ({name}) => name === artifactsJobName
@@ -71,9 +67,7 @@ const getArtifactsList = async buildID => {
     process.exit(1);
   }
 
-  const jobArtifactsURL = `https://circleci.com/api/v1.1/project/github/facebook/react/${
-    job.job_number
-  }/artifacts?circle-token=${process.env.CIRCLE_CI_API_TOKEN}`;
+  const jobArtifactsURL = `https://circleci.com/api/v1.1/project/github/facebook/react/${job.job_number}/artifacts?circle-token=${process.env.CIRCLE_CI_API_TOKEN}`;
   const jobArtifacts = await http.get(jobArtifactsURL, true);
 
   return jobArtifacts;
diff --git a/scripts/rollup/forks.js b/scripts/rollup/forks.js
index b6d2fe5caf55..eeb0c1caee8a 100644
--- a/scripts/rollup/forks.js
+++ b/scripts/rollup/forks.js
@@ -278,9 +278,7 @@ const forks = Object.freeze({
     // eslint-disable-next-line no-for-of-loops/no-for-of-loops
     for (let rendererInfo of inlinedHostConfigs) {
       if (rendererInfo.entryPoints.indexOf(entry) !== -1) {
-        return `react-reconciler/src/forks/ReactFiberHostConfig.${
-          rendererInfo.shortName
-        }.js`;
+        return `react-reconciler/src/forks/ReactFiberHostConfig.${rendererInfo.shortName}.js`;
       }
     }
     throw new Error(
@@ -308,9 +306,7 @@ const forks = Object.freeze({
         if (!rendererInfo.isServerSupported) {
           return null;
         }
-        return `react-server/src/forks/ReactServerHostConfig.${
-          rendererInfo.shortName
-        }.js`;
+        return `react-server/src/forks/ReactServerHostConfig.${rendererInfo.shortName}.js`;
       }
     }
     throw new Error(
@@ -338,9 +334,7 @@ const forks = Object.freeze({
         if (!rendererInfo.isServerSupported) {
           return null;
         }
-        return `react-server/src/forks/ReactServerFormatConfig.${
-          rendererInfo.shortName
-        }.js`;
+        return `react-server/src/forks/ReactServerFormatConfig.${rendererInfo.shortName}.js`;
       }
     }
     throw new Error(
@@ -368,9 +362,7 @@ const forks = Object.freeze({
         if (!rendererInfo.isServerSupported) {
           return null;
         }
-        return `react-flight/src/forks/ReactFlightClientHostConfig.${
-          rendererInfo.shortName
-        }.js`;
+        return `react-flight/src/forks/ReactFlightClientHostConfig.${rendererInfo.shortName}.js`;
       }
     }
     throw new Error(
diff --git a/scripts/rollup/packaging.js b/scripts/rollup/packaging.js
index 840e290f23c1..c5ed04df5ab6 100644
--- a/scripts/rollup/packaging.js
+++ b/scripts/rollup/packaging.js
@@ -135,9 +135,9 @@ async function prepareNpmPackage(name) {
     ),
     asyncCopyTo(`packages/${name}/npm`, `build/node_modules/${name}`),
   ]);
-  const tgzName = (await asyncExecuteCommand(
-    `npm pack build/node_modules/${name}`
-  )).trim();
+  const tgzName = (
+    await asyncExecuteCommand(`npm pack build/node_modules/${name}`)
+  ).trim();
   await asyncRimRaf(`build/node_modules/${name}`);
   await asyncExtractTar(getTarOptions(tgzName, name));
   unlinkSync(tgzName);
diff --git a/scripts/rollup/wrappers.js b/scripts/rollup/wrappers.js
index b80e77121fb8..7f1749193696 100644
--- a/scripts/rollup/wrappers.js
+++ b/scripts/rollup/wrappers.js
@@ -71,14 +71,14 @@ ${license}
 'use strict';
 
 ${
-      globalName === 'ReactNoopRenderer' ||
-      globalName === 'ReactNoopRendererPersistent'
-        ? // React Noop needs regenerator runtime because it uses
-          // generators but GCC doesn't handle them in the output.
-          // So we use Babel for them.
-          `const regeneratorRuntime = require("regenerator-runtime");`
-        : ``
-    }
+  globalName === 'ReactNoopRenderer' ||
+  globalName === 'ReactNoopRendererPersistent'
+    ? // React Noop needs regenerator runtime because it uses
+      // generators but GCC doesn't handle them in the output.
+      // So we use Babel for them.
+      `const regeneratorRuntime = require("regenerator-runtime");`
+    : ``
+}
 
 if (process.env.NODE_ENV !== "production") {
   (function() {
@@ -95,14 +95,14 @@ ${source}
 ${license}
  */
 ${
-      globalName === 'ReactNoopRenderer' ||
-      globalName === 'ReactNoopRendererPersistent'
-        ? // React Noop needs regenerator runtime because it uses
-          // generators but GCC doesn't handle them in the output.
-          // So we use Babel for them.
-          `const regeneratorRuntime = require("regenerator-runtime");`
-        : ``
-    }
+  globalName === 'ReactNoopRenderer' ||
+  globalName === 'ReactNoopRendererPersistent'
+    ? // React Noop needs regenerator runtime because it uses
+      // generators but GCC doesn't handle them in the output.
+      // So we use Babel for them.
+      `const regeneratorRuntime = require("regenerator-runtime");`
+    : ``
+}
 ${source}`;
   },
 
@@ -114,14 +114,14 @@ ${source}`;
 ${license}
  */
 ${
-      globalName === 'ReactNoopRenderer' ||
-      globalName === 'ReactNoopRendererPersistent'
-        ? // React Noop needs regenerator runtime because it uses
-          // generators but GCC doesn't handle them in the output.
-          // So we use Babel for them.
-          `const regeneratorRuntime = require("regenerator-runtime");`
-        : ``
-    }
+  globalName === 'ReactNoopRenderer' ||
+  globalName === 'ReactNoopRendererPersistent'
+    ? // React Noop needs regenerator runtime because it uses
+      // generators but GCC doesn't handle them in the output.
+      // So we use Babel for them.
+      `const regeneratorRuntime = require("regenerator-runtime");`
+    : ``
+}
 ${source}`;
   },
 
diff --git a/yarn.lock b/yarn.lock
index 62eb3cd14972..bead32eaebf5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4864,6 +4864,7 @@ eslint-plugin-no-unsafe-innerhtml@1.0.16:
 
 "eslint-plugin-react-internal@link:./scripts/eslint-rules":
   version "0.0.0"
+  uid ""
 
 eslint-plugin-react@^6.7.1:
   version "6.10.3"
@@ -10059,7 +10060,12 @@ preserve@^0.2.0:
   resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
   integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
 
-prettier@1.13.7, prettier@^1.0.0:
+prettier@1.19.1:
+  version "1.19.1"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
+  integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
+
+prettier@^1.0.0:
   version "1.13.7"
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.7.tgz#850f3b8af784a49a6ea2d2eaa7ed1428a34b7281"
   integrity sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==
