diff --git a/packages/next/package.json b/packages/next/package.json index 1802aed0b2a03c0..18a7829241891b6 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -158,9 +158,9 @@ "@types/node-fetch": "2.6.1", "@types/path-to-regexp": "1.7.0", "@types/platform": "1.3.4", - "@types/react": "16.9.17", - "@types/react-dom": "16.9.4", - "@types/react-is": "16.7.1", + "@types/react": "17.0.39", + "@types/react-dom": "17.0.11", + "@types/react-is": "17.0.3", "@types/semver": "7.3.1", "@types/send": "0.14.4", "@types/shell-quote": "1.7.1", diff --git a/packages/next/server/render.tsx b/packages/next/server/render.tsx index aee88e14ee0bc2f..a4b5410be1f69d5 100644 --- a/packages/next/server/render.tsx +++ b/packages/next/server/render.tsx @@ -28,7 +28,7 @@ import type { UnwrapPromise } from '../lib/coalesced-function' import type { ReactReadableStream } from './node-web-streams-helper' import type { FontLoaderManifest } from '../build/webpack/plugins/font-loader-manifest-plugin' -import React from 'react' +import type { FC, ComponentType, ReactElement } from 'react' import ReactDOMServer from 'react-dom/server.browser' import { StyleRegistry, createStyleRegistry } from 'styled-jsx' import { @@ -105,7 +105,7 @@ function noRouter() { throw new Error(message) } -async function renderToString(element: React.ReactElement) { +async function renderToString(element: ReactElement) { const renderStream = await ReactDOMServer.renderToReadableStream(element) await renderStream.allReady return streamToString(renderStream) @@ -217,7 +217,7 @@ export type RenderOptsPartial = { nextExport?: boolean dev?: boolean ampPath?: string - ErrorDebug?: React.ComponentType<{ error: Error }> + ErrorDebug?: ComponentType<{ error: Error }> ampValidator?: (html: string, pathname: string) => Promise ampSkipValidation?: boolean ampOptimizerConfig?: { [key: string]: any } @@ -396,7 +396,7 @@ export async function renderToHTML( let Document = renderOpts.Document // Component will be wrapped by ServerComponentWrapper for RSC - let Component: React.ComponentType<{}> | ((props: any) => JSX.Element) = + let Component: ComponentType<{}> | ((props: any) => JSX.Element) = renderOpts.Component const OriginComponent = Component @@ -639,7 +639,7 @@ export async function renderToHTML( // not be useful. // https://github.com/facebook/react/pull/22644 const Noop = () => null - const AppContainerWithIsomorphicFiberStructure: React.FC<{ + const AppContainerWithIsomorphicFiberStructure: FC<{ children: JSX.Element }> = ({ children }) => { return ( diff --git a/packages/next/tsconfig.json b/packages/next/tsconfig.json index abbb87416c5f28f..698b8f8f58d4e27 100644 --- a/packages/next/tsconfig.json +++ b/packages/next/tsconfig.json @@ -6,7 +6,7 @@ "target": "ES2017", "esModuleInterop": true, "moduleResolution": "node", - "jsx": "react", + "jsx": "react-jsx", "stripInternal": true }, "exclude": [ diff --git a/packages/react-dev-overlay/tsconfig.json b/packages/react-dev-overlay/tsconfig.json index 7bb540dee0f1b02..7ecffb68b3afbdf 100644 --- a/packages/react-dev-overlay/tsconfig.json +++ b/packages/react-dev-overlay/tsconfig.json @@ -9,7 +9,7 @@ "downlevelIteration": true, "preserveWatchOutput": true, "outDir": "dist", - "jsx": "react", + "jsx": "react-jsx", "noFallthroughCasesInSwitch": true, "skipLibCheck": true }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 96527f165dbdd5a..2c5f136fa8883a7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -504,9 +504,9 @@ importers: '@types/node-fetch': 2.6.1 '@types/path-to-regexp': 1.7.0 '@types/platform': 1.3.4 - '@types/react': 16.9.17 - '@types/react-dom': 16.9.4 - '@types/react-is': 16.7.1 + '@types/react': 17.0.39 + '@types/react-dom': 17.0.11 + '@types/react-is': 17.0.3 '@types/semver': 7.3.1 '@types/send': 0.14.4 '@types/shell-quote': 1.7.1 @@ -703,9 +703,9 @@ importers: '@types/node-fetch': 2.6.1 '@types/path-to-regexp': 1.7.0 '@types/platform': 1.3.4 - '@types/react': 16.9.17 - '@types/react-dom': 16.9.4 - '@types/react-is': 16.7.1 + '@types/react': 17.0.39 + '@types/react-dom': 17.0.11 + '@types/react-is': 17.0.3 '@types/semver': 7.3.1 '@types/send': 0.14.4 '@types/shell-quote': 1.7.1 @@ -7772,6 +7772,15 @@ packages: '@types/react': 16.9.17 dev: true + /@types/react-dom/17.0.11: + resolution: + { + integrity: sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==, + } + dependencies: + '@types/react': 17.0.39 + dev: true + /@types/react-dom/17.0.14: resolution: { @@ -7781,13 +7790,13 @@ packages: '@types/react': 16.9.17 dev: true - /@types/react-is/16.7.1: + /@types/react-is/17.0.3: resolution: { - integrity: sha512-dMLFD2cCsxtDgMkTydQCM0PxDq8vwc6uN5M/jRktDfYvH3nQj6pjC9OrCXS2lKlYoYTNJorI/dI8x9dpLshexQ==, + integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==, } dependencies: - '@types/react': 16.9.17 + '@types/react': 17.0.39 dev: true /@types/react/16.9.17: @@ -7800,6 +7809,17 @@ packages: csstype: 2.6.8 dev: true + /@types/react/17.0.39: + resolution: + { + integrity: sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==, + } + dependencies: + '@types/prop-types': 15.7.3 + '@types/scheduler': 0.16.2 + csstype: 3.0.10 + dev: true + /@types/relay-runtime/13.0.0: resolution: { @@ -7842,6 +7862,13 @@ packages: '@types/node': 17.0.21 dev: true + /@types/scheduler/0.16.2: + resolution: + { + integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==, + } + dev: true + /@types/selenium-webdriver/4.0.15: resolution: {