Next.js: Π‘Π΅Ρ€Π²Π΅Ρ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„Π»ΡΡˆ нСстилизованного ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° (FOUC)

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 18 мая 2020  Β·  20ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: vercel/next.js

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС

ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ

Π§Π΅Ρ‚ΠΊΠΎΠ΅ ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ошибки.

ΠŸΡ€ΠΈ использовании Next.js каТСтся, Ρ‡Ρ‚ΠΎ CSS Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π³ΠΈΠ΄Ρ€Π°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π² <head> ΠΊΠΎΠ³Π΄Π° элСмСнт <div id="__next"> Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ становится Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ.

Π­Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ нСстилизованного содСрТимого (ΠΈΠ»ΠΈ FOUC) ΠΏΡ€ΠΈ запускС нашСго сСрвСра Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π₯отя Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ Π²Ρ€ΠΎΠ΄Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ (Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ каТСтся странным).

Π’ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ

Π¨Π°Π³ΠΈ ΠΏΠΎ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ повСдСния, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:

  1. ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ этот Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ , запустив:
$ git clone https://github.com/tutorbookapp/covid-tutoring
  1. УстановитС наши зависимости (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π² нашСм README.md ), запустив:
$ npm i && lerna bootstrap --hoist
  1. ЗапуститС сСрвСр Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, запустив:
$ npm run dev
  1. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° FOUC ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ страницы.

ОТидаСмоС повСдСниС

Π§Π΅Ρ‚ΠΊΠΎΠ΅ ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ <div id="__next"> Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй Π½Π°Π΄ сгибом (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ React, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π½Π°Π΄ сгибом) вставлСны Π² <head> . Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй с Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ элСмСнтом <div id="__next"> .

Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹

Если Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ снимки экрана, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ FOUC, Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ Π½Π° нашСм сСрвСрС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

fouc

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π½Π΅Ρ‚ Π½Π° нашСм производствСнном Π²Π΅Π±-сайтС :

no-fouc

БистСмная информация

  • ОБ: Ubuntu 18.04.2
  • Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€: Firefox 76.0.1
  • ВСрсия Next.js: 9.4.0
  • ВСрсия Node.js: 12.16.1
bug needs investigation

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

А ΠΊΠ°ΠΊ насчСт производства? Π― всС Π΅Ρ‰Π΅ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽ FOUC с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом StyledComponents + Material

ВсС 20 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡΡŒ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ css, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ styled-jsx, ΠΎΠ½ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π― Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ: Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ css Π² _app.js, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π½Π΅ загруТаСтся с ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ javascript, ΠΏΠΎΠΊΠ° ΠΎΠ½ находится Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π­Ρ‚ΠΎ затрудняСт тСстированиС SSR, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ стили.

@robgraeber Π£ мСня Ρ‚ΠΎΡ‡Π½ΠΎ такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. CSS компилируСтся Π² _app.js вмСсто ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° css.

Π—Π΄Π΅ΡΡŒ Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.
Π― создал ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, воспроизводящий эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ: https://github.com/dnaranjo89/next-css-ssr

Π’Π°ΠΊΠΆΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° я Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ css Π² инспСкторС, ΠΈ любоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ CSS всСй страницы ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ. ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ испытал это?

@derskeal ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΏΠ»Π°Π³ΠΈΠ½ sass ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй Ρ‡Π΅Ρ€Π΅Π· sass Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Layout: https://github.com/giuseppeg/styled-jsx-plugin-sass

@Timer Π― ΠΌΠΎΠ³ Π±Ρ‹ воспроизвСсти эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² этом Ρ€Π΅ΠΏΠΎ https://github.com/yanv1991/demo-react-dom , это Π½Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° стилСй с использованиСм встроСнных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ sass с динамичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ для ssr Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ prod

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ нСльзя Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ:

