diff --git a/package.json b/package.json index eb95ebce230fd..0d50364ef51ee 100644 --- a/package.json +++ b/package.json @@ -106,8 +106,8 @@ }, "scripts": { "build": "node ./scripts/rollup/build.js", - "build-for-devtools-dev": "cross-env RELEASE_CHANNEL=experimental yarn build react/index,react-dom/index,react-is,react-debug-tools,scheduler,react-test-renderer,react-refresh --type=NODE_DEV", - "build-for-devtools-prod": "cross-env RELEASE_CHANNEL=experimental yarn build react/index,react-dom/index,react-is,react-debug-tools,scheduler,react-test-renderer,react-refresh --type=NODE_PROD", + "build-for-devtools-dev": "cross-env RELEASE_CHANNEL=experimental yarn build react/index,react-dom,react-is,react-debug-tools,scheduler,react-test-renderer,react-refresh --type=NODE_DEV", + "build-for-devtools-prod": "cross-env RELEASE_CHANNEL=experimental yarn build react/index,react-dom,react-is,react-debug-tools,scheduler,react-test-renderer,react-refresh --type=NODE_PROD", "linc": "node ./scripts/tasks/linc.js", "lint": "node ./scripts/tasks/eslint.js", "lint-build": "node ./scripts/rollup/validate/index.js", diff --git a/packages/react-art/package.json b/packages/react-art/package.json index 194a9697e0a3d..ae977717034e8 100644 --- a/packages/react-art/package.json +++ b/packages/react-art/package.json @@ -1,7 +1,7 @@ { "name": "react-art", "description": "React ART is a JavaScript library for drawing vector graphics using React. It provides declarative and reactive bindings to the ART library. Using the same declarative API you can render the output to either Canvas, SVG or VML (IE8).", - "version": "17.0.1", + "version": "17.0.2", "main": "index.js", "repository": { "type": "git", @@ -29,7 +29,7 @@ "scheduler": "^0.20.1" }, "peerDependencies": { - "react": "17.0.1" + "react": "17.0.2" }, "files": [ "LICENSE", diff --git a/packages/react-devtools-shared/src/backend/renderer.js b/packages/react-devtools-shared/src/backend/renderer.js index 1245c254c5575..ba7e7bffdbe67 100644 --- a/packages/react-devtools-shared/src/backend/renderer.js +++ b/packages/react-devtools-shared/src/backend/renderer.js @@ -7,7 +7,7 @@ * @flow */ -import {gte} from 'semver'; +import {gt, gte} from 'semver'; import { ComponentFilterDisplayName, ComponentFilterElementType, @@ -166,8 +166,10 @@ export function getInternalReactConstants( // ********************************************************** // The section below is copied from files in React repo. // Keep it in sync, and add version guards if it changes. - if (gte(version, '17.0.0-alpha')) { - // TODO (Offscreen) Update the version number above to reflect the first Offscreen alpha/beta release. + // + // TODO Update the gt() check below to be gte() whichever the next version number is. + // Currently the version in Git is 17.0.2 (but that version has not been/may not end up being released). + if (gt(version, '17.0.1')) { ReactTypeOfWork = { ClassComponent: 1, ContextConsumer: 9, @@ -178,6 +180,7 @@ export function getInternalReactConstants( ForwardRef: 11, Fragment: 7, FunctionComponent: 0, + FundamentalComponent: 20, // Experimental HostComponent: 5, HostPortal: 4, HostRoot: 3, @@ -185,10 +188,42 @@ export function getInternalReactConstants( IncompleteClassComponent: 17, IndeterminateComponent: 2, LazyComponent: 16, + LegacyHiddenComponent: 23, MemoComponent: 14, Mode: 8, OffscreenComponent: 22, // Experimental Profiler: 12, + ScopeComponent: 21, // Experimental + SimpleMemoComponent: 15, + SuspenseComponent: 13, + SuspenseListComponent: 19, // Experimental + YieldComponent: -1, // Removed + }; + } else if (gte(version, '17.0.0-alpha')) { + ReactTypeOfWork = { + ClassComponent: 1, + ContextConsumer: 9, + ContextProvider: 10, + CoroutineComponent: -1, // Removed + CoroutineHandlerPhase: -1, // Removed + DehydratedSuspenseComponent: 18, // Behind a flag + ForwardRef: 11, + Fragment: 7, + FunctionComponent: 0, + FundamentalComponent: 20, // Experimental + HostComponent: 5, + HostPortal: 4, + HostRoot: 3, + HostText: 6, + IncompleteClassComponent: 17, + IndeterminateComponent: 2, + LazyComponent: 16, + LegacyHiddenComponent: 24, + MemoComponent: 14, + Mode: 8, + OffscreenComponent: 23, // Experimental + Profiler: 12, + ScopeComponent: 21, // Experimental SimpleMemoComponent: 15, SuspenseComponent: 13, SuspenseListComponent: 19, // Experimental @@ -205,6 +240,7 @@ export function getInternalReactConstants( ForwardRef: 11, Fragment: 7, FunctionComponent: 0, + FundamentalComponent: -1, // Experimental HostComponent: 5, HostPortal: 4, HostRoot: 3, @@ -212,10 +248,12 @@ export function getInternalReactConstants( IncompleteClassComponent: 17, IndeterminateComponent: 2, LazyComponent: 16, + LegacyHiddenComponent: -1, MemoComponent: 14, Mode: 8, OffscreenComponent: -1, // Experimental Profiler: 12, + ScopeComponent: -1, // Experimental SimpleMemoComponent: 15, SuspenseComponent: 13, SuspenseListComponent: 19, // Experimental @@ -232,6 +270,7 @@ export function getInternalReactConstants( ForwardRef: 13, Fragment: 9, FunctionComponent: 0, + FundamentalComponent: -1, // Experimental HostComponent: 7, HostPortal: 6, HostRoot: 5, @@ -239,10 +278,12 @@ export function getInternalReactConstants( IncompleteClassComponent: -1, // Doesn't exist yet IndeterminateComponent: 4, LazyComponent: -1, // Doesn't exist yet + LegacyHiddenComponent: -1, MemoComponent: -1, // Doesn't exist yet Mode: 10, OffscreenComponent: -1, // Experimental Profiler: 15, + ScopeComponent: -1, // Experimental SimpleMemoComponent: -1, // Doesn't exist yet SuspenseComponent: 16, SuspenseListComponent: -1, // Doesn't exist yet @@ -259,6 +300,7 @@ export function getInternalReactConstants( ForwardRef: 14, Fragment: 10, FunctionComponent: 1, + FundamentalComponent: -1, // Experimental HostComponent: 5, HostPortal: 4, HostRoot: 3, @@ -266,10 +308,12 @@ export function getInternalReactConstants( IncompleteClassComponent: -1, // Doesn't exist yet IndeterminateComponent: 0, LazyComponent: -1, // Doesn't exist yet + LegacyHiddenComponent: -1, MemoComponent: -1, // Doesn't exist yet Mode: 11, OffscreenComponent: -1, // Experimental Profiler: 15, + ScopeComponent: -1, // Experimental SimpleMemoComponent: -1, // Doesn't exist yet SuspenseComponent: 16, SuspenseListComponent: -1, // Doesn't exist yet @@ -296,12 +340,17 @@ export function getInternalReactConstants( FunctionComponent, IndeterminateComponent, ForwardRef, + FundamentalComponent, HostRoot, HostComponent, HostPortal, HostText, Fragment, + LazyComponent, + LegacyHiddenComponent, MemoComponent, + OffscreenComponent, + ScopeComponent, SimpleMemoComponent, SuspenseComponent, SuspenseListComponent, @@ -354,11 +403,21 @@ export function getInternalReactConstants( case HostText: case Fragment: return null; + case FundamentalComponent: + return 'Fundamental'; + case LazyComponent: + return 'Lazy'; case MemoComponent: case SimpleMemoComponent: return getDisplayName(resolvedType, 'Anonymous'); case SuspenseComponent: return 'Suspense'; + case LegacyHiddenComponent: + return 'LegacyHidden'; + case OffscreenComponent: + return 'Offscreen'; + case ScopeComponent: + return 'Scope'; case SuspenseListComponent: return 'SuspenseList'; default: @@ -493,10 +552,14 @@ export function attach( const debug = (name: string, fiber: Fiber, parentFiber: ?Fiber): void => { if (__DEBUG__) { - const displayName = getDisplayNameForFiber(fiber) || 'null'; + const displayName = + fiber.tag + ':' + (getDisplayNameForFiber(fiber) || 'null'); const id = getFiberID(fiber); - const parentDisplayName = - (parentFiber != null && getDisplayNameForFiber(parentFiber)) || 'null'; + const parentDisplayName = parentFiber + ? parentFiber.tag + + ':' + + (getDisplayNameForFiber(parentFiber) || 'null') + : ''; const parentID = parentFiber ? getFiberID(parentFiber) : ''; // NOTE: calling getFiberID or getPrimaryFiber is unsafe here // because it will put them in the map. For now, we'll omit them. @@ -1207,6 +1270,7 @@ export function attach( return; } const id = getFiberID(primaryFiber); + if (isRoot) { // Roots must be removed only after all children (pending and simulated) have been removed. // So we track it separately. diff --git a/packages/react-devtools-shared/src/backend/types.js b/packages/react-devtools-shared/src/backend/types.js index 4ec480acedad7..7b267bc531fa2 100644 --- a/packages/react-devtools-shared/src/backend/types.js +++ b/packages/react-devtools-shared/src/backend/types.js @@ -35,6 +35,7 @@ export type WorkTagMap = {| ForwardRef: WorkTag, Fragment: WorkTag, FunctionComponent: WorkTag, + FundamentalComponent: WorkTag, HostComponent: WorkTag, HostPortal: WorkTag, HostRoot: WorkTag, @@ -42,10 +43,12 @@ export type WorkTagMap = {| IncompleteClassComponent: WorkTag, IndeterminateComponent: WorkTag, LazyComponent: WorkTag, + LegacyHiddenComponent: WorkTag, MemoComponent: WorkTag, Mode: WorkTag, OffscreenComponent: WorkTag, Profiler: WorkTag, + ScopeComponent: WorkTag, SimpleMemoComponent: WorkTag, SuspenseComponent: WorkTag, SuspenseListComponent: WorkTag, diff --git a/packages/react-dom/package.json b/packages/react-dom/package.json index f512ed9f516b8..5e8991e898772 100644 --- a/packages/react-dom/package.json +++ b/packages/react-dom/package.json @@ -1,6 +1,6 @@ { "name": "react-dom", - "version": "17.0.1", + "version": "17.0.2", "description": "React package for working with the DOM.", "main": "index.js", "repository": { @@ -22,7 +22,7 @@ "scheduler": "^0.20.1" }, "peerDependencies": { - "react": "17.0.1" + "react": "17.0.2" }, "files": [ "LICENSE", diff --git a/packages/react-is/package.json b/packages/react-is/package.json index 1687b93fae93b..1a6567dcff5e9 100644 --- a/packages/react-is/package.json +++ b/packages/react-is/package.json @@ -1,6 +1,6 @@ { "name": "react-is", - "version": "17.0.1", + "version": "17.0.2", "description": "Brand checking of React Elements.", "main": "index.js", "repository": { diff --git a/packages/react-reconciler/package.json b/packages/react-reconciler/package.json index 858a7190a6eaf..a6fd3a05a9627 100644 --- a/packages/react-reconciler/package.json +++ b/packages/react-reconciler/package.json @@ -26,7 +26,7 @@ "node": ">=0.10.0" }, "peerDependencies": { - "react": "^17.0.1" + "react": "^17.0.2" }, "dependencies": { "loose-envify": "^1.1.0", diff --git a/packages/react-test-renderer/package.json b/packages/react-test-renderer/package.json index c12ce070d8f32..ea62201e24b1a 100644 --- a/packages/react-test-renderer/package.json +++ b/packages/react-test-renderer/package.json @@ -1,6 +1,6 @@ { "name": "react-test-renderer", - "version": "17.0.1", + "version": "17.0.2", "description": "React package for snapshot testing.", "main": "index.js", "repository": { @@ -20,12 +20,12 @@ "homepage": "https://reactjs.org/", "dependencies": { "object-assign": "^4.1.1", - "react-is": "^17.0.1", + "react-is": "^17.0.2", "react-shallow-renderer": "^16.13.1", "scheduler": "^0.20.1" }, "peerDependencies": { - "react": "17.0.1" + "react": "17.0.2" }, "files": [ "LICENSE", diff --git a/packages/react/package.json b/packages/react/package.json index 993a45af3bc5f..0dd2c35ee6284 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -4,7 +4,7 @@ "keywords": [ "react" ], - "version": "17.0.1", + "version": "17.0.2", "homepage": "https://reactjs.org/", "bugs": "https://github.com/facebook/react/issues", "license": "MIT", diff --git a/packages/shared/ReactVersion.js b/packages/shared/ReactVersion.js index b042a00d11433..0404e3972272e 100644 --- a/packages/shared/ReactVersion.js +++ b/packages/shared/ReactVersion.js @@ -6,4 +6,8 @@ */ // TODO: this is special because it gets imported during build. -export default '17.0.1'; +// +// TODO: 17.0.2 has not been released to NPM; +// It exists as a placeholder so that DevTools can support work tag changes between releases. +// When we next publish a release (either 17.0.2 or 17.1.0), update the matching TODO in backend/renderer.js +export default '17.0.2';