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 example: with-firebase-authentication-serverless #10078

Merged
merged 25 commits into from Jan 20, 2020

Conversation

kmjennison
Copy link
Contributor

Closes #8672

@ijjk
Copy link
Member

ijjk commented Jan 14, 2020

Stats from current PR

Default Server Mode
General
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
buildDuration 13.6s 13.3s -269ms
nodeModulesSize 49 MB 49 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..9881.js gzip 13.7 kB 13.7 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.5 kB 67.5 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.module.js gzip 4.18 kB 4.18 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 12.5 kB 12.5 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62.1 kB 62.1 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.87 kB
Client Pages Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.41 kB 7.41 kB
Client Build Manifests
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless 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 kmjennison/next.js kevin/with-firebase-auth-serverless Change
index.html gzip 1.02 kB 1.02 kB
link.html gzip 1.03 kB 1.03 kB
withRouter.html gzip 1.01 kB 1.01 kB
Overall change 3.06 kB 3.06 kB

Serverless Mode
General
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
buildDuration 14.2s 14.6s ⚠️ +348ms
nodeModulesSize 49 MB 49 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..9881.js gzip 13.7 kB 13.7 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.5 kB 67.5 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.module.js gzip 4.18 kB 4.18 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 12.5 kB 12.5 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62.1 kB 62.1 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.87 kB
Client Pages Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.41 kB 7.41 kB
Client Build Manifests
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_error.js gzip 77.8 kB 77.8 kB
hooks.html gzip 1.05 kB 1.05 kB
index.js gzip 78 kB 78 kB
link.js gzip 80.4 kB 80.4 kB
routerDirect.js gzip 78.1 kB 78.1 kB
withRouter.js gzip 78.1 kB 78.1 kB
Overall change 393 kB 393 kB

Commit: 6adba2a

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.

Thanks for the PR!

@Timer Timer added the examples Issue/PR related to examples label Jan 14, 2020
@ijjk
Copy link
Member

ijjk commented Jan 17, 2020

Stats from current PR

Default Server Mode
General
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
buildDuration 12.1s 12.1s ⚠️ +32ms
nodeModulesSize 48.9 MB 48.9 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..8249.js gzip 13.7 kB 13.7 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.5 kB 67.5 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.module.js gzip 4.17 kB 4.17 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 12.5 kB 12.5 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62.1 kB 62.1 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.js gzip 1.34 kB 1.34 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.87 kB
Client Pages Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.module.js gzip 769 B 769 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.42 kB 7.42 kB
Client Build Manifests
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless 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 kmjennison/next.js kevin/with-firebase-auth-serverless Change
index.html gzip 1.02 kB 1.02 kB
link.html gzip 1.03 kB 1.03 kB
withRouter.html gzip 1.02 kB 1.02 kB
Overall change 3.08 kB 3.08 kB

Serverless Mode
General
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
buildDuration 13s 12.7s -300ms
nodeModulesSize 48.9 MB 48.9 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..8249.js gzip 13.7 kB 13.7 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.5 kB 67.5 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.module.js gzip 4.17 kB 4.17 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 12.5 kB 12.5 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62.1 kB 62.1 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.js gzip 1.34 kB 1.34 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.87 kB
Client Pages Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.module.js gzip 769 B 769 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.42 kB 7.42 kB
Client Build Manifests
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_error.js gzip 70.9 kB 70.9 kB
hooks.html gzip 1.06 kB 1.06 kB
index.js gzip 71.3 kB 71.3 kB
link.js gzip 80.6 kB 80.6 kB
routerDirect.js gzip 78.2 kB 78.2 kB
withRouter.js gzip 78.3 kB 78.3 kB
Overall change 380 kB 380 kB

Commit: c6de50a

@ijjk
Copy link
Member

ijjk commented Jan 17, 2020

Stats from current PR

Default Server Mode
General
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
buildDuration 12.8s 12.8s -21ms
nodeModulesSize 48.9 MB 48.9 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..8249.js gzip 13.7 kB 13.7 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.5 kB 67.5 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.module.js gzip 4.17 kB 4.17 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 12.5 kB 12.5 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62.1 kB 62.1 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.js gzip 1.34 kB 1.34 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.87 kB
Client Pages Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.module.js gzip 769 B 769 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.42 kB 7.42 kB
Client Build Manifests
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless 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 kmjennison/next.js kevin/with-firebase-auth-serverless Change
index.html gzip 1.02 kB 1.02 kB
link.html gzip 1.03 kB 1.03 kB
withRouter.html gzip 1.02 kB 1.02 kB
Overall change 3.08 kB 3.08 kB

Serverless Mode
General
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
buildDuration 13.3s 13.4s ⚠️ +141ms
nodeModulesSize 48.9 MB 48.9 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..8249.js gzip 13.7 kB 13.7 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.5 kB 67.5 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
main-HASH.module.js gzip 4.17 kB 4.17 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 12.5 kB 12.5 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62.1 kB 62.1 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.js gzip 1.34 kB 1.34 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.87 kB
Client Pages Modern
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_app.module.js gzip 769 B 769 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.42 kB 7.42 kB
Client Build Manifests
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles
zeit/next.js canary kmjennison/next.js kevin/with-firebase-auth-serverless Change
_error.js gzip 70.9 kB 70.9 kB
hooks.html gzip 1.06 kB 1.06 kB
index.js gzip 71.3 kB 71.3 kB
link.js gzip 80.6 kB 80.6 kB
routerDirect.js gzip 78.2 kB 78.2 kB
withRouter.js gzip 78.3 kB 78.3 kB
Overall change 380 kB 380 kB

Commit: 1a9cd04

@kmjennison kmjennison requested a review from Timer January 17, 2020 22:26
@Timer Timer added this to the 9.2.1 milestone Jan 20, 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.

Looks good to me, thanks!

@ivawzh
Copy link

ivawzh commented Jun 3, 2020

@kmjennison thanks for answering my question about adapting getServerSideProps at #8672 (comment)

After I tried your suggestion and switching to getServerSideProps, I get the error Error: You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.. I guess that's because _document is using getInitalProps

CustomDocument.getInitialProps = async (ctx) => {

However, I am planning to use both getServerSideProps and getInitialProps on different pages. Because some pages require fetching from my backend, the others will fetch from 3rd party directly (without going through my backend if running on client-side) meanwhile supporting SSR.

Do you have experience supporting getServerSideProps meanwhile using Firebase Auth, and occasionally use getServerSideProps or getInitialProps?

@kmjennison
Copy link
Contributor Author

@ivawzh The customization to _document.js above serves to keep the auth state in the HTML so that it's accessible after client-side navigation. With getServerSideProps, I think you can just eliminate the custom _document.js because data fetching won't happen on the client.

If other static pages (that fetch data on the client-side only) need access to the auth state, they can get the auth state from the Firebase JS SDK.

I haven't thought much about this because I haven't upgraded to Next.js v9.4, so take my suggestions with a grain of salt. Hope this helps!

@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.
Labels
examples Issue/PR related to examples
Projects
None yet
Development

Successfully merging this pull request may close these issues.

with-firebase-authentication in serverless environment
4 participants