NETROOM
Хуки для серверного состояния: кэш по ключам, дедупликация, ретраи с бэкоффом, ревалидация по фокусу, оптимистичные мутации, бесконечные списки, префетч. Главная мысль - данные с сервера не нужно класть в глобальный стор руками, кэш сам разбирается со свежестью и гонками. От SWR отличается глубиной: точная инвалидация, отмена, персист кэша, серьёзные devtools. Не работает в Server Components - это клиентские хуки, для RSC берите fetch и prefetch с гидрацией. React 18-19, MIT.
Стор на пару килобайт: create() возвращает хук, компонент выбирает из него нужный кусок селектором и перерисовывается только на нём. Ни провайдера, ни экшенов, ни редьюсеров - обычные функции, меняющие состояние через set. Из pmndrs, нулевые зависимости, работает и вне React. Middleware добавляют persist, immer и Redux DevTools. React 18+ из-за useSyncExternalStore. Серверные данные это не заменит - там TanStack Query, а zustand держит клиентское состояние. MIT.
Формы на неконтролируемых инпутах: значения живут в ref, а не в state, поэтому набор текста не перерисовывает дерево. register или Controller для чужих компонентов, useFieldArray для динамических списков, встроенный трекинг dirty/touched. Ноль зависимостей, React 16.8-19, MIT, релизы каждые пару недель. Схемы подключаются отдельным пакетом @hookform/resolvers - zod, yup, valibot, arktype. Компонент клиентский, в RSC форму выносите за 'use client'.
Utility-first CSS: стили пишутся классами прямо в разметке, дизайн-токены живут в одном месте. Ветка 4 переехала на движок Oxide на Rust и Lightning CSS - сборка в разы быстрее, а конфиг теперь CSS-первый: `@import "tailwindcss"` и блок `@theme` вместо tailwind.config.js. Контент сканируется автоматически, отдельный PostCSS-плагин не обязателен. Цена: нужны свежие браузеры (Safari 16.4+, Chrome 111+) и разметка распухает классами. MIT, развивается активно.
Тест-раннер, живущий на конфиге вашего Vite: те же alias, плагины и трансформы, поэтому настраивать нечего. API совместим с Jest (describe, it, expect), миграция обычно сводится к смене импортов и глобалов. Умеет watch по графу зависимостей, покрытие через v8, снапшоты, моки модулей и браузерный режим на Playwright. Для React берите в паре с @testing-library/react и jsdom или happy-dom. Четвёртая версия требует Vite 6-8. MIT, релизы выходят чуть ли не еженедельно.
Готовые компоненты Adobe Spectrum: собраны на React Aria и React Stately, поэтому доступность, клавиатура и локализация продуманы лучше, чем почти везде. Обратная сторона - вы получаете фирменный вид Adobe, перекрашивать его тяжело. Если нужна та же база, но со своими стилями, берите react-aria-components из этого же репозитория. Пакет активно релизится, лицензия Apache-2.0, весит прилично - тащите только те компоненты, что реально рендерите.
GraphQL-клиент с нормализованным кэшем: одна мутация обновляет все компоненты, которые читают те же сущности. Четвёртая версия перебрала внутренности - теперь в peer-зависимостях rxjs, поддерживаются graphql 16 и 17, React с 17 по 19. Берите, если схема большая и кэш реально нужен. Для пары запросов это перебор: urql легче, а graphql-request вместе с TanStack Query проще в отладке. MIT, релизы выходят часто.
UI-кит от ByteDance - прямой сосед antd по охвату: те же таблицы, формы, календари, только другая типографика и своя система токенов. Плюс в том, что тему можно собрать визуально в Arco Design Lab и подключить пакетом. Минус - экосистема и англоязычная документация заметно тоньше, чем у antd, ответы в обсуждениях часто на китайском. Релизы идут, но неспешно, ветка 2.x тянется годами. MIT. Если команда не читает по-китайски, это стоит учесть заранее.
Набор доступных примитивов без стилей: комбобокс, меню, диалог, таб-панель, тултип. От Radix отличается тем, что всё лежит в одном пакете и собирается из мелких кусков - state-хук отдельно, компоненты отдельно, поэтому нестандартные виджеты собираются проще. Автор релизит почти каждую неделю, но версия до сих пор 0.4.x: API иногда меняется, версию лучше пинить. Одна зависимость, MIT. Тултипы и комбобокс тут заметно гибче, чем у большинства соседей, но и кода на сборку компонента уходит больше.
Headless-компоненты на конечных автоматах Zag.js от команды Chakra: логика описана состояниями, а не набором useEffect, поэтому поведение предсказуемое и одинаковое в React, Vue и Solid. На нём построены Chakra 3 и Park UI. Учтите: пакет тянет около семидесяти мелких зависимостей - на каждый компонент свой автомат. Стилей нет вообще, всё рисуете сами. Развивается быстро, релизы почти ежедневные, MIT.
Ядро Auth.js без привязки к фреймворку: логика OAuth-провайдеров, колбэки, сессии и JWT. Напрямую его ставят редко - в Next.js вам нужен next-auth 5, в SvelteKit @auth/sveltekit, а @auth/core они тянут внутри себя. Прямая установка оправдана, если пишете свой адаптер под Hono, Express или Remix. Версия всё ещё 0.x, минорки ломают API, лицензия ISC. Читайте changelog перед каждым обновлением. Документация лаконичная, часть ответов приходится искать прямо в исходниках.
Адаптер, который складывает пользователей, аккаунты, сессии и токены Auth.js в вашу базу через Prisma. Нужен только при database-сессиях: если вы сидите на JWT, адаптер не требуется вовсе. Схему придётся завести ровно ту, что описана в документации - четыре модели с конкретными полями, иначе посыпятся связи. Работает в паре с @auth/core, версии двигаются синхронно с ним, обновляйте оба сразу. ISC, одна зависимость.
Внимание: пакет переименован. Ставьте @base-ui/react - там стабильная ветка 1.x, а старое имя застряло на 1.0.0-rc.0 и помечено deprecated. Сама библиотека - headless-примитивы от авторов MUI, Radix и Floating UI: диалоги, меню, селекты, поповеры без единой строчки стилей, зато с проработанной доступностью и фокус-менеджментом. Хороший фундамент, если строите свою дизайн-систему поверх Tailwind. MIT.
Форматтер и линтер в одном бинарнике на Rust: там, где ESLint с плагинами и Prettier думают секунды, Biome укладывается в десятки миллисекунд. Ставится одним пакетом, конфиг - один biome.json, есть команды миграции с ESLint и Prettier. Вторая мажорка добавила правила, учитывающие типы, без запуска tsc. Ограничение - плагинов у экосистемы ESLint несопоставимо больше, экзотические правила придётся отпустить. MIT или Apache-2.0.
Блочный редактор в духе Notion поверх ProseMirror и Tiptap: слэш-меню, перетаскивание блоков, вложенные списки, таблицы, комментарии. В отличие от голого Tiptap здесь уже есть готовый интерфейс и стили - страницу с редактором собираешь за вечер. Смотрите на лицензию: ядро под MPL-2.0, а часть продвинутых пакетов идёт по коммерческой схеме. Развивается быстро, минорки выходят часто и иногда ломают кастомные блоки.
UI-кит Palantir под плотные интерфейсы с данными: таблицы, деревья, поповеры, хоткеи, тёмная тема из коробки. Рассчитан на десктопные приложения в браузере, а не на лендинги - компоненты компактные, отступов мало. Стили подключаются отдельным CSS-файлом, тема настраивается через Sass-переменные, а не через CSS-переменные и Tailwind. Шестая мажорка живая, релизы идут, Apache-2.0. Иконки ставятся отдельным пакетом, а таблица живёт в @blueprintjs/table.
Компонентный кит с человеческим DX: пропсы вместо классов, токены, тёмная тема, приличная доступность. Третья версия - фактически другая библиотека: поведение переехало на автоматы Ark UI, стилевой движок переписан, вместо ChakraProvider с объектом темы теперь createSystem, а компоненты стали составными. Миграция с двойки - это работа на дни, а не на час. В peer-зависимостях остаётся @emotion/react. Релизится активно, MIT.
Clerk под App Router: clerkMiddleware защищает маршруты, auth() достаёт сессию прямо в серверных компонентах и route handlers, формы входа рендерятся и на сервере. Седьмая ветка обновляется буквально еженедельно, поддержка живая. Взамен - платная подписка после бесплатного лимита, пользователи и организации лежат на стороне сервиса, а часть логики роутинга завязана на их middleware. Нужен полный контроль над данными - смотрите Auth.js.
Внимание: пакет помечен deprecated, преемник называется @clerk/react и живёт на ветке 6.x. Сам Clerk - платный сервис аутентификации с готовыми компонентами: SignIn, UserButton, переключатель организаций, MFA и управление сессиями подключаются за вечер. Дальше бесплатного лимита по активным пользователям начинается тариф, а пользователи хранятся у вендора - переезд потом небесплатный. Для Next.js ставьте @clerk/nextjs.
Проверяет сообщения коммитов по правилам - обычно по Conventional Commits через @commitlint/config-conventional. Ставится в хук commit-msg рядом с husky или lefthook и не пускает мимо формата, а дальше на этих же префиксах строится автогенерация CHANGELOG и semantic-release. Смысл появляется в команде: в одиночном проекте это лишний барьер. Развивается активно, 21-я мажорка свежая, MIT. Правила гибкие: длина заголовка, регистр, список разрешённых scope и типов.
Превращает JSON поля Rich Text из Contentful в React-дерево. Ценность - в переопределениях: любой узел, марк или встроенную запись можно отрендерить своим компонентом, поэтому заголовки, ссылки и эмбеды не приходится потом чинить регулярками. Полезен ровно в одном случае - если у вас Contentful; для Markdown берите react-markdown или MDX. Обновляется вместе с остальным SDK, MIT, одна зависимость. Свои обработчики узлов удобно вынести в один модуль и переиспользовать на всех страницах.
Drag and drop в обход HTML5 Drag and Drop API: своя система сенсоров - мышь, тач, клавиатура, - поэтому таскать можно с телефона и с клавиатуры, а скринридер понимает, что происходит. Умеет не только списки: сетки, канбан, вложенные зоны, сортировка через @dnd-kit/sortable. Ядро не привязано к конкретному рендеру, React 16.8+, около 10 КБ. Ядро v6 не обновлялось с конца 2024-го - автор пишет следующее поколение @dnd-kit/react, - но версия стабильна и широко в проде.
CSS-in-JS с рантаймом: пишете стили в JS через css-проп или styled, классы генерируются в браузере. Динамические темы и стили от пропсов - его сильная сторона, на нём стоит MUI. Слабая сторона теперь решающая: рантайм не дружит с Server Components, любой компонент со стилями придётся помечать use client, а в бандл едет сам движок. Для нового проекта разумнее Tailwind, CSS Modules или zero-runtime вроде vanilla-extract. Пакет стабилен, но релизы редкие, React 16.8+, MIT.
Прямой наследник Popper.js от того же автора, переписанный с нуля. Считает, где разместить тултип, поповер или меню, чтобы не вылезло за экран: flip, shift, размеры, стрелка, виртуальные элементы. React-версия добавляет поверх позиционирования интеракции - хуки на hover, click, dismiss, focus, роли и aria. Никакой вёрстки и стилей не навязывает, поэтому на нём стоят Radix и половина headless-китов. Берите, когда готовый Popover не подходит и нужен свой. React 17+, MIT.
Fluent UI v9 от Microsoft - дизайн-система Windows, Office и Teams в виде React-компонентов. Берите, если делаете надстройку для Teams или продукт, который должен выглядеть как майкрософтовский; во всех остальных случаях он навяжет чужой визуальный язык. Стили на Griffel, это атомарный CSS-in-JS со своими требованиями к SSR-настройке. Пакет тяжёлый: шесть десятков внутренних зависимостей. Доступность проработана всерьёз, поддержка от React 16.14 до 19, релизы еженедельные. MIT.
Таблица, которая рисуется на canvas, а не в DOM - отсюда миллионы строк без тормозов, редактирование ячеек, копипаста из Excel, заморозка колонок, кастомные рендереры. Цена подхода: доступности почти нет, скринридер и Ctrl+F по странице не работают, стилизовать привычным CSS не выйдет. Только клиент, никакого SSR. Заявленные peer-зависимости упираются в React 18, с 19-м придётся ставить с override. Релизов не было с начала 2024-го, но проект не брошен. MIT.
Компоненты без единой строчки стилей от команды Tailwind: Dialog, Menu, Combobox, Listbox, Popover, Tabs, Switch, Disclosure. Поведение, фокус, клавиатура и aria уже внутри, внешний вид целиком ваш - удобно, когда дизайн свой, а не готовая тема. Набор заметно меньше, чем у Radix: нет тултипа, слайдера, аккордеона в привычном виде, - зато API проще и родные переходы через data-атрибуты. Только клиент, в Next.js нужен use client. React 18 и 19, MIT.
Форк react-beautiful-dnd, подхваченный сообществом после того, как Atlassian бросила оригинал. API совпадает один в один, миграция - замена импорта. Сильная сторона прежняя: лучшие в классе анимации перетаскивания списков и внятная работа с клавиатурой и скринридером. Ограничение тоже прежнее - только списки, ни сеток, ни свободного перетаскивания, и весит около 30 КБ. Нужны канбан-доски посложнее или мобильный тач - смотрите dnd-kit. React 18 и 19, Apache-2.0.
Бывший NextUI, переименованный и переписанный. Третья версия стоит на React Aria Components, поэтому доступность и клавиатура достались от Adobe, а стили - на Tailwind 4 с настраиваемыми токенами тем. Компонентов около полусотни, выглядят современно из коробки, тёмная тема встроена. Требования жёсткие: React 19 и Tailwind 4, ниже не заведётся. Против shadcn/ui это обычная npm-зависимость, а не копипаста в свой репозиторий - обновлять проще, править под себя сложнее. MIT.