2 сентября 2026 г.
Связку clsx и tailwind-merge заменяет один пакет: cn от shadcn обещает ускорение в 30 раз
Замена связки clsx + tailwind-merge приезжает одной командой: `npx shadcn@latest migrate cn`.

shadcn
@shadcn
Мы открываем исходники `cn`, нового движка для склейки классов Tailwind и разбора конфликтов. Это drop-in замена tailwind-merge и clsx. Работает со всеми фреймворками, запускается где угодно и в 30 раз быстрее. Сделали @aidenybai и я. https://github.com/shadcn-ui/cn
· 214,5 тыс. просмотров
Первая загрузка страницы тратила 3,2 миллисекунды на разбор классов Tailwind. Авторы cn обещают 0,4.
cn делает работу связки clsx и tailwind-merge, которая стоит почти в каждом проекте на shadcn/ui: собирает строку классов и гасит конфликты между ними. Репозиторий открыли 31.08.2026 под лицензией MIT.
Как поставить. `npm i cn`, дальше `import { cn } from "cn"`. Готовый проект на shadcn/ui переезжает одной командой `npx shadcn@latest migrate cn`. Вручную это замена всего тела lib/utils.ts на `export { cn } from "cn"`.
Старые имена импортируются из нового пакета один в один: `twMerge` и `twJoin` работают как прежде, тонкая настройка переехала в `cn/config`. Сам пакет весит 26 KB, а для чистой склейки строк есть облегчённый `cn/lite`.
Tailwind v4 обязателен. Проектам на третьей версии авторы советуют остаться на tailwind-merge v2, а CLI требует Node 20+.
Замеры авторов. Типовой вызов компонента 320 наносекунд против 10, повторяющаяся строка 2,4 микросекунды против 14 наносекунд. На прогоне по 58 открытым репозиториям вышло среднее ускорение в 37 раз.
Минимальный бандл даёт билд-режим: команда `cn build` в скриптах predev и prebuild собирает таблицы классов заранее, без неё рантайм-конфиг тянет 15 KB. Классы, склеенные на лету вроде `"p-" + size`, сканер не видит, их перечисляют флагом `--safelist`.
Версия 0.2.0 вышла 01.09.2026, к следующему дню в реестре npm лежала уже 0.2.4, а репозиторий собрал 239 звёзд.
Первоисточник