Back

Что нового в Preact в 2026 году?

Что нового в Preact в 2026 году?

Если вы рассматриваете Preact для производственного проекта в 2026 году, ситуация изменилась. С учетом критического патча безопасности, бета-версии Preact 11 и значительных изменений в экосистеме, вам необходима практическая информация перед принятием решений.

Ключевые выводы

  • Немедленно примените патч безопасности от января 2026 года ко всем проектам на Preact 10.x для предотвращения небезопасной инъекции VNode и потенциальных проблем с XSS.
  • Бета-версия Preact 11 вводит Hydration 2.0 и Object.is для зависимостей хуков, но пока не готова к production.
  • Используйте Vite вместо preact-cli для новых проектов и выбирайте preact-iso вместо preact-router для маршрутизации.
  • Слой совместимости preact/compat работает с большинством библиотек React, но пока не поддерживает функции React 19, такие как хук use().

Патч безопасности от января 2026 года

В январе 2026 года Preact выпустил исправление безопасности, устраняющее уязвимость строгого равенства конструктора VNode (исправлено в релизах 10.26.10 / 10.27.3 / 10.28.2 на GitHub). Это изменение гарантирует, что внутренне принимаются только реальные экземпляры VNode, созданные Preact.

Ранее специально созданные простые объекты (например, из JSON-ввода) могли быть приняты за VNode, что потенциально открывало векторы атак через небезопасную инъекцию DOM и XSS в крайних случаях. Если вы используете Preact 10.x, обновитесь немедленно — исправление обратно совместимо и не требует изменений в коде.

Бета-версия Preact 11: что на самом деле меняется

Бета-версия Preact 11 вводит значимые обновления, хотя пока не является стабильной. Не планируйте производственные миграции до выхода финального релиза.

Hydration 2.0

Наиболее значительное изменение — это Hydration 2.0. Ранее компоненты, приостанавливающиеся во время гидратации, должны были возвращать ровно один DOM-узел. Preact 11 снимает это ограничение — компоненты теперь могут возвращать ноль или несколько узлов:

function LazyAnalytics() {
  // Допустимо в Preact 11: возвращает null
  return null
}

function MultipleElements() {
  // Допустимо в Preact 11: возвращает фрагмент с несколькими дочерними элементами
  return (
    <>
      <p>First</p>
      <p>Second</p>
    </>
  )
}

Это обеспечивает более гибкие паттерны SSR и упрощает дизайн компонентов для асинхронных границ.

Равенство зависимостей хуков

Preact 11 переключает проверку зависимостей хуков с нестрогого равенства на Object.is. Это исправляет крайние случаи со сравнениями NaN в useEffect, useMemo и useCallback. Если вы ранее обходили обработку NaN, эти обходные пути становятся ненужными.

Улучшения обработки ref

Preact 11 улучшает обработку ref для функциональных компонентов, снижая необходимость в явном forwardRef во многих сценариях и более тесно согласуясь с современным поведением React. Точная поверхность API все еще развивается в бета-версии, поэтому авторам библиотек следует рассматривать это как предварительное до стабильного релиза.

Критические изменения, которые следует отметить

  • Поддержка устаревших браузеров (включая IE11) полностью удалена.
  • Некоторые устаревшие поведения, такие как обработка defaultProps и автоматическое добавление суффикса px, теперь ограничены preact/compat.

Инструменты Preact 2026: изменения в экосистеме

История инструментов существенно изменилась. Понимание этих изменений предотвращает строительство на устаревших основах.

Vite заменяет preact-cli

preact-cli больше не является рекомендуемым инструментом для создания проектов и практически не поддерживается. Новые проекты должны использовать Vite с пресетом Preact. Vite предлагает более быструю сборку, лучший HMR и активную поддержку.

preact-iso вместо preact-router

preact-router застопорился в развитии. Для новых приложений рекомендуется preact-iso. Он легче, активно поддерживается и разработан для современных паттернов Preact.

Signals: опциональное управление состоянием

Preact Signals предоставляет реактивное управление состоянием как официальную библиотеку. Это не часть ядра Preact — вы подключаете её явно. Signals хорошо работают для детальной реактивности, но не требуются для типичных приложений.

Совместимость Preact и React в 2026 году

Слой совместимости preact/compat обеспечивает хорошее покрытие для запуска библиотек React, но пробелы остаются. Функции React 19, такие как хук use(), пока не поддерживаются. Если ваш проект зависит от передовых API React, проверьте совместимость перед принятием решения.

Для большинства библиотек React — маршрутизации, управления состоянием, UI-компонентов — preact/compat работает надежно. Бета-версия Preact 11 улучшает это дальше, усиливая поведенческую совместимость в таких областях, как обработка ref.

Когда Preact имеет смысл

Preact остается привлекательным для сред с ограничениями по размеру бандла. Обновление API Shopify 2025-10 требует Preact для UI-расширений со строгим лимитом в 64 КБ. Аналогичные ограничения существуют во встраиваемых виджетах, PWA и критичных по производительности целевых страницах.

Если размер бандла не является основной проблемой, и вам нужна полная совместимость с React 19, сам React может быть проще.

Практические рекомендации

Для обновлений Preact 2026 вот что нужно сделать сейчас:

  1. Примените патч безопасности от января 2026 года ко всем проектам на Preact 10.x
  2. Используйте Vite для создания новых проектов
  3. Выбирайте preact-iso для маршрутизации в новых приложениях
  4. Подождите с Preact 11 для production — следите за бета-версией, но пока не мигрируйте
  5. Протестируйте preact/compat с вашими конкретными зависимостями React перед принятием решения

Заключение

Preact остается надежным выбором для производственной работы, чувствительной к размеру. Экосистема созревает с более четкими рекомендациями по инструментам и улучшенной совместимостью с React. Примените патч безопасности немедленно, используйте Vite и preact-iso для новых проектов и следите за бета-версией Preact 11, не торопясь с миграцией. С текущей информацией вы можете избежать устаревших инструментов и понять реальные границы совместимости.

Часто задаваемые вопросы

Да, вы можете мигрировать существующие проекты preact-cli на Vite. Создайте новый проект Vite с пресетом Preact, скопируйте исходные файлы и обновите скрипты сборки. Большинство конфигураций переносятся напрямую, хотя вам может потребоваться настроить псевдонимы путей и обработку переменных окружения в соответствии с соглашениями Vite.

Нет, Preact Signals полностью опционален. Вы можете продолжать использовать useState, useReducer или внешние библиотеки управления состоянием, такие как Zustand или Redux. Signals предлагают преимущества детальной реактивности, но добавляют сложность. Оцените, нужен ли вашему приложению такой уровень оптимизации, прежде чем внедрять их.

Протестируйте библиотеку в среде разработки перед принятием решения. Установите библиотеку, настройте ваш бандлер на использование псевдонима react для preact/compat и проверьте работу основного функционала. Проверьте issues библиотеки на GitHub на предмет известных проблем совместимости с Preact. Библиотеки, использующие специфичные для React 19 API, такие как use(), работать не будут.

Начинайте новые проекты с Preact 10.x и патчем безопасности от января 2026 года. Бета-версия Preact 11 не готова к production, и миграция с 10.x на 11 должна быть простой после стабилизации. Строительство на проверенных инструментах сейчас избавляет от задержек, одновременно позиционируя вас для легкого обновления позже.

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay