Stop hardcoding require('next/dist/compiled/react')#65122
Stop hardcoding require('next/dist/compiled/react')#65122
require('next/dist/compiled/react')#65122Conversation
This will be picked up by our `next` alias in `createWebpackAliases`. Any subsequent alias of `next/*` would be ignored e.g. aliasing `next/dist/compiled/react` to the react-server entrypoint. I also hope we don't actually need this since we're already aliasing `react` to `next/dist/compiled/react` in Webpack. At the same time we're not hardcoding `next/dist/compiled/react-dom`. This split in behavior is really confusing. The alternate would be ensuring that our `next` alias becomes a falback. Or list all the public entrypoints. Or remove it entirely.
require('next/dist/compiled/react')`require('next/dist/compiled/react')
Failing test suitesCommit: 4d78689
Expand output● app dir - with output export and custom distDir (next dev) › should render properly Read more about building and testing Next.js in contributing.md.
Expand output● app dir - with output export (next dev / next build) › production mode › should error when running next export Read more about building and testing Next.js in contributing.md.
Expand output● app-dynamic-error › production mode › throws an error when prerendering a page with config dynamic error Read more about building and testing Next.js in contributing.md.
Expand output● App assetPrefix config › should render correctly with assetPrefix: "/" Read more about building and testing Next.js in contributing.md.
Expand output● ppr build errors › production mode › within a suspense boundary › should fail the build for uncaught prerender errors ● ppr build errors › production mode › outside of a suspense boundary › should fail the build for uncaught errors ● ppr build errors › production mode › when a postpone call is caught and logged it should › should include a message telling why Read more about building and testing Next.js in contributing.md.
Expand output● app dir - with output export - trailing slash dev › development mode › should work in dev with trailingSlash 'false' ● app dir - with output export - trailing slash dev › development mode › should work in dev with trailingSlash 'true' Read more about building and testing Next.js in contributing.md.
Expand output● should not show deopted into client rendering warning Read more about building and testing Next.js in contributing.md.
Expand output● parallel-routes-and-interception › parallel routes › should gracefully handle when two page segments match the ● parallel-routes-and-interception › parallel routes › should throw a 404 when no matching parallel route is found ● parallel-routes-and-interception › parallel routes › should render nested parallel routes ● parallel-routes-and-interception › parallel routes › should support layout files in parallel routes ● parallel-routes-and-interception › parallel routes › should only scroll to the parallel route that was navigated to ● parallel-routes-and-interception › parallel routes › should apply the catch-all route to the parallel route if no matching route is found ● parallel-routes-and-interception › parallel routes › should match the catch-all routes of the more specific path, if there is more than one catch-all route ● parallel-routes-and-interception › parallel routes › should navigate with a link with prefetch=false ● parallel-routes-and-interception › parallel routes › should display all parallel route params with useParams ● parallel-routes-and-interception › parallel routes › should load CSS for a default page that exports another page ● parallel-routes-and-interception › parallel routes › should handle a loading state ● parallel-routes-and-interception › route intercepting with dynamic routes › should render intercepted route ● parallel-routes-and-interception › route intercepting with dynamic optional catch-all routes › should render intercepted route ● parallel-routes-and-interception › route intercepting with dynamic catch-all routes › should render intercepted route ● parallel-routes-and-interception › route intercepting › should render intercepted route ● parallel-routes-and-interception › route intercepting › should render an intercepted route from a slot ● parallel-routes-and-interception › route intercepting › should render an intercepted route at the top level from a nested path ● parallel-routes-and-interception › route intercepting › should render intercepted route from a nested route ● parallel-routes-and-interception › route intercepting › should re-render the layout on the server when it had a default child route ● parallel-routes-and-interception › route intercepting › should render modal when paired with parallel routes ● parallel-routes-and-interception › route intercepting › should support intercepting with beforeFiles rewrites ● parallel-routes-and-interception › route intercepting › should support intercepting local dynamic sibling routes ● parallel-routes-and-interception › route intercepting › should intercept on routes that contain hyphenated/special dynamic params ● parallel-routes-and-interception › route intercepting › should not have /default paths in the prerender manifest Read more about building and testing Next.js in contributing.md.
Expand output● Static Image Component Tests › development mode › Should allow an image with a static src to omit height and width ● Static Image Component Tests › development mode › should have containing followed by for priority image ● Static Image Component Tests › development mode › Should automatically provide an image height and width ● Static Image Component Tests › development mode › should use width and height prop to override import ● Static Image Component Tests › development mode › should use height prop to adjust both width and height ● Static Image Component Tests › development mode › should use width prop to adjust both width and height ● Static Image Component Tests › development mode › should add a data URL placeholder to an image ● Static Image Component Tests › development mode › should add a blur placeholder a statically imported jpg ● Static Image Component Tests › development mode › should add a blur placeholder a statically imported png ● Static Image Component Tests › development mode › should add a blur placeholder a statically imported png with fill ● Static Image Component Tests › development mode › should add placeholder with blurDataURL and fill ● Static Image Component Tests › development mode › should add placeholder even when blurDataURL aspect ratio does not match width/height ratio ● Static Image Component Tests › development mode › should load direct imported image Read more about building and testing Next.js in contributing.md. |
Stats from current PRDefault Build (Increase detected
|
| vercel/next.js canary | vercel/next.js sebbie/no-hardcoded-react-alias | Change | |
|---|---|---|---|
| buildDuration | 15.6s | 14s | N/A |
| buildDurationCached | 8s | 6.7s | N/A |
| nodeModulesSize | 360 MB | 359 MB | N/A |
| nextStartRea..uration (ms) | 389ms | 389ms | ✓ |
Client Bundles (main, webpack) Overall increase ⚠️
| vercel/next.js canary | vercel/next.js sebbie/no-hardcoded-react-alias | Change | |
|---|---|---|---|
| 1103-HASH.js gzip | 31.8 kB | 32 kB | |
| 1a9f679d-HASH.js gzip | 53.5 kB | 53.5 kB | ✓ |
| 335-HASH.js gzip | 5.09 kB | 5.09 kB | N/A |
| 7953.HASH.js gzip | 169 B | 169 B | ✓ |
| framework-HASH.js gzip | 45.2 kB | 45.2 kB | ✓ |
| main-app-HASH.js gzip | 231 B | 228 B | N/A |
| main-HASH.js gzip | 31.5 kB | 31.5 kB | N/A |
| webpack-HASH.js gzip | 1.65 kB | 1.65 kB | N/A |
| Overall change | 131 kB | 131 kB |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | vercel/next.js sebbie/no-hardcoded-react-alias | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | vercel/next.js sebbie/no-hardcoded-react-alias | Change | |
|---|---|---|---|
| _app-HASH.js gzip | 192 B | 193 B | N/A |
| _error-HASH.js gzip | 192 B | 193 B | N/A |
| amp-HASH.js gzip | 507 B | 511 B | N/A |
| css-HASH.js gzip | 341 B | 343 B | N/A |
| dynamic-HASH.js gzip | 2.52 kB | 2.52 kB | ✓ |
| edge-ssr-HASH.js gzip | 266 B | 265 B | N/A |
| head-HASH.js gzip | 362 B | 365 B | N/A |
| hooks-HASH.js gzip | 392 B | 392 B | ✓ |
| image-HASH.js gzip | 4.32 kB | 4.32 kB | N/A |
| index-HASH.js gzip | 268 B | 268 B | ✓ |
| link-HASH.js gzip | 2.69 kB | 2.7 kB | N/A |
| routerDirect..HASH.js gzip | 329 B | 328 B | N/A |
| script-HASH.js gzip | 397 B | 397 B | ✓ |
| withRouter-HASH.js gzip | 324 B | 324 B | ✓ |
| 1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
| Overall change | 4 kB | 4 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | vercel/next.js sebbie/no-hardcoded-react-alias | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 483 B | 484 B | N/A |
| Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | vercel/next.js sebbie/no-hardcoded-react-alias | Change | |
|---|---|---|---|
| index.html gzip | 527 B | 527 B | ✓ |
| link.html gzip | 542 B | 541 B | N/A |
| withRouter.html gzip | 524 B | 524 B | ✓ |
| Overall change | 1.05 kB | 1.05 kB | ✓ |
Edge SSR bundle Size
| vercel/next.js canary | vercel/next.js sebbie/no-hardcoded-react-alias | Change | |
|---|---|---|---|
| edge-ssr.js gzip | 94.7 kB | 94.7 kB | N/A |
| page.js gzip | 181 kB | 179 kB | N/A |
| Overall change | 0 B | 0 B | ✓ |
Middleware size
| vercel/next.js canary | vercel/next.js sebbie/no-hardcoded-react-alias | Change | |
|---|---|---|---|
| middleware-b..fest.js gzip | 624 B | 625 B | N/A |
| middleware-r..fest.js gzip | 156 B | 156 B | ✓ |
| middleware.js gzip | 25.7 kB | 25.7 kB | N/A |
| edge-runtime..pack.js gzip | 839 B | 839 B | ✓ |
| Overall change | 995 B | 995 B | ✓ |
Next Runtimes
| vercel/next.js canary | vercel/next.js sebbie/no-hardcoded-react-alias | Change | |
|---|---|---|---|
| app-page-exp...dev.js gzip | 171 kB | 167 kB | N/A |
| app-page-exp..prod.js gzip | 98.4 kB | 96.7 kB | N/A |
| app-page-tur..prod.js gzip | 99.9 kB | 98.2 kB | N/A |
| app-page-tur..prod.js gzip | 94.3 kB | 94.3 kB | ✓ |
| app-page.run...dev.js gzip | 157 kB | 157 kB | ✓ |
| app-page.run..prod.js gzip | 93 kB | 93 kB | ✓ |
| app-route-ex...dev.js gzip | 21.5 kB | 21.5 kB | ✓ |
| app-route-ex..prod.js gzip | 15.2 kB | 15.2 kB | ✓ |
| app-route-tu..prod.js gzip | 15.2 kB | 15.2 kB | ✓ |
| app-route-tu..prod.js gzip | 15 kB | 15 kB | ✓ |
| app-route.ru...dev.js gzip | 21.3 kB | 21.3 kB | ✓ |
| app-route.ru..prod.js gzip | 15 kB | 15 kB | ✓ |
| pages-api-tu..prod.js gzip | 9.55 kB | 9.55 kB | ✓ |
| pages-api.ru...dev.js gzip | 9.82 kB | 9.82 kB | ✓ |
| pages-api.ru..prod.js gzip | 9.55 kB | 9.55 kB | ✓ |
| pages-turbo...prod.js gzip | 21.5 kB | 21.5 kB | ✓ |
| pages.runtim...dev.js gzip | 22.1 kB | 22.1 kB | ✓ |
| pages.runtim..prod.js gzip | 21.5 kB | 21.5 kB | ✓ |
| server.runti..prod.js gzip | 51.6 kB | 51.6 kB | ✓ |
| Overall change | 593 kB | 593 kB | ✓ |
build cache
| vercel/next.js canary | vercel/next.js sebbie/no-hardcoded-react-alias | Change | |
|---|---|---|---|
| 0.pack gzip | 1.62 MB | 1.62 MB | N/A |
| index.pack gzip | 113 kB | 112 kB | N/A |
| Overall change | 0 B | 0 B | ✓ |
Diff details
Diff for edge-ssr.js
Diff too large to display
Diff for 1103-HASH.js
Diff too large to display
Diff for app-page-exp..ntime.dev.js
failed to diffDiff for app-page-exp..time.prod.js
Diff too large to display
Diff for app-page-tur..time.prod.js
Diff too large to display
This will be picked up by our
nextalias increateWebpackAliases. Any subsequent alias ofnext/*would be ignored e.g. aliasingnext/dist/compiled/reactto the react-server entrypoint.I also hope we don't actually need this since we're already aliasing
reacttonext/dist/compiled/reactin Webpack. At the same time we're not hardcodingnext/dist/compiled/react-dom. This split in behavior is really confusing.The alternate would be ensuring that our
nextalias becomes a fallback. Or list all the public entrypoints.Or remove it entirely: #65123
Closes NEXT-3248