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

Make apollo HOC composable #10422

Merged
merged 1 commit into from Feb 5, 2020
Merged

Conversation

pex
Copy link
Contributor

@pex pex commented Feb 4, 2020

  • Wraps config in higher-order function

Benefit

Composing HOCs is a common pattern and actually recommended by the React team. In order to be still able to configure withApollo for Next.js-specific options like SSR, this PR wraps the higher-order component in a higher-order function to define these options.

An example with compose from Recompose:

compose(
  withApollo({ ssr: false }),
  withGlitter
)(MyPage)

@pex pex requested review from lfades and Timer as code owners February 4, 2020 23:02
@ijjk
Copy link
Member

ijjk commented Feb 4, 2020

Stats from current PR

Default Server Mode
General
zeit/next.js canary pex/next.js feature/composable-apollo Change
buildDuration 12s 12s -73ms
nodeModulesSize 52.6 MB 52.6 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary pex/next.js feature/composable-apollo Change
main-HASH.js gzip 5.12 kB 5.12 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..c4ea.js gzip 13.6 kB 13.6 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.4 kB 67.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary pex/next.js feature/composable-apollo Change
main-HASH.module.js gzip 4.12 kB 4.12 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.4 kB 12.4 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62 kB 62 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary pex/next.js feature/composable-apollo 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 pex/next.js feature/composable-apollo Change
_app.js gzip 1.15 kB 1.15 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.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary pex/next.js feature/composable-apollo Change
_app.module.js gzip 576 B 576 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.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary pex/next.js feature/composable-apollo 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 pex/next.js feature/composable-apollo 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 pex/next.js feature/composable-apollo Change
buildDuration 12.5s 12.4s -146ms
nodeModulesSize 52.6 MB 52.6 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary pex/next.js feature/composable-apollo Change
main-HASH.js gzip 5.12 kB 5.12 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..c4ea.js gzip 13.6 kB 13.6 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.4 kB 67.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary pex/next.js feature/composable-apollo Change
main-HASH.module.js gzip 4.12 kB 4.12 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.4 kB 12.4 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62 kB 62 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary pex/next.js feature/composable-apollo 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 pex/next.js feature/composable-apollo Change
_app.js gzip 1.15 kB 1.15 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.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary pex/next.js feature/composable-apollo Change
_app.module.js gzip 576 B 576 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.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary pex/next.js feature/composable-apollo 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 pex/next.js feature/composable-apollo Change
_error.js gzip 46.4 kB 46.4 kB
404.html gzip 1.43 kB 1.43 kB
hooks.html gzip 1.06 kB 1.06 kB
index.js gzip 46.5 kB 46.5 kB
link.js gzip 72 kB 72 kB
routerDirect.js gzip 70.3 kB 70.3 kB
withRouter.js gzip 70.1 kB 70.1 kB
Overall change 308 kB 308 kB

Commit: f6a5808

* Wraps config in higher-order function
@pex pex force-pushed the feature/composable-apollo branch from f6a5808 to e0fd333 Compare February 5, 2020 07:33
@ijjk
Copy link
Member

ijjk commented Feb 5, 2020

Stats from current PR

Default Server Mode
General
zeit/next.js canary pex/next.js feature/composable-apollo Change
buildDuration 12.1s 12.2s ⚠️ +85ms
nodeModulesSize 52.6 MB 52.6 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary pex/next.js feature/composable-apollo Change
main-HASH.js gzip 5.12 kB 5.12 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..c4ea.js gzip 13.6 kB 13.6 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.4 kB 67.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary pex/next.js feature/composable-apollo Change
main-HASH.module.js gzip 4.12 kB 4.12 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.4 kB 12.4 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62 kB 62 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary pex/next.js feature/composable-apollo 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 pex/next.js feature/composable-apollo Change
_app.js gzip 1.15 kB 1.15 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.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary pex/next.js feature/composable-apollo Change
_app.module.js gzip 576 B 576 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.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary pex/next.js feature/composable-apollo 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 pex/next.js feature/composable-apollo 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 pex/next.js feature/composable-apollo Change
buildDuration 12.9s 12.6s -276ms
nodeModulesSize 52.6 MB 52.6 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary pex/next.js feature/composable-apollo Change
main-HASH.js gzip 5.12 kB 5.12 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..c4ea.js gzip 13.6 kB 13.6 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.4 kB 67.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary pex/next.js feature/composable-apollo Change
main-HASH.module.js gzip 4.12 kB 4.12 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.4 kB 12.4 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62 kB 62 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary pex/next.js feature/composable-apollo 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 pex/next.js feature/composable-apollo Change
_app.js gzip 1.15 kB 1.15 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.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary pex/next.js feature/composable-apollo Change
_app.module.js gzip 576 B 576 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.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary pex/next.js feature/composable-apollo 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 pex/next.js feature/composable-apollo Change
_error.js gzip 46.5 kB 46.5 kB
404.html gzip 1.43 kB 1.43 kB
hooks.html gzip 1.06 kB 1.06 kB
index.js gzip 46.5 kB 46.5 kB
link.js gzip 72 kB 72 kB
routerDirect.js gzip 70.3 kB 70.3 kB
withRouter.js gzip 70.1 kB 70.1 kB
Overall change 308 kB 308 kB

Commit: e0fd333

@timneutkens timneutkens merged commit c8e5f92 into vercel:canary Feb 5, 2020
chibicode pushed a commit to chibicode/next.js that referenced this pull request Feb 11, 2020
* Wraps config in higher-order function
@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

4 participants