Что такое FOUC (Flash of Unstyled Content) и почему он возникает

«Что такое FOUC (Flash of Unstyled Content) и почему он возникает» — вопрос из категории CSS, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

FOUC возникает из-за порядка загрузки и обработки ресурсов. Даже если стили в одном файле, браузер может начать рендерить DOM до полной загрузки CSS. Это особенно заметно при:

  1. Большом CSS-файле с медленной загрузкой
  2. Использовании @import внутри CSS
  3. Отсутствии предзагрузки (<link rel="preload">)

Пример плохого подхода:

<head>
  <!-- Стиль загружается долго -->
  <link href="big-styles.css" rel="stylesheet">
</head>

Решение - предзагрузка и правильное размещение:

<head>
  <link rel="preload" href="styles.css" as="style">
  <link href="styles.css" rel="stylesheet">
  <!-- Или инлайновые критические стили -->
  <style>/* critical CSS */</style>
</head>

Также помогает минификация CSS и HTTP/2 для быстрой доставки.