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

Ensure hybrid AMP works correctly with SSG #11205

Merged
merged 2 commits into from
Mar 20, 2020

Conversation

ijjk
Copy link
Member

@ijjk ijjk commented Mar 19, 2020

As noticed by #11188 when using hybrid AMP and SSG the AMP version of a page was not being honored when the amp=1 query is present. This corrects the behavior and adds tests for AMP with SSG

@ijjk ijjk added the Type: Bug label Mar 19, 2020
@ijjk ijjk added this to the 9.3.x milestone Mar 19, 2020
@ijjk
Copy link
Member Author

ijjk commented Mar 19, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
buildDuration 9.2s 9.4s ⚠️ +195ms
nodeModulesSize 53.2 MB 53.2 MB ⚠️ +296 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js ssg-hybrid-amp 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 ssg-hybrid-amp 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-hybrid-amp Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.97 kB 2.97 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.39 kB 7.39 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.08 kB 2.08 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.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js ssg-hybrid-amp 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-hybrid-amp Change
index.html gzip 916 B 916 B
link.html gzip 924 B 924 B
withRouter.html gzip 913 B 913 B
Overall change 2.75 kB 2.75 kB

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
buildDuration 10.3s 10.3s -47ms
nodeModulesSize 53.2 MB 53.2 MB ⚠️ +296 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js ssg-hybrid-amp 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 ssg-hybrid-amp 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-hybrid-amp Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.97 kB 2.97 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.39 kB 7.39 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.08 kB 2.08 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.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js ssg-hybrid-amp 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 increase ⚠️
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
_error.js gzip 294 kB 294 kB -451 B
404.html gzip 1.32 kB 1.32 kB
hooks.html gzip 957 B 957 B
index.js gzip 293 kB 294 kB ⚠️ +786 B
link.js gzip 301 kB 301 kB ⚠️ +8 B
routerDirect.js gzip 300 kB 300 kB ⚠️ +48 B
withRouter.js gzip 299 kB 299 kB ⚠️ +49 B
Overall change 1.49 MB 1.49 MB ⚠️ +440 B

@ijjk

This comment has been minimized.

@ijjk
Copy link
Member Author

ijjk commented Mar 19, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
buildDuration 10.6s 10.5s -131ms
nodeModulesSize 53.2 MB 53.2 MB ⚠️ +454 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js ssg-hybrid-amp 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 ssg-hybrid-amp 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-hybrid-amp Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.97 kB 2.97 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.39 kB 7.39 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.08 kB 2.08 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.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js ssg-hybrid-amp 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-hybrid-amp Change
index.html gzip 916 B 916 B
link.html gzip 924 B 924 B
withRouter.html gzip 913 B 913 B
Overall change 2.75 kB 2.75 kB

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
buildDuration 11.5s 11.3s -218ms
nodeModulesSize 53.2 MB 53.2 MB ⚠️ +454 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js ssg-hybrid-amp 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 ssg-hybrid-amp 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-hybrid-amp Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.97 kB 2.97 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.39 kB 7.39 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.08 kB 2.08 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.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js ssg-hybrid-amp 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 increase ⚠️
zeit/next.js canary ijjk/next.js ssg-hybrid-amp Change
_error.js gzip 294 kB 294 kB ⚠️ +532 B
404.html gzip 1.32 kB 1.32 kB
hooks.html gzip 957 B 957 B
index.js gzip 293 kB 293 kB ⚠️ +107 B
link.js gzip 301 kB 301 kB ⚠️ +173 B
routerDirect.js gzip 300 kB 300 kB ⚠️ +143 B
withRouter.js gzip 300 kB 300 kB ⚠️ +10 B
Overall change 1.49 MB 1.49 MB ⚠️ +965 B

@timneutkens timneutkens merged commit c14d983 into vercel:canary Mar 20, 2020
@timneutkens timneutkens deleted the ssg-hybrid-amp branch March 20, 2020 08:46
@MickCoelho
Copy link

MickCoelho commented Mar 24, 2020

Appreciate the effort, but it seems like the next export function doesn't export an AMP version of the page (if set to hybrid and uses getStaticProps):

import { useAmp } from 'next/amp'
export const config = { amp: 'hybrid' };
export async function getStaticProps() {
  return {
    props: {
    },
  }
}
export default function Index() {
  return (
    <div>
      <p>Hello Next.js</p>
    </div>
  );
}

@ijjk
Copy link
Member Author

ijjk commented Mar 24, 2020

@MickCoelho this was to solve AMP mode not being honor with getStaticProps and next start as the original thread didn't also mention next export. This can be updated in a separate PR.

Note: getStaticProps already creates the static versions of pages during next build so as long as you're using a host that handles the output of next build properly like ZEIT next export should no longer also be needed to achieve a static site

@MickCoelho
Copy link

@MickCoelho this was to solve AMP mode not being honor with getStaticProps and next start as the original thread didn't also mention next export. This can be updated in a separate PR.

Note: getStaticProps already creates the static versions of pages during next build so as long as you're using a host that handles the output of next build properly like ZEIT next export should no longer also be needed to achieve a static site

Thanks for the explanation, I just logged a proper issue #11332

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.

4 participants