Hero

Создаём с Next.js

Всё о Next.js и современной веб-разработке

  • Frontend Дайджест: Октябрь - Декабрь 2025

    25 декабря 2025 г.

    1. Критические уязвимости в React Server Components (React2Shell)

    Даты: 3-11 декабря 2025
    Ссылки: React Advisory | Next.js Security Update | CVE Details

    Серия критических уязвимостей с оценкой CVSS 10.0 обнаружена в React Server Components:

    • CVE-2025-55182 – Remote Code Execution через десериализацию RSC payloads, позволяющая выполнять произвольный JavaScript на сервере без аутентификации
    • CVE-2025-55184 / CVE-2025-67779 – Denial of Service через бесконечный цикл при десериализации
    • CVE-2025-55183 – утечка исходного кода Server Actions

    Затронутые версии:

    • React: 19.0.0 - 19.2.2 (патчи: 19.0.3, 19.1.4, 19.2.3)
    • Next.js: 13.x, 14.x, 15.x, 16.x (патчи: 16.0.7, 15.5.7 и др.)
    • Вся экосистема RSC: Vite, Parcel, React Router, RedwoodJS, Waku

    Масштаб атаки:
    За 48 часов после публикации CVE кампания PCPCat скомпрометировала 59,128 серверов (64.6% успеха), похищая Credentials (учетные данные) из .env, SSH-ключи, AWS configs.

    Действия:
    Немедленное обновление до патченных версий через npx fix-react2shell-next + ротация всех секретов.


    2. Next.js 16 + 16.1: Революция кеширования и Turbopack на продакшене

    Релиз: 21 октября 2025 (16.0) | 18 декабря 2025 (16.1)
    Ссылки: Next.js 16 | Next.js 16.1

    Next.js 16 вводит фундаментальные архитектурные изменения:

    Компоненты кеширования (Cache Components):

    • Новая модель кеширования с директивой use cache – явное управление вместо неявного
    • Интеграция с Partial Pre-Rendering (PPR) для мгновенной навигации
    • Компилятор автоматически генерирует cache keys

    Turbopack (стабильный):

    • Дефолтный бандлер с ускорением Fast Refresh 5-10x и сборки 2-5x
    • 16.1: File System Caching стабилен – перезапуск dev server до 14x быстрее (react.dev: 3.7s → 380ms)
    • Bundle Analyzer (экспериментальный) – интерактивный инструмент для оптимизации бандлов с трассировкой импортов

    Архитектурные изменения:

    • proxy.ts заменяет middleware.ts – явное определение сетевых границ
    • React Compiler Support (стабильная поддержка) – автоматическая мемоизация без ручного useMemo/useCallback
    • Устранение дублирования layout при предзагрузке – общий layout скачивается один раз, не 50

    3. TypeScript 5.8: Улучшенная безопасность типов и прямое выполнение в Node.js

    Релиз: Февраль 2025
    Ссылки: TypeScript 5.8 | Release Notes

    TypeScript 5.8 усиливает type safety и упрощает интероперабельность с Node.js:

    Checked Returns для условных выражений:

    function getUrlObject(urlString: string): URL {
      return cache.has(urlString)
        ? cache.get(urlString)  // ✅ проверяется тип возвращаемого значения
        : urlString;            // ❌ Error: Type 'string' is not assignable to 'URL'
    }
    

    --erasableSyntaxOnly флаг:

    • Поддержка прямого выполнения TypeScript в Node.js 23.6+ через --experimental-strip-types
    • Компилятор блокирует не-erasable синтаксис (enums, namespaces, parameter properties)

    require() для ESM модулей:

    • Флаг --module nodenext теперь поддерживает require("esm") из CommonJS
    • Решает проблему dual-publishing для библиотек

    Оптимизации производительности:

    • Избежание аллокаций массивов при нормализации путей
    • Ускорение watch mode и editor scenarios для больших проектов

    TypeScript 5.9 (бета, релиз июль 2025) продолжит улучшения conditional types.


    4. CSS 2025: Customizable Select, if() Function и Invoker Commands

    Ссылки: CSS Wrapped 2025 | Modern CSS 2025 | State of CSS 2025

    2025 год приносит революционные CSS-возможности, снижающие зависимость от JavaScript:

    Customizable Select (только Chrome – экспериментальная функция):

    select,
    ::picker(select) {
        appearance: base-select;
    }
    

    Полностью стилизуемые <select> меню – опция изменения дефолтного рендеринга ОС.

    if() Function (Chrome):

    background: if(
        style(--theme: dark): black; style(--theme: light): white; else: gray;
    );
    

    Условная установка свойств на основе кастомных свойств на том же элементе (в отличие от container queries).

    Invoker Commands API:

    <button commandfor="myDialog" command="show-modal">Open</button>
    <dialog id="myDialog">Hello!</dialog>
    

    Работа с <dialog> и <popover> без JavaScript – браузер обрабатывает взаимодействия нативно.

    field-sizing: content: Автоматический рост <textarea> под контент без JavaScript – давно ожидаемая функция.

    sibling-count() / sibling-index(): Получение индекса элемента среди соседей напрямую в CSS – ранее требовало хардкода в HTML или JS.

    Custom CSS Functions: Возможность создавать собственные CSS-функции – кардинальное расширение языка.

    Лидеры по использованию (State of CSS 2025):

    • :has() – #1 most-used и most-loved
    • subgrid – #2 most-loved
    • aspect-ratio – #2 usage, #3 sentiment

    5. React 19.2: View Transitions, useEffectEvent() и стабилизация экосистемы

    Релиз: Октябрь 2025
    Ссылки: React 19.0-19.2 | React 19 Overview

    React 19.2 – третий релиз за год, фокусирующийся на доработке:

    View Transitions API: Нативная поддержка плавных переходов между состояниями UI с анимациями на уровне браузера.

    useEffectEvent() (стабильный): Разделение реактивной логики от event-логики – упрощение обработки событий без повторных рендерингов.

    <Activity/> компонент: Новый примитив для управления индикаторами загрузки и активности приложения.

    Owner Stack (только для разработки, 19.1): Помогает отследить, откуда был отрендерен компонент – критично для дебага сложных деревьев.

    React 19.0 (декабрь 2024):

    • Server Components (стабильный)
    • Actions + useActionState, useFormStatus, useOptimistic
    • React Compiler (стабильный) – автоматическая мемоизация
    • ref как prop для function components (без forwardRef)

    Критично: Экосистема переходит с боем из-за breaking changes в async params (Next.js 15), но выигрыш в производительности оправдывает миграцию.


    Итоги квартала: Фронтенд-экосистема пережила турбулентный период с критическими уязвимостями React2Shell, но одновременно получила мощнейшие инструменты для создания производительных приложений. Next.js 16 с Turbopack и новым кешированием, TypeScript 5.8 с прямым выполнением, CSS с нативными диалогами и условными функциями – всё это позволяет писать меньше JavaScript и больше декларативного кода.

Актуальные посты

  • revalidatePath в Next.js

    Практическое руководство по revalidatePath в Next.js: как правильно инвалидировать кэш после мутаций данных, различия между type: "page" и type: "layout", и использование в Server Functions.

    Читать далее
  • Виды рендеринга в Next.js

    Основные методы рендеринга в Next.js 15 – SSG, SSR, ISR, CSR – с примерами, их влиянием на SEO и возможностями стриминга через React Server Components.

    Читать далее
  • Next.js 15.2

    Next.js 15.2 включает обновления для отладки ошибок, метаданных, Turbopack и других аспектов

    Читать далее
  • Composable Caching

    Next.js представил Composable Caching – новый подход к кэшированию, который упрощает управление кэшем на разных уровнях приложения, от данных до компонентов и страниц.

    Читать далее
Все посты

© 2026 Next.js Craft