Skip to content
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

Add support for static 404 when _error does not have custom GIP #11062

Merged
merged 3 commits into from Mar 14, 2020

Conversation

ijjk
Copy link
Member

@ijjk ijjk commented Mar 13, 2020

This updates the auto static 404 optimization to also create the static 404 page when a custom /_error page doesn't have custom getInitialProps similar to the check we do for _app's getInitialProps

@ijjk ijjk added this to the 9.3.1 milestone Mar 13, 2020
@ijjk
Copy link
Member Author

ijjk commented Mar 13, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
buildDuration 8.6s 8.6s ⚠️ +1ms
nodeModulesSize 56.6 MB 56.6 MB ⚠️ +1.32 kB
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js update/default-404 Change
main-HASH.js gzip 5.77 kB 5.77 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..8eb0.js gzip 9.78 kB 9.78 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 55.4 kB 55.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js update/default-404 Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js update/default-404 Change
polyfills-HASH.js gzip 26.2 kB 26.2 kB
Overall change 26.2 kB 26.2 kB
Client Pages Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.96 kB 2.97 kB ⚠️ +7 B
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 1.89 kB 1.89 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.38 kB 7.39 kB ⚠️ +7 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.06 kB 2.08 kB ⚠️ +14 B
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.26 kB 5.28 kB ⚠️ +14 B
Client Build Manifests
zeit/next.js canary ijjk/next.js update/default-404 Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary ijjk/next.js update/default-404 Change
index.html gzip 916 B 916 B
link.html gzip 925 B 925 B
withRouter.html gzip 913 B 913 B
Overall change 2.75 kB 2.75 kB

Diffs

Diff for _error.js
@@ -74,10 +74,20 @@ var statusCodes = {
   405: 'Method Not Allowed',
   500: 'Internal Server Error'
 };
+
+function _getInitialProps(_ref) {
+  var res = _ref.res,
+      err = _ref.err;
+  var statusCode = res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+  return {
+    statusCode: statusCode
+  };
+}
 /**
 * `Error` component used for handling errors.
 */
 
+
 var Error = /*#__PURE__*/function (_react$default$Compon) {
   _inherits(Error, _react$default$Compon);
 
@@ -106,16 +116,6 @@ var Error = /*#__PURE__*/function (_react$default$Compon) {
         style: styles.h2
       }, title, "."))));
     }
-  }], [{
-    key: "getInitialProps",
-    value: function getInitialProps(_ref) {
-      var res = _ref.res,
-          err = _ref.err;
-      var statusCode = res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
-      return {
-        statusCode: statusCode
-      };
-    }
   }]);
 
   return Error;