error - Error [FirebaseError]: projectId must be a string in FirebaseApp.options
    at new FirestoreError (/Users/joe/Desktop/scratch2/covid-tutoring/node_modules/@firebase/firestore/dist/index.node.cjs.js:1223:28)
    at Function.Firestore.databaseIdFromApp (/Users/joe/Desktop/scratch2/covid-tutoring/node_modules/@firebase/firestore/dist/index.node.cjs.js:21018:19)
    at new Firestore (/Users/joe/Desktop/scratch2/covid-tutoring/node_modules/@firebase/firestore/dist/index.node.cjs.js:20850:42)
    at /Users/joe/Desktop/scratch2/covid-tutoring/node_modules/@firebase/firestore/dist/index.node.cjs.js:22871:66
    at Component.instanceFactory (/Users/joe/Desktop/scratch2/covid-tutoring/node_modules/@firebase/firestore/dist/index.node.cjs.js:22410:16)
    at Provider.getOrInitializeService (/Users/joe/Desktop/scratch2/covid-tutoring/node_modules/@firebase/component/dist/index.cjs.js:219:39)
    at Provider.getImmediate (/Users/joe/Desktop/scratch2/covid-tutoring/node_modules/@firebase/component/dist/index.cjs.js:120:33)
    at FirebaseAppImpl._getService (/Users/joe/Desktop/scratch2/covid-tutoring/node_modules/@firebase/app/dist/index.node.cjs.js:228:49)
    at FirebaseAppImpl.firebaseAppImpl.<computed> [as firestore] (/Users/joe/Desktop/scratch2/covid-tutoring/node_modules/@firebase/app/dist/index.node.cjs.js:440:39)
    at Object.serviceNamespace [as firestore] (/Users/joe/Desktop/scratch2/covid-tutoring/node_modules/@firebase/app/dist/index.node.cjs.js:420:45)
    at eval (webpack-internal:///./src/firebase/db.tsx:19:124)
    at Module../src/firebase/db.tsx (/Users/joe/Desktop/scratch2/covid-tutoring/.next/server/static/development/pages/_app.js:128:1)
    at __webpack_require__ (/Users/joe/Desktop/scratch2/covid-tutoring/.next/server/static/development/pages/_app.js:23:31)
    at eval (webpack-internal:///./src/firebase/user.tsx:12:61)
    at Module../src/firebase/user.tsx (/Users/joe/Desktop/scratch2/covid-tutoring/.next/server/static/development/pages/_app.js:152:1)
    at __webpack_require__ (/Users/joe/Desktop/scratch2/covid-tutoring/.next/server/static/development/pages/_app.js:23:31) {
  code: 'invalid-argument',
  toString: [Function]
}

Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ исправлСно Π² next@^9.4.5-canary.15 ! ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΈ Π΄Π°ΠΉΡ‚Π΅ Π½Π°ΠΌ Π·Π½Π°Ρ‚ΡŒ.

Бпасибо @Timer! πŸŽ‰ Π― тСстировал, ΠΈ исправлСниС Ρƒ мСня Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π― испытал это ΠΊΠ°ΠΊ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΈ Π² производствСнном Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π½Π° настраиваСмом сСрвСрС (постСпСнноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ страниц Π½Π° ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ сайтС). ^9.4.5-canary.15 исправил для мСня!

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, рСбята. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΊΠ°Π½Π°Ρ€Π΅Π΅Ρ‡Π½Ρ‹ΠΌ выпуском, ΠΎΠ½ устраняСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½ΠΎ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ всС Π΅Ρ‰Π΅ остаСтся. Π•ΡΡ‚ΡŒ Π»ΠΈ Ρƒ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°?

Π’ производствСнной сборкС отсутствуСт <style data-next-hide-fouc="true">body{display:none}</style> .

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, рСбята. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΊΠ°Π½Π°Ρ€Π΅Π΅Ρ‡Π½Ρ‹ΠΌ выпуском, ΠΎΠ½ устраняСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½ΠΎ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ всС Π΅Ρ‰Π΅ остаСтся. Π•ΡΡ‚ΡŒ Π»ΠΈ Ρƒ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°?

Π’ производствСнной сборкС отсутствуСт <style data-next-hide-fouc="true">body{display:none}</style> .

Π’ΠΎ ΠΆΠ΅ самоС здСсь, это другая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° это происходит Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅ ΠΈΠ»ΠΈ связанном с Π½ΠΈΠΌ, ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚?

Π’ΠΎ ΠΆΠ΅ самоС здСсь, это другая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° это происходит Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅ ΠΈΠ»ΠΈ связанном с Π½ΠΈΠΌ, ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚?

Для мСня эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° Π½Π΅ Π² производствСнном Ρ€Π΅ΠΆΠΈΠΌΠ΅. Учитывая это, я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ.

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, рСбята. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΊΠ°Π½Π°Ρ€Π΅Π΅Ρ‡Π½Ρ‹ΠΌ выпуском, ΠΎΠ½ устраняСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½ΠΎ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ всС Π΅Ρ‰Π΅ остаСтся. Π•ΡΡ‚ΡŒ Π»ΠΈ Ρƒ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°?

Π’ производствСнной сборкС отсутствуСт <style data-next-hide-fouc="true">body{display:none}</style> .

ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ смог ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅? Π’ выпускС Canary исправлСна β€‹β€‹Π½Π°ΡˆΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Π½ΠΎ производство всС Π΅Ρ‰Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π—Π½Π°Ρ‡ΠΈΡ‚, ΠΊΠ°Π½Π°Ρ€Π΅ΠΉΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ послСднСй вСрсиСй ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ?

Π”Π°, @jimmynames ,

Π­Ρ‚ΠΎ исправлСниС Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Next.js 9.5.0 ΠΈ 9.5.1 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅ (ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ сСрвСру Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ)!

А ΠΊΠ°ΠΊ насчСт производства? Π― всС Π΅Ρ‰Π΅ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽ FOUC с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом StyledComponents + Material

ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ нашСл Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для этого?

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