Commit graph

182 commits

Author SHA1 Message Date
Tim Neutkens
e35005c214
[Experimental] Nomodule polyfills chunk (#10212)
* Polyfill Promise in polyfills chunk

* Override promise polyfill to use built-in

* Update sizes

* Update polyfills

* Test

* Add dep

* Use iife

* Unscope

* Revert "Unscope"

This reverts commit ab26bcefd551c544d5b3c577b7ce91e5ecfb9bb9.

* trigger

* Remove unused code

* Set helpers to true

* Update yarn.lock

* Fix test

* Update polyfills size

* Add comment

* Add back comment

* Put polyfills optimization under experimental flag

* Fix filename

* bring back promise for backwards compat until experimental feature is landed

* fix resolve alias check

* correct loader

* fix logic branches

* adjust !!

* adjust cache key

* Conditionally branch polyfill

* fix promise polyfill branching

* Re-add runtime

* fix base object

* fix yarn lock

* Add cache key

* correctly set caller

* add basic test

* Increment h=>i

* increment to j just in case

Co-authored-by: Joe Haddad <timer150@gmail.com>
Co-authored-by: JJ Kasper <jj@jjsweb.site>
2020-01-30 01:04:29 -05:00
Tim Neutkens
6988a2e0a5
Use builtins for React transform (#10207)
* Disable core-js on Next.js core files as it's not transforming anything important

* Move babel options to taskr plugin

* Disable transform-runtime for pages dir

* Disable correctly

* Disable corejs for core files

* Temporarily check if this fixes the error

* Use builtIns and exclude async-to-generator

* Update index.test.js
2020-01-22 16:24:02 +01:00
Tim Neutkens
7b0118a991
Disable core-js on Next.js core files as it's not transforming… (#10193)
* Disable core-js on Next.js core files as it's not transforming anything important

* Move babel options to taskr plugin

* Disable transform-runtime for pages dir

* Disable correctly

* Disable corejs for core files

* Temporarily check if this fixes the error
2020-01-22 14:34:49 +01:00
JJ Kasper
53e9983d83 Add hydration callback for testing (#10195)
* Add hydration callback for testing

* Update size-limit test
2020-01-21 15:33:58 -05:00
JJ Kasper
04f1dd52b9 Delay hydration until after page is visible in development (#10164)
* Delay hydration until after page is visible in development

* Tweak dead-code elimination
2020-01-20 21:41:41 +01:00
Prateek Bhatnagar
552f3b4302 fixing observing paint types in safari bug (#10076)
* fixing observing paint types in safari bug

* using try catch for performanceObserver fallback

Co-authored-by: Joe Haddad <timer150@gmail.com>
2020-01-14 23:16:38 -05:00
Tomas Cerskus
ce2714de73 Fix reading Component.__N_SSG (#10037)
* Fix error when reading Component.__NEXT_SPR in packages/next/client/index.js

* Use the .? optional chaining operator

Co-Authored-By: Tim Neutkens <tim@timneutkens.nl>

* Update index.js

Co-authored-by: Tim Neutkens <tim@timneutkens.nl>
Co-authored-by: Joe Haddad <timer150@gmail.com>
2020-01-14 15:06:26 -05:00
Joe Haddad
2d76c4a9bb
Replace __NEXT_SPR with __N_SSG Identifier (#10090) 2020-01-14 14:40:20 -05:00
Houssein Djirdeh
01699c6ac3 removes performance measures and marks for concurrent and blocking modes (#10088)
Co-authored-by: Joe Haddad <timer150@gmail.com>
2020-01-14 14:17:18 -05:00
Christopher Snyder
c294ad0a53 Fix missing quotes around in operator check for PerformanceObserver (#10018)
* Fix missing quotes around `in` operator check for PerformanceObserver

* Always call `getEntriesByType()` even if performance observer is supported.

Co-authored-by: Joe Haddad <timer150@gmail.com>
2020-01-10 17:00:32 -05:00
Joe Haddad
af82f322e5
Enable New CSS Support by Default (#9927)
* Enable New CSS Support by Default

* Adjust configs

* Fix invisible AMP body

* Fix AMP validation warning

* test fix

* Use expression that won't be eliminated by babel
2020-01-09 15:31:28 -05:00
Joe Haddad
3c8fff354b
Simplify <Link> Prefetch Deduping (#9987)
* Simplify `<Link>` Prefetch Deduping

* Fix test

* Update test/integration/preload-viewport/test/index.test.js

Co-Authored-By: JJ Kasper <jj@jjsweb.site>

Co-authored-by: JJ Kasper <jj@jjsweb.site>
2020-01-07 18:25:44 -05:00
Brian Mathews
5a2182e62e Add assetPrefix when fetching script and style dependencies (#9933)
* Add assetPrefix when fetching script and style dependencies for granularChunks

* Lint

* Fix assetPrefix usage with granularChunks

* Add tests for granularChunks with assetPrefix

* Cleanup
2020-01-06 10:55:39 -05:00
Tim Neutkens
32ec4f6913 Allow for shortened names for certain items (#9949)
* Use smaller name as it's not shortened

* Remove export as it's not used and it'll be shortened

* Update size

Co-authored-by: Joe Haddad <timer150@gmail.com>
2020-01-04 15:53:33 -05:00
Tim Neutkens
7e817cab04 Remove rewriteUrlForNextExport from bundles when option is not enabled (#9946)
Co-authored-by: Joe Haddad <timer150@gmail.com>
2020-01-04 12:16:57 -05:00
Tim Neutkens
72a0c5578e Remove async from void functions in page-loader (#9948)
* Remove async from void functions in page-loader

* Fix void return

* Update page-loader.js

* Update index.test.js
2020-01-04 11:58:32 -05:00
Tim Neutkens
1fd57d22d5
Remove experiment (#9945)
* Remove experiment

* Add back ssr-prepass for serverless test

* Update size as they both decreased

Co-authored-by: JJ Kasper <jj@jjsweb.site>
2020-01-04 17:40:18 +01:00
Tim Neutkens
8898b853e6
Don't bundle prop-types to then tree shake it (#9944) 2020-01-04 14:12:11 +01:00
JJ Kasper
ae78e8f5be Fix get(Static|Initial)Props re-running when updating query (#9907)
* Add failing test for re-calling getStaticProps after updating query

* Fix get(Static|Initial)Props re-running when updating query

* Update invalid export tests

Co-authored-by: Joe Haddad <timer150@gmail.com>
2020-01-03 15:36:24 -05:00
Joe Haddad
4f0c74c543 Fix Potential Duplication of Page Loading (#9894) 2019-12-31 12:19:39 -06:00
Joe Haddad
69a34dd778
Fix IE11 Prefetching (#9823) 2019-12-24 15:40:06 -05:00
Joe Haddad
632e40f266
Optimize Prefetching (#9818)
* Optimize Prefetching

* fix css client nav test

* fix preload viewport test

* fix production test

* patch tests more

* Make page loader wait on prefetch

* no unhandled rejection

* Save some bytes
2019-12-24 10:07:44 -05:00
JJ Kasper
1ec7716fe6
Prevent re-observing for an already prefetched page (#9644)
* Prevent re-observing for an already prefetched page

* Update size-limit test

* Move prefetched setting

* Remove extra prefetched setting
2019-12-20 15:30:58 -06:00
JJ Kasper
1de765e452
Update to close SSE connection before unload (#9798) 2019-12-20 12:01:22 -06:00
Tim Neutkens
950d67b721
Add experiment for prefetching (#9747) 2019-12-14 11:21:48 +01:00
Joe Haddad
734989d836 [Experimental] CSS Module Support (#9686)
* CSS Module Support

* Fix Server-Side Render of CSS Modules

* Fix Jest Snapshots
https://github.com/facebook/jest/pull/8492

* Fix snapshots

* Add test for CSS module edit without remounting

* Add tests for dev and production style being applied

* Add missing TODOs

* Include/exclude should only be applied to issuer, not the CSS file itself

* Add CSS modules + node_modules tests

* Test that content is correct

* Create Multi Module Suite

* Add client-side navigation support for CSS

* Add tests for client-side nav

* Add some delays

* Try another fix

* Increase timeout to 3 minutes

* Fix test

* Give all unique directories
2019-12-11 11:46:12 +01:00
Prateek Bhatnagar
5b10ea003c adding duration for custom performance marks (#9592) 2019-12-05 13:36:51 -05:00
Joe Haddad
bf5e295c0c Correct URI Encoding Order (#9638)
* Correct URI Encoding Order

* Add prefetch test

* verify encoding
2019-12-05 12:10:37 -06:00
JJ Kasper
45832e4421 Make sure to parse query values for SSG page after hydration (#9545)
* Make sure to parse query values for SSG page after hydration

* Update to re-use __NEXT_SPR
2019-11-27 23:16:19 -05:00
Prateek Bhatnagar
698f522d71 Wait till load for paint metrics (#9406)
* wait till load to fire paint metrics as they might not be available upfront

* adding performance observer

* adding check for performance user timing
2019-11-26 10:52:38 +01:00
Janicklas Ralph
04a7f1e85d Replace url polyfill with self.URL (#9200)
* Adding native-url package

* Bumping native-url version

* Upgrading native-url

* Logging stats object for debugging

* Logging stats object for debugging

* Adding try catch to the error lines

* Experimenting with regex

* Experimenting with regex

* Experimenting with regex

* Testing regex changes

* Fixing defer-script test case to not include polyfill.js

* Meging changes with existing polyfill work

* Bumping version

* adjust webpack config

* Reduce size in size test

* Remove 1kb from legacy
2019-11-25 23:10:02 -05:00
Joe Haddad
553052f903
Remove unused property skeleton (#9393) 2019-11-12 19:26:42 -08:00
Joe Haddad
7bb7d70650
Polyfill Object.assign by Default (#9369)
* Polyfill `Object.assign` by Default

* fix formatting
2019-11-10 20:48:11 -08:00
Joe Haddad
18a9c7e371
Improve linting rules to catch more errors (#9374)
* Update `packages/`

* Update examples

* Update tests

* Update bench

* Update top level files

* Fix build

* trigger
2019-11-10 19:24:53 -08:00
Tim Neutkens
9b999b1ce3
Convert wrapper class to function component (#9095)
* Convert wrapper class to function component

* Remove unneeded export

* Check versions of chrome and chromedriver

* Update to chromedriver 76

* Revert config.yml

* Update with-router.tsx
2019-11-09 14:56:59 -08:00
Alex Castle
b37fcbb50b Prevent CSS script tags in granular chunks (#9306)
* Don't add script tags for css files on client side navigation with granular chunks

* Filter for JS, instead of against CSS
2019-11-05 06:54:17 +01:00
Janicklas Ralph
ff2d3fd87d Polyfill window.fetch by Default (#9168)
* Polyfilling fetch and object-assign

* Polyfilling corejs object-assign

* Adding object-assign in polyfills.js. IE11 does not support Object.assign

* Fixing failing test

* Updating object.assign polyfill to fix aliasing

* Updating test case value to match new build stats

* Increasing the size of default build to 225kb

* Fixing defer-script test case to not include polyfill.js

* Revert README.md

* Re-design the polyfill approach based on PR feedback

* Adding comment and fixing test case

* Rename polyfills chunk

* Extract aliases into helper

* Remove extra new line

* Fix TypeScript typings

* Adding _internal_fetch alias

* Adjust build manifest plugin

* Build manifest plugin changes - adding a separate entry for polyfills

* Rename polyfills entry in build-manifest.json

* Remove old comment

* Fix TS

* Set key

* Polyfills already added

* Filtring polyfill.module.js

* Fix test

* Add __internal_fetch to alias rule

* Adjust name

* bump size

* ignore polyfills

* sigh
2019-11-01 21:00:56 -04:00
Tim Neutkens
7c80febcf7 Initial plugins implementation (#9139)
* Add initial bit for plugins

* Add checks for needed metadata values

* Add test

* Initial plugins changes

* Add handling for _app middleware

* Add loading of _document middleware and
handling of multiple default export syntaxes

* Fix insert order for middleware member expression

* Remove early return from middleware plugin from testing

* Add tests for current plugin middlewares

* Update test plugin package.json

* Update handling for class default export

* Update to use webpack loader instead of babel
plugin, remove redundant middleware naming, and add field for required env for plugins

* Add middleware to support material-ui use case
and example material-ui plugin

* Update tests and remove tests stuff from google analytics plugin

* Remove old plugin suite

* Add init-server middleware

* Exit hard without stack trace when error in collecting plugins

* Add on-error-client and on-error-server and update
to run init-server with next-start in serverless mode

* Update init-client for google analytics plugin

* Add example Sentry plugin and update with-sentry-simple

* Remove middleware field/folder and use src dir for plugins

* Add post-hydration middleware and update
material-ui plugin

* Put plugins code behind flag

* Update chromedriver

* Revert "Update chromedriver"

This reverts commit 1461e978e677f7da05e29e0415ec614a04bf65f9.

* Update lock file

* Remove un-needed _app for sentry example

* Add auto loading of scoped packages, add plugins
config for manually listing plugins, and update
to only collect plugins once

* Update example plugins

* Expose plugins' config

* Rename plugin lifecycles and add babel-preset-build

* Rename other methods with unstable

* Update log when plugin config overrides auto-detecting
2019-11-01 14:13:13 -05:00
Ilya
8dd394a055 Load granular chunks with correct asset prefix (#8993)
* closes #8989

fix

closes #8989

* test

* Update next.config.js

* Revert page1.js

* Revert page2.js

* Delete page4.js

* Delete page3.js

* Update index.test.js

* Revert index.test.js

* Revert next.config.js
2019-10-30 10:25:11 -04:00
Gerald Monaco
f632567bcf Add experimental config for React Mode (#9207)
* Add experimental config for React Mode

* Use latest types

* Use latest types
2019-10-30 09:39:58 -04:00
Gerald Monaco
4421448f03 Add StrictMode toggle (#9161)
* Add StrictMode toggle

* Rename option to reactStrictMode

* Default to false initially
2019-10-26 00:20:38 +02:00
Gerald Monaco
beed775e55 Update legacy _app context (#9083) 2019-10-16 11:39:49 +02:00
Joe Haddad
3762e75704
Inline relayPaintMetrics function (#8954)
This function was only used once. I missed it in review, but this should save us a few bytes.
2019-10-03 17:34:54 -04:00
Prateek Bhatnagar
5929e9da20 Add unstable_onPerformanceData helper for performance entries (#8480)
* Performance relayer for client side performance

* adding paint metrics

* fixing titles

* fixing route change measure

* accessing exports without loop

* adding more tests

* renaming the method

* adds experimental prefix to method name

* applying the suggested patch

* Update index.js
2019-10-03 15:15:23 -04:00
Joe Haddad
40b0b9b958
Reduce Timeframe That FOUC Styles Are Active (#8937)
* Show content as soon as <style> tags are added

* Add fallback removal

* Add test for when unused

* Ensure the function is ES5 compatible

* IE support

* Test it works on broken pages
2019-10-02 19:08:19 -04:00
Joe Haddad
29c1b93c89
s/Automatic Prerendering/Automatic Static Optimization/ (#8940)
* s/Automatic Prerendering/Automatic Static Optimization/

* Update more links
2019-10-02 18:03:00 -04:00
Joe Haddad
d9c6f20023 Remove React Suspense from Client Runtime (#8887) 2019-09-28 12:44:07 +02:00
JJ Kasper
5f4e606e84 Fix using withRouter in _app opting out of auto-export (#8811) 2019-09-20 16:49:49 -04:00
Joe Haddad
65358b7a33
Global CSS Support (#8710)
* Global CSS Support

* Fix webpack configuration

* oneOf rule isn't necessary yet

* Adjust CSS chunk naming

* Begin testing CSS behavior

* Add another test TODO

* Replace null-loader with ignore-loader

* Turn on chunks for new CSS feature

* Fix multi test suite

* Test CSS import order

* Test style HMR

* Test CSS compilation

* Test compilation and prefixing together

* Verify CSS styling works for Development and Production

* Add missing TODO

* Remove unnecessary test

* Adjust TODO message

* Hide page until React hydrates

* Revert "Hide page until React hydrates"

This reverts commit 898d4e0ee547b003d5790e2b11476740d645b907.

* Hide FOUC during development

* Test CSS imports

* Update tests TODO

* Add fixture for url() test

* Test `file-loader` support in CSS files

* Use a simple variant of cssnano

* Self-import

* Undo bundling

* Implement suggestion
2019-09-17 16:05:20 -04:00
JJ Kasper
583b4677ae Prevent URL from being updated while asPath is delayed (#8756)
* Prevent updating URL when delaying asPath

* Ignore TypeScript not liking __NEXT_DATA__

* Update another global to fix standard check
2019-09-16 12:15:18 -04:00