@@ -123,6 +123,8 @@ var Error = /*#__PURE__*/function (_react$default$Compon) {
 
 exports["default"] = Error;
 Error.displayName = 'ErrorPage';
+Error.getInitialProps = _getInitialProps;
+Error.origGetInitialProps = _getInitialProps;
 var styles = {
   error: {
     color: '#000',
Diff for _error.module.js
@@ -61,22 +61,23 @@ var statusCodes = {
   405: 'Method Not Allowed',
   500: 'Internal Server Error'
 };
+
+function _getInitialProps(_ref) {
+  var {
+    res,
+    err
+  } = _ref;
+  var statusCode = res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+  return {
+    statusCode
+  };
+}
 /**
 * `Error` component used for handling errors.
 */
 
-class Error extends _react.default.Component {
-  static getInitialProps(_ref) {
-    var {
-      res,
-      err
-    } = _ref;
-    var statusCode = res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
-    return {
-      statusCode
-    };
-  }
 
+class Error extends _react.default.Component {
   render() {
     var {
       statusCode
@@ -101,6 +102,8 @@ class Error extends _react.default.Component {
 
 exports.default = Error;
 Error.displayName = 'ErrorPage';
+Error.getInitialProps = _getInitialProps;
+Error.origGetInitialProps = _getInitialProps;
 var styles = {
   error: {
     color: '#000',

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
buildDuration 9.2s 9.5s ⚠️ +318ms
nodeModulesSize 56.6 MB 56.6 MB ⚠️ +1.32 kB
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js update/default-404 Change
main-HASH.js gzip 5.77 kB 5.77 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..8eb0.js gzip 9.78 kB 9.78 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 55.4 kB 55.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js update/default-404 Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js update/default-404 Change
polyfills-HASH.js gzip 26.2 kB 26.2 kB
Overall change 26.2 kB 26.2 kB
Client Pages Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.96 kB 2.97 kB ⚠️ +7 B
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 1.89 kB 1.89 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.38 kB 7.39 kB ⚠️ +7 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.06 kB 2.08 kB ⚠️ +14 B
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.26 kB 5.28 kB ⚠️ +14 B
Client Build Manifests
zeit/next.js canary ijjk/next.js update/default-404 Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall decrease ✓
zeit/next.js canary ijjk/next.js update/default-404 Change
_error.js gzip 293 kB 293 kB -37 B
404.html gzip 1.32 kB N/A N/A
hooks.html gzip 957 B 957 B
index.js gzip 293 kB 293 kB ⚠️ +497 B
link.js gzip 301 kB 301 kB ⚠️ +442 B
routerDirect.js gzip 300 kB 300 kB ⚠️ +217 B
withRouter.js gzip 300 kB 300 kB -333 B
Overall change 1.49 MB 1.49 MB -534 B

@ijjk

This comment has been minimized.

@ijjk
Copy link
Member Author

ijjk commented Mar 13, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
buildDuration 9.8s 9.5s -235ms
nodeModulesSize 56.6 MB 56.6 MB ⚠️ +1.32 kB
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js update/default-404 Change
main-HASH.js gzip 5.77 kB 5.77 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..8eb0.js gzip 9.78 kB 9.78 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 55.4 kB 55.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js update/default-404 Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js update/default-404 Change
polyfills-HASH.js gzip 26.2 kB 26.2 kB
Overall change 26.2 kB 26.2 kB
Client Pages Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.96 kB 2.97 kB ⚠️ +7 B
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 1.89 kB 1.89 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.38 kB 7.39 kB ⚠️ +7 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.06 kB 2.08 kB ⚠️ +14 B
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.26 kB 5.28 kB ⚠️ +14 B
Client Build Manifests
zeit/next.js canary ijjk/next.js update/default-404 Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary ijjk/next.js update/default-404 Change
index.html gzip 916 B 916 B
link.html gzip 925 B 925 B
withRouter.html gzip 913 B 913 B
Overall change 2.75 kB 2.75 kB

Diffs

Diff for _error.js
@@ -74,10 +74,20 @@ var statusCodes = {
   405: 'Method Not Allowed',
   500: 'Internal Server Error'
 };
+
+function _getInitialProps(_ref) {
+  var res = _ref.res,
+      err = _ref.err;
+  var statusCode = res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+  return {
+    statusCode: statusCode
+  };
+}
 /**
 * `Error` component used for handling errors.
 */
 
+
 var Error = /*#__PURE__*/function (_react$default$Compon) {
   _inherits(Error, _react$default$Compon);
 
@@ -106,16 +116,6 @@ var Error = /*#__PURE__*/function (_react$default$Compon) {
         style: styles.h2
       }, title, "."))));
     }
-  }], [{
-    key: "getInitialProps",
-    value: function getInitialProps(_ref) {
-      var res = _ref.res,
-          err = _ref.err;
-      var statusCode = res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
-      return {
-        statusCode: statusCode
-      };
-    }
   }]);
 
   return Error;
@@ -123,6 +123,8 @@ var Error = /*#__PURE__*/function (_react$default$Compon) {
 
 exports["default"] = Error;
 Error.displayName = 'ErrorPage';
+Error.getInitialProps = _getInitialProps;
+Error.origGetInitialProps = _getInitialProps;
 var styles = {
   error: {
     color: '#000',
Diff for _error.module.js
@@ -61,22 +61,23 @@ var statusCodes = {
   405: 'Method Not Allowed',
   500: 'Internal Server Error'
 };
+
+function _getInitialProps(_ref) {
+  var {
+    res,
+    err
+  } = _ref;
+  var statusCode = res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+  return {
+    statusCode
+  };
+}
 /**
 * `Error` component used for handling errors.
 */
 
-class Error extends _react.default.Component {
-  static getInitialProps(_ref) {
-    var {
-      res,
-      err
-    } = _ref;
-    var statusCode = res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
-    return {
-      statusCode
-    };
-  }
 
+class Error extends _react.default.Component {
   render() {
     var {
       statusCode
@@ -101,6 +102,8 @@ class Error extends _react.default.Component {
 
 exports.default = Error;
 Error.displayName = 'ErrorPage';
+Error.getInitialProps = _getInitialProps;
+Error.origGetInitialProps = _getInitialProps;
 var styles = {
   error: {
     color: '#000',

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
buildDuration 10.6s 10.1s -491ms
nodeModulesSize 56.6 MB 56.6 MB ⚠️ +1.32 kB
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js update/default-404 Change
main-HASH.js gzip 5.77 kB 5.77 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..8eb0.js gzip 9.78 kB 9.78 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 55.4 kB 55.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js update/default-404 Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js update/default-404 Change
polyfills-HASH.js gzip 26.2 kB 26.2 kB
Overall change 26.2 kB 26.2 kB
Client Pages Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.96 kB 2.97 kB ⚠️ +7 B
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 1.89 kB 1.89 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.38 kB 7.39 kB ⚠️ +7 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary ijjk/next.js update/default-404 Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.06 kB 2.08 kB ⚠️ +14 B
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.26 kB 5.28 kB ⚠️ +14 B
Client Build Manifests
zeit/next.js canary ijjk/next.js update/default-404 Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall decrease ✓
zeit/next.js canary ijjk/next.js update/default-404 Change
_error.js gzip 293 kB 293 kB -131 B
404.html gzip 1.32 kB 1.32 kB
hooks.html gzip 957 B 957 B
index.js gzip 293 kB 293 kB -436 B
link.js gzip 301 kB 301 kB -138 B
routerDirect.js gzip 300 kB 299 kB -530 B
withRouter.js gzip 300 kB 300 kB ⚠️ +197 B
Overall change 1.49 MB 1.49 MB -1.04 kB

@timneutkens timneutkens merged commit 71f9719 into vercel:canary Mar 14, 2020
@timneutkens timneutkens deleted the update/default-404 branch March 14, 2020 08:58
chibicode added a commit to chibicode/next.js that referenced this pull request Mar 16, 2020
* canary: (47 commits)
  v9.3.1-canary.5
  Update @next/bundle-analyzer dependencies (vercel#11068)
  Update preset.ts: Remove any and use updated Node.js types (vercel#11075)
  Upgrade styled-jsx (vercel#11070)
  Update ssr-caching example with getServerSideProps (vercel#11032)
  Add support for static 404 when _error does not have custom GIP (vercel#11062)
  update form handler example (vercel#11059)
  Update with-loading example to SSG (vercel#11050)
  Upgrade next.js version on datocms example (vercel#11039)
  Update custom-server-express example with getServerSideProps  (vercel#11035)
  Use getServerSideProps (vercel#11057)
  v9.3.1-canary.4
  Updated analyze-bundles example (vercel#11031)
  Update custom-server-fastify example to not use internal fn (vercel#11040)
  Correct Cache-Control Behavior for GS(S)P (vercel#11022)
  Update next-sass example to use built-in sass support (vercel#11015)
  Update with-zeit-fetch example to use SSG (vercel#11026)
  Update amp-first example to use GSSP (vercel#11028)
  Fix Test for Windows
  feat: update api-routes example to SSG (vercel#11019)
  ...
@vercel vercel locked as resolved and limited conversation to collaborators Jan 31, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants