PPR (Частичное Предварительное Рендеринг) — это стратегия рендеринга Next.js, которая сочетает статические предварительно отрендеренные HTML-оболочки с динамическими потоковыми островами, обеспечивая быструю первую отрисовку и свежесть для каждого пользователя.
Введенная в Next.js как experimental.ppr = "incremental" в Next.js 14 и постепенно стабилизированная в Next.js 15 и 16, PPR работает, предварительно рендеря статические части страницы (заголовок, канонический, hreflang, JSON-LD, герой) и определяя динамические границы (значок корзины, недавно просмотренные, персонализированные рекомендации), обернутые в <Suspense>. Статическая оболочка мгновенно передается из кэша на краю; динамические острова передаются позже, часто в течение десятков миллисекунд.
Для электронной коммерции PPR особенно ценен, потому что критически важный для SEO контент (заголовок, канонический, структурированные данные) находится в статической оболочке и поступает до любого вызова к базе данных. Динамические острова обеспечивают опыт для каждого пользователя, не блокируя SEO-область.
PPR естественно сочетается с Компонентами Кэша (cacheComponents: true) — компоненты выбирают кэширование на уровне компонента, а PPR компонуёт статические и динамические части в единый поток.