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 rewriting non-fallback SSG pages #11010

Merged
merged 7 commits into from
May 29, 2020

Conversation

ijjk
Copy link
Member

@ijjk ijjk commented Mar 12, 2020

Since non-fallback pages don't rely on the URL for hydration we can allow them to be rewritten to but pages with fallback still can't be rewritten to because we won't be able to parse the correct /_next/data path to request the page's data from. I added a test for this behavior and ensured it works correctly on Now.

Example on with fallback false rewrite on Now:
https://tst-rewrite-cp9vge4bg.now.sh/about

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

ijjk commented Mar 12, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js ssg/rewrite Change
buildDuration 10.1s 10.1s -24ms
nodeModulesSize 56.6 MB 56.6 MB ⚠️ +566 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js ssg/rewrite Change
main-HASH.js gzip 5.77 kB 5.77 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..cfaa.js gzip 9.77 kB 9.77 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 ssg/rewrite 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 ssg/rewrite Change
polyfills-HASH.js gzip 26.2 kB 26.2 kB
Overall change 26.2 kB 26.2 kB
Client Pages
zeit/next.js canary ijjk/next.js ssg/rewrite Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.96 kB 2.96 kB
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.38 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js ssg/rewrite Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.06 kB 2.06 kB
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.26 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js ssg/rewrite 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 ssg/rewrite Change
index.html gzip 914 B 914 B
link.html gzip 922 B 922 B
withRouter.html gzip 910 B 910 B
Overall change 2.75 kB 2.75 kB

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js ssg/rewrite Change
buildDuration 10.8s 10.7s -66ms
nodeModulesSize 56.6 MB 56.6 MB ⚠️ +566 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js ssg/rewrite Change
main-HASH.js gzip 5.77 kB 5.77 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..cfaa.js gzip 9.77 kB 9.77 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 ssg/rewrite 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 ssg/rewrite Change
polyfills-HASH.js gzip 26.2 kB 26.2 kB
Overall change 26.2 kB 26.2 kB
Client Pages
zeit/next.js canary ijjk/next.js ssg/rewrite Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.96 kB 2.96 kB
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.38 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js ssg/rewrite Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.06 kB 2.06 kB
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.26 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js ssg/rewrite 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 ssg/rewrite Change
_error.js gzip 294 kB 293 kB -788 B
404.html gzip 1.32 kB 1.32 kB
hooks.html gzip 954 B 954 B
index.js gzip 294 kB 293 kB -823 B
link.js gzip 301 kB 301 kB ⚠️ +807 B
routerDirect.js gzip 300 kB 300 kB -116 B
withRouter.js gzip 299 kB 299 kB -6 B
Overall change 1.49 MB 1.49 MB -926 B

@Timer Timer modified the milestones: 9.3.1, 9.3.2 Mar 13, 2020
@Timer Timer modified the milestones: 9.3.2, 9.3.3, 9.3.4 Mar 27, 2020
@Timer Timer modified the milestones: 9.3.4, 9.3.5 Apr 3, 2020
@Timer Timer modified the milestones: 9.3.5, 9.3.6 Apr 15, 2020
@Timer Timer modified the milestones: 9.3.6, 9.3.x Apr 28, 2020
ijjk added 2 commits May 4, 2020 12:42
# Conflicts:
#	packages/next/next-server/server/next-server.ts
#	test/integration/prerender/test/index.test.js
@Timer Timer self-assigned this May 23, 2020
Copy link
Member

@Timer Timer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please fix merge conflicts.

ijjk added 2 commits May 29, 2020 09:43
# Conflicts:
#	packages/next/next-server/server/next-server.ts
#	test/integration/prerender/test/index.test.js
@ijjk ijjk requested a review from Timer May 29, 2020 14:54
Copy link
Member

@Timer Timer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Timer Timer removed this from the 9.4.x milestone May 29, 2020
@Timer Timer added this to the 9.4.5 milestone May 29, 2020
@kodiakhq kodiakhq bot merged commit ae3c388 into vercel:canary May 29, 2020
@timneutkens timneutkens deleted the ssg/rewrite branch May 29, 2020 17:30
rokinsky pushed a commit to rokinsky/next.js that referenced this pull request Jul 11, 2020
Since non-fallback pages don't rely on the URL for hydration we can allow them to be rewritten to but pages with fallback still can't be rewritten to because we won't be able to parse the correct `/_next/data` path to request the page's data from. I added a test for this behavior and ensured it works correctly on Now.

Example on with fallback false rewrite on Now:
https://tst-rewrite-cp9vge4bg.now.sh/about
@vercel vercel locked as resolved and limited conversation to collaborators Jan 30, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants