rsnext/packages/next/client
Mateusz Burzyński 482fccb922
Adding head element checking for root layout (#43597)
### Update

We removed the `<head>` element checking for root layout in #41621. Since we also need `<head>` for preload in the future, and also css-in-js will require that. We're adding back the `head` element checking to make sure user always provide valid root layout including it.

### Issue

An issue was reported [here](https://github.com/mui/material-ui/issues/34905#issuecomment-1331945868) that the Emotion/MUI site was suffering from FOUC.

After an inspection, I noticed that the SSRed HTML didn't contain the inserted styles at all - despite them being inserted through `useServerInsertedHTML`. I managed to debug it down and discovered that their layout was missing `<head></head>` and thus the stream transformer skipped the insertion altogether cause of this check:
fbc98abab3/packages/next/server/node-web-streams-helper.ts (L177-L183)

I've figured that at the very least we could surface this as a console error in development to nudge the user to fix the missing `<head/>`

cc @huozhi 



Co-authored-by: Jiachi Liu <4800338+huozhi@users.noreply.github.com>
2022-12-02 16:41:46 +00:00
..
compat next/compat/router (#42502) 2022-11-07 18:16:28 +00:00
components Adding head element checking for root layout (#43597) 2022-12-02 16:41:46 +00:00
dev Remove stack trace from full reload warning (#43453) 2022-11-28 13:18:26 +00:00
legacy Replace global with globalThis (#42627) 2022-11-08 14:45:30 +01:00
portal refactor(portal): remove useRef from portal component (#39792) 2022-08-21 09:39:43 +00:00
add-base-path.ts Extract router utils to common functions (#37313) 2022-05-30 20:19:37 +02:00
add-locale.ts Extract router utils to common functions (#37313) 2022-05-30 20:19:37 +02:00
app-bootstrap.js Load beforeInteractive scripts properly without blocking hydration (#41164) 2022-10-09 15:08:51 +00:00
app-index.tsx Optimize bundle size for appDir (#42252) 2022-10-31 17:50:35 +00:00
app-next-dev.js Load beforeInteractive scripts properly without blocking hydration (#41164) 2022-10-09 15:08:51 +00:00
app-next.js Merge app internal chunk into main chunk for layouts (#41902) 2022-10-27 16:50:46 -07:00
detect-domain-locale.ts Extract router utils to common functions (#37313) 2022-05-30 20:19:37 +02:00
get-domain-locale.ts Extract router utils to common functions (#37313) 2022-05-30 20:19:37 +02:00
has-base-path.ts Extract router utils to common functions (#37313) 2022-05-30 20:19:37 +02:00
head-manager.ts Migrate head side effects to hooks (#37526) 2022-06-08 11:26:57 +00:00
image.tsx Remove useState from next/image (#43587) 2022-11-30 18:30:02 -08:00
index.tsx Change usePathname to return string | null (#42380) 2022-11-03 13:34:50 -07:00
link.tsx Update next/link default legacyBehavior (#42623) 2022-11-30 20:01:29 -08:00
next-dev.js Add hard navigation guard and fix middleware rewrite cases (#37815) 2022-06-20 11:31:19 +00:00
next.js Split up & tweak next/client initialization (#33838) 2022-03-07 17:09:55 +00:00
normalize-locale-path.ts Extract router utils to common functions (#37313) 2022-05-30 20:19:37 +02:00
normalize-trailing-slash.ts Update experimental skipTrailingSlashRedirect handling (#43201) 2022-11-21 13:25:01 -08:00
page-loader.ts feat(next): Support has match and locale option on middleware config (#39257) 2022-08-31 11:23:30 -05:00
performance-relayer-app.ts Optimize bundle size for appDir (#42252) 2022-10-31 17:50:35 +00:00
performance-relayer.ts add attribution to web vitals (#39368) 2022-10-04 00:17:30 +00:00
remove-base-path.ts Extract router utils to common functions (#37313) 2022-05-30 20:19:37 +02:00
remove-locale.ts Extract router utils to common functions (#37313) 2022-05-30 20:19:37 +02:00
request-idle-callback.ts types: better type definition for internal utils (#43070) 2022-11-19 16:09:13 -08:00
route-announcer.tsx next/compat/router (#42502) 2022-11-07 18:16:28 +00:00
route-loader.ts Adopt script rejection pattern for link onerror. (#42645) 2022-11-09 19:58:20 +00:00
router.ts next/compat/router (#42502) 2022-11-07 18:16:28 +00:00
script.tsx Bundle ssr client layer excepts react externals (#41606) 2022-10-22 16:33:51 -07:00
trusted-types.ts Route Loader Trusted Types Violation Fix (#34730) 2022-05-03 23:22:08 +00:00
use-intersection.tsx refactor(use-intersection): remove useRef usage (#39791) 2022-08-21 10:10:09 +00:00
with-router.tsx Upgrade typescript to 4.8.2 (#39979) 2022-08-29 16:56:02 +00:00