-
Notifications
You must be signed in to change notification settings - Fork 27k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Custom app for switchable runtime #35666
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
fix body render fix loader cjs handling manipulate _app for build and output remove logs and add check for pages manifest plugin fix _app.server resolving revert test
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
┌ /_app | ||
├ /_app.server |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think we should output _app
and _app.server
since they're not pages.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The /_app
was always exported if there's custom app there, but we don't give them prefix. So I made _app.server followed it
...ration/react-streaming-and-server-components/switchable-runtime/pages/node-rsc-isr.server.js
Outdated
Show resolved
Hide resolved
test/integration/react-streaming-and-server-components/test/switchable-runtime.test.js
Outdated
Show resolved
Hide resolved
packages/next/build/webpack/loaders/next-middleware-ssr-loader/index.ts
Outdated
Show resolved
Hide resolved
Failing test suitesCommit: a972952
Expand output● AMP Usage › AMP dev mode › should detect the changes and display it
● AMP Usage › AMP dev mode › should not reload unless the page is edited for an AMP page
Read more about building and testing Next.js in contributing.md. |
This comment has been minimized.
This comment has been minimized.
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
buildDuration | 18.9s | 18.6s | -283ms |
buildDurationCached | 7.3s | 7.1s | -208ms |
nodeModulesSize | 477 MB | 477 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 3.761 | 3.715 | -0.05 |
/ avg req/sec | 664.78 | 672.92 | +8.14 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.702 | 1.7 | 0 |
/error-in-render avg req/sec | 1468.86 | 1470.37 | +1.51 |
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
925.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42 kB | 42 kB | ✓ |
main-HASH.js gzip | 28.4 kB | 28.5 kB | |
webpack-HASH.js gzip | 1.44 kB | 1.44 kB | ✓ |
Overall change | 72.1 kB | 72.1 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.36 kB | 1.36 kB | ✓ |
_error-HASH.js gzip | 192 B | 192 B | ✓ |
amp-HASH.js gzip | 309 B | 309 B | ✓ |
css-HASH.js gzip | 327 B | 327 B | ✓ |
dynamic-HASH.js gzip | 3.05 kB | 3.05 kB | ✓ |
head-HASH.js gzip | 351 B | 351 B | ✓ |
hooks-HASH.js gzip | 920 B | 920 B | ✓ |
image-HASH.js gzip | 5.52 kB | 5.52 kB | ✓ |
index-HASH.js gzip | 263 B | 263 B | ✓ |
link-HASH.js gzip | 2.32 kB | 2.32 kB | ✓ |
routerDirect..HASH.js gzip | 320 B | 320 B | ✓ |
script-HASH.js gzip | 387 B | 387 B | ✓ |
withRouter-HASH.js gzip | 319 B | 319 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 15.7 kB | 15.7 kB | ✓ |
Client Build Manifests
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
_buildManifest.js gzip | 460 B | 460 B | ✓ |
Overall change | 460 B | 460 B | ✓ |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
index.html gzip | 532 B | 532 B | ✓ |
link.html gzip | 545 B | 545 B | ✓ |
withRouter.html gzip | 525 B | 526 B | |
Overall change | 1.6 kB | 1.6 kB |
Diffs
Diff for main-HASH.js
@@ -643,7 +643,7 @@
var webpackHMR;
var CachedApp, onPerfEntry;
var CachedComponent;
- var isAppRSC;
+ var isRSCPage;
var Container = /*#__PURE__*/ (function(_Component) {
_inherits(Container, _Component);
var _super = _createSuper(Container);
@@ -868,7 +868,6 @@
(app = appEntrypoint.component),
(mod = appEntrypoint.exports);
CachedApp = app;
- isAppRSC = !!mod.__next_rsc__;
exportedReportWebVitals = mod && mod.reportWebVitals;
onPerfEntry = function(param) {
var id = param.id,
@@ -909,30 +908,31 @@
// error, so we need to skip waiting for the entrypoint.
true
) {
- _ctx.next = 16;
+ _ctx.next = 15;
break;
}
_ctx.t0 = {
error: initialData.err
};
- _ctx.next = 19;
- break;
- case 16:
_ctx.next = 18;
+ break;
+ case 15:
+ _ctx.next = 17;
return pageLoader.routeLoader.whenEntrypoint(
initialData.page
);
- case 18:
+ case 17:
_ctx.t0 = _ctx.sent;
- case 19:
+ case 18:
pageEntrypoint = _ctx.t0;
if (!("error" in pageEntrypoint)) {
- _ctx.next = 22;
+ _ctx.next = 21;
break;
}
throw pageEntrypoint.error;
- case 22:
+ case 21:
CachedComponent = pageEntrypoint.component;
+ isRSCPage = !!pageEntrypoint.exports.__next_rsc__;
if (true) {
_ctx.next = 27;
break;
Diff for index.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-29d269f0411823e2.js"
+ src="/_next/static/chunks/main-b9430164b0f7c068.js"
defer=""
></script>
<script
Diff for link.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-29d269f0411823e2.js"
+ src="/_next/static/chunks/main-b9430164b0f7c068.js"
defer=""
></script>
<script
Diff for withRouter.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-29d269f0411823e2.js"
+ src="/_next/static/chunks/main-b9430164b0f7c068.js"
defer=""
></script>
<script
Default Build with SWC (Increase detected ⚠️ )
General Overall increase ⚠️
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
buildDuration | 21.7s | 21.4s | -284ms |
buildDurationCached | 7.5s | 6.9s | -507ms |
nodeModulesSize | 477 MB | 477 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 3.767 | 3.784 | |
/ avg req/sec | 663.64 | 660.62 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.707 | 1.693 | -0.01 |
/error-in-render avg req/sec | 1464.24 | 1477.05 | +12.81 |
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
925.HASH.js gzip | 178 B | 178 B | ✓ |
framework-HASH.js gzip | 42.3 kB | 42.3 kB | ✓ |
main-HASH.js gzip | 28.8 kB | 28.8 kB | |
webpack-HASH.js gzip | 1.45 kB | 1.45 kB | ✓ |
Overall change | 72.7 kB | 72.7 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.35 kB | 1.35 kB | ✓ |
_error-HASH.js gzip | 179 B | 179 B | ✓ |
amp-HASH.js gzip | 313 B | 313 B | ✓ |
css-HASH.js gzip | 325 B | 325 B | ✓ |
dynamic-HASH.js gzip | 3.03 kB | 3.03 kB | ✓ |
head-HASH.js gzip | 351 B | 351 B | ✓ |
hooks-HASH.js gzip | 921 B | 921 B | ✓ |
image-HASH.js gzip | 5.63 kB | 5.63 kB | ✓ |
index-HASH.js gzip | 261 B | 261 B | ✓ |
link-HASH.js gzip | 2.38 kB | 2.38 kB | ✓ |
routerDirect..HASH.js gzip | 322 B | 322 B | ✓ |
script-HASH.js gzip | 388 B | 388 B | ✓ |
withRouter-HASH.js gzip | 317 B | 317 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 15.9 kB | 15.9 kB | ✓ |
Client Build Manifests
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
_buildManifest.js gzip | 460 B | 460 B | ✓ |
Overall change | 460 B | 460 B | ✓ |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | huozhi/next.js switchable-app | Change | |
---|---|---|---|
index.html gzip | 531 B | 531 B | ✓ |
link.html gzip | 544 B | 544 B | ✓ |
withRouter.html gzip | 526 B | 527 B | |
Overall change | 1.6 kB | 1.6 kB |
Diffs
Diff for main-HASH.js
@@ -643,7 +643,7 @@
var webpackHMR;
var CachedApp, onPerfEntry;
var CachedComponent;
- var isAppRSC;
+ var isRSCPage;
var Container = /*#__PURE__*/ (function(_Component) {
_inherits(Container, _Component);
var _super = _createSuper(Container);
@@ -868,7 +868,6 @@
(app = appEntrypoint.component),
(mod = appEntrypoint.exports);
CachedApp = app;
- isAppRSC = !!mod.__next_rsc__;
exportedReportWebVitals = mod && mod.reportWebVitals;
onPerfEntry = function(param) {
var id = param.id,
@@ -909,30 +908,31 @@
// error, so we need to skip waiting for the entrypoint.
true
) {
- _ctx.next = 16;
+ _ctx.next = 15;
break;
}
_ctx.t0 = {
error: initialData.err
};
- _ctx.next = 19;
- break;
- case 16:
_ctx.next = 18;
+ break;
+ case 15:
+ _ctx.next = 17;
return pageLoader.routeLoader.whenEntrypoint(
initialData.page
);
- case 18:
+ case 17:
_ctx.t0 = _ctx.sent;
- case 19:
+ case 18:
pageEntrypoint = _ctx.t0;
if (!("error" in pageEntrypoint)) {
- _ctx.next = 22;
+ _ctx.next = 21;
break;
}
throw pageEntrypoint.error;
- case 22:
+ case 21:
CachedComponent = pageEntrypoint.component;
+ isRSCPage = !!pageEntrypoint.exports.__next_rsc__;
if (true) {
_ctx.next = 27;
break;
Diff for index.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-29d269f0411823e2.js"
+ src="/_next/static/chunks/main-b9430164b0f7c068.js"
defer=""
></script>
<script
Diff for link.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-29d269f0411823e2.js"
+ src="/_next/static/chunks/main-b9430164b0f7c068.js"
defer=""
></script>
<script
Diff for withRouter.html
@@ -19,7 +19,7 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-29d269f0411823e2.js"
+ src="/_next/static/chunks/main-b9430164b0f7c068.js"
defer=""
></script>
<script
x-ref: #33149
RFCs:
pages/_app
components with Server Components #30996Feature
fixes #number
contributing.md