Commit graph

2808 commits

Author SHA1 Message Date
Gerald Monaco
039eb817e1
Remove next-head-count (#16758)
Removes `next-head-count`, improving support for 3rd party libraries that insert or append new elements to `<head>`.

---

This is more or less what a solution with a `data-` attribute would look like, except that instead of directly searching for elements with that attribute, we serialize the elements expected in `<head>` and then find them/assume ownership of them during initialization (in a manner similar to React's reconciliation) based on their properties.

There are two main assumptions here:
1. Content is served with compression, so duplicate serialization of e.g. inline script or style tags doesn't have a meaningful impact. Storing a hash would be a potential optimization.
2. 3rd party libraries primarily only insert new, unique elements to head. Libraries trying to actively manage elements that overlap with those that Next.js claims ownership of will still be unsupported.

The reason for this roundabout approach is that I'd really like to avoid `data-` if possible, for maximum compatibility. Implicitly adding an attribute could be a breaking change for some class of tools or crawlers and makes it otherwise impossible to insert raw HTML into `<head>`. Adding an unexpected attribute is why the original `class="next-head"` approach was problematic in the first place!

That said, while I don't expect this to be more problematic than `next-head-count` (anything that would break in this new model also should have broken in the old model), if that does end up being the case, it might make sense to just bite the bullet.

Fixes #11012
Closes #16707

---

cc @Timer @timneutkens
2020-09-09 01:41:04 +00:00
JJ Kasper
f46ddc6933
Correct page path for GS(S)P data refreshing (#16939)
This makes sure to the page path is the expected version to trigger refreshing on the client and adds additional tests to make sure it is working properly with these page variants. 

Closes: https://github.com/vercel/next.js/issues/16938
2020-09-08 16:00:05 +00:00
Tim Neutkens
ac0c892acc v9.5.4-canary.6 2020-09-08 11:07:29 +02:00
JJ Kasper
bc80fb4fb2
Add handling for redirects from getStaticProps/getServerSideProps (#16642)
Co-authored-by: Tim Neutkens <timneutkens@me.com>
2020-09-08 09:23:21 +02:00
Tim Neutkens
4c5c7cd2da v9.5.4-canary.5 2020-09-07 14:11:50 +02:00
JJ Kasper
f942d9e892
Include additional query values when interpolating href (#16878)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2020-09-07 13:09:02 +02:00
Tim Neutkens
f077a39e21
Divide export build output in 4 segments instead of showing it one by one (#16815) 2020-09-07 11:52:12 +02:00
JJ Kasper
a9c442f2df
v9.5.4-canary.4 2020-09-06 21:17:34 -05:00
JJ Kasper
489cad36bc
Fix href resolving with trailing slash enabled (#16873)
This makes sure to strip the trailing slash before attempting to resolve the `href` against pages/dynamic routes and adds tests ensuring the correct pages are resolved with `trailingSlash: true` enabled.

Fixes: https://github.com/vercel/next.js/issues/16872
2020-09-06 02:36:57 +00:00
Joe Haddad
ae7ae0ba68
v9.5.4-canary.3 2020-09-05 00:43:53 -04:00
JJ Kasper
6233ef7ed8
Correct client rewrite resolving with query (#16860)
This makes sure we only pass the as value's `pathname` instead of the full value so that we don't accidentally include `query` values while resolving the rewrites. This also adds tests to ensure the rewrites are resolved with the correct query values when only providing `href` and when manually mapping them with `href` and `as`

Fixes: https://github.com/vercel/next.js/issues/16825
2020-09-04 19:19:17 +00:00
JJ Kasper
f7435b4142
v9.5.4-canary.2 2020-09-04 10:37:58 -05:00
JJ Kasper
d97237a292
Fix invalid config export errors (#16834)
This corrects detecting of invalid page config exports and adds additional test cases for non-invalid config import/exports

Closes: https://github.com/vercel/next.js/issues/16775
2020-09-04 13:19:12 +00:00
Jan Potoms
764b194505
make parseRelativeUrl return a UrlObject (#16809)
Alternative to https://github.com/vercel/next.js/pull/16798
2020-09-03 18:26:52 +00:00
JJ Kasper
8426f13713
Update to show build indicator while re-fetching GS(S)P data in dev (#16789)
This is a follow-up to https://github.com/vercel/next.js/pull/16744 which shows the build/activity indicator while the data is being re-fetched to let the user know the re-fetching is occurring 

Closes: https://github.com/vercel/next.js/issues/16790
2020-09-03 12:27:08 +00:00
Joe Haddad
a555029a7b
v9.5.4-canary.1 2020-09-02 13:13:51 -04:00
JJ Kasper
4685332353
Add automatic reloading when editing GS(S)P methods (#16744)
This adds initial support for reloading the page when `getStaticProps`, `getStaticPaths`, or `getServerSideProps` were changed for a page by triggering a reload when the server output for a page has changed but the client output has not since these methods aren't included in the client output. 

Closes: https://github.com/vercel/next.js/issues/13949
2020-09-02 16:57:21 +00:00
JJ Kasper
f8d92a67f0
Ensure interpolating dynamic href values works correctly (#16774)
This corrects/makes sure interpolating dynamic route values for `href` works correctly. This provides an alternative approach to building the `href` value with `next/link` so that you don't need to worry about encoding the params manually. 

Closes: https://github.com/vercel/next.js/issues/13473
Closes: https://github.com/vercel/next.js/issues/14959
Closes: https://github.com/vercel/next.js/issues/16771
2020-09-02 16:23:26 +00:00
JJ Kasper
fa153bcfac
Only update lookups for dev overlay if mounted (#16776)
Since the error overlay could be dismissed before this is resolved we need to make sure the component is still mounted before updating the state.
2020-09-02 09:25:19 +00:00
Joe Haddad
200c5ed806
v9.5.4-canary.0 2020-09-02 02:43:58 -04:00
Alex Castle
6874adbbb9
Make the image post-processor ignore SVG images (#16732)
This is a small change to the image post-processor logic. When it's looking for images to preload, it will now ignore SVGs, as these are rarely the relevant images for LCP.
2020-09-02 02:42:20 +00:00
Joe Haddad
b6df810406
v9.5.3 2020-09-01 16:21:49 -04:00
Joe Haddad
48ce4de0fd
v9.5.3-canary.27 2020-09-01 14:10:34 -04:00
Joe Haddad
e34e5e09d9
Revert #14580 (#16757) 2020-09-01 14:09:25 -04:00
Joe Haddad
1c45f70952
[test] Update hydration marker for React 17 (#16756) 2020-09-01 17:43:44 +00:00
Arthur
d20dbd6c2e
Export return type for GetStaticPaths (#16580)
* feat Export return type for GetStaticPaths

* add Duplicate generic

Co-authored-by: Luis Alvarez D <luis@vercel.com>
2020-09-01 12:20:17 -05:00
Joe Haddad
d59f12c416
v9.5.3-canary.26 2020-09-01 12:22:12 -04:00
JJ Kasper
91a50d3674
Revert "fix: Promise.prototype.finally is object (#16620)" (#16753)
This reverts commit 6926ab7b2a.
2020-09-01 12:06:51 -04:00
Joe Haddad
f921b4f476
Auto enable React's new JSX transform on 17.x (#16603) 2020-09-01 11:29:25 -04:00
TMQ
6926ab7b2a
fix: Promise.prototype.finally is object (#16620)
The [finally-polyfill](https://gist.github.com/developit/d970bac18430943e4b3392b029a2a96c)  did not expose any values.
![image](https://user-images.githubusercontent.com/15967520/91409583-2f916a00-e878-11ea-86d0-189966ceb83c.png)
2020-08-30 03:01:29 +00:00
Jan Potoms
20a4928b16
remove unneeded error (#16636)
This is not needed anymore since absolute urls are supported.
Also added an extra test for `mailto:` urls
2020-08-28 02:49:40 +00:00
Joe Haddad
f658b7641d
v9.5.3-canary.25 2020-08-26 22:18:49 -04:00
Joe Haddad
328abb72ca
Do not rely on cssText (#16611) 2020-08-26 22:13:28 -04:00
Joe Haddad
42e8dcf281
v9.5.3-canary.24 2020-08-26 12:35:37 -04:00
Joe Haddad
6895f9b0f4
Replace <link rel=stylesheet> client-side transitions with <style> tags (#16581)
This pull request replaces our client-side style transitions with `<style>` tags over async `<link rel=stylesheet>` tags. This should fix some edge cases users see with Chrome accidentally causing a FOUC.

This also removes the need to perform an async operation before starting the render, which should remove any perceivable navigation delay.

---

Fixes #16289
2020-08-26 16:34:53 +00:00
Joe Haddad
5fbe50c49a
v9.5.3-canary.23 2020-08-25 11:23:04 -04:00
Joe Haddad
52efe3364f
Reuse existing <link rel=stylesheet> on nav (#16537)
This pull request reuses existing `<link rel=stylesheet>` tags if their `href` matches instead of recreating it. This is in effort to fix an edge case where the browser will FOUC on the tag swap.

This behavior should be sufficiently covered by all the existing CSS cases, as misbehavior would result in the resulting CSS styles being incorrect.
2020-08-25 15:03:14 +00:00
Tim Neutkens
2e12e86d7c v9.5.3-canary.22 2020-08-25 12:03:06 +02:00
Jared Palmer
65648ece86
Update next-google-analytics to work with .env files (#16529)
Changes the name of the environment variable to `NEXT_PUBLIC_GA_TRACKING_ID`
2020-08-25 05:16:48 +00:00
Tim Neutkens
ed0820f763
Enable webpack 5 caching by default (#16531)
When the webpack 5 beta is used disk caching will be automatically enabled to improve incremental build performance.
2020-08-24 22:37:52 +00:00
Joe Haddad
885d145ff7
v9.5.3-canary.21 2020-08-24 01:23:01 -04:00
khades
1a7f3e5199
Store css file dependencies info for dynamic imports and apply it at SSR (#12843)
To prevent FOUC, discussed in #10557 i need to store information about css file dependencies for chunk. Right now current implementation just throws away everything but js.

Can there be more than one css file in chunk? If no - code will be simplified.

closes #10557
2020-08-24 05:20:11 +00:00
Luis Alvarez D
735aab6f03
Update Fast Refresh warning (#16496)
Fixes https://github.com/vercel/next.js/issues/16495

Terminal:

![image](https://user-images.githubusercontent.com/4278345/90984442-96421b00-e53a-11ea-9939-44b00cba87cf.png)

Browser: 

![image](https://user-images.githubusercontent.com/4278345/90984456-a9ed8180-e53a-11ea-86da-d9f28e9c2fdd.png)

The link https://nextjs.link/codemod-ndc used for the warning links to a currently 404 docs page, that will be available in the next stable release.

Tests not added as the warning has tests already.
2020-08-24 03:04:25 +00:00
JJ Kasper
a7550bf1d7
Add error when document component isn't rendered (#16459)
If a custom `_document` is added but not all of the expected document components are rendered it can cause unintended errors as noticed in https://github.com/vercel/next.js/issues/10219 so this adds detecting when one of the expected document components isn't rendered and shows an error. 

Closes: https://github.com/vercel/next.js/issues/10219
2020-08-24 02:42:51 +00:00
Tim Neutkens
f2ba97d866
Add webpack 5 cache invalidation (#16494)
Handles:

- Next.js version
- next.config.js `env` key
- `NEXT_PUBLIC_` prefixed environment variables
- next.config.js keys that affect performance

Ideally we don't invalidate the whole cache when `NEXT_PUBLIC_` / `env` key variables change, but this is just to initially make the caching reliable, this behavior is similar to the current webpack 4 behavior, so it can only be improved 👍
2020-08-24 01:37:48 +00:00
JJ Kasper
4e0b40145d
Correct initial fallback route param values (#16485)
This fixes invalid initial route params in development mode and serverless production mode. It also adds tests to ensure these values are correct in development, production, and serverless mode.

x-ref: https://github.com/vercel/next.js/pull/16084
Fixes: https://github.com/vercel/next.js/issues/16481
Fixes: https://github.com/vercel/next.js/issues/16482
2020-08-23 12:35:30 +00:00
JJ Kasper
32ee65efa1
Correct shallow routing behavior through history (#16477)
When navigating from a non-shallow page to a page that was navigated to shallowly in history it causes incorrect page data to be shown since an incorrect shallow navigation is done. We can only maintain shallow routing when the current page was navigated to shallowly and the page being navigated to in history was also navigated to shallowly. Additional tests to ensure this behavior is working has also been added. 

Closes: https://github.com/vercel/next.js/issues/7395
Closes: https://github.com/vercel/next.js/issues/14928
Fixes: https://github.com/vercel/next.js/issues/16028
2020-08-22 21:51:14 +00:00
Tim Neutkens
4a981428ae v9.5.3-canary.20 2020-08-22 15:00:30 +02:00
Tim Neutkens
d0754993fc
Add webpack 5 caching for css optimizer (#16467) 2020-08-22 14:16:13 +02:00
Joe Haddad
9acd001e09
Fix render cancel behavior (#16462)
This pull request correctly tracks render cancelation behavior. Prior to this PR, we'd have an unhandled rejection that left the app in a bad state and no routeChangeError event was fired.

---

Closes #16424
Fixes #16445
2020-08-22 11:47:21 +00:00