Gravity UI UIKit — 1 000 звёзд на GitHub — Gravity UI — UI-кит от Яндекса набрал тысячу звёзд. Дизайн-система продолжает развиваться благодаря вкладу комьюнити — новые компоненты, багфиксы, документация.
Статьи, мнения, туториалы
CSS
CSS random(): генерация случайных значений прямо в стилях — Новая CSS-функция random() возвращает случайное значение между минимумом и максимумом с необязательным шагом. Ключевое слово element-scoped обеспечивает одинаковые значения у одного элемента при перерисовке. Демо — боке, падающие лепестки сакуры, перетаскиваемая стопка фото, случайная поэзия через if() и северное сияние. Уже работает в Safari 26.2+ и Chromium 148+ за флагом.
CSS price math: считаем скидку через attr() и calc() — Храните базовую цену и процент скидки в data-* атрибутах, затем через attr() и CSS-math вычисляйте итоговую стоимость и рисуйте зачёркнутую цену + новую. Не production-friendly для крупных компаний, но любопытный эксперимент.
Performance
WebSocket backpressure: как ws.send() без контроля приводит к OOM — Библиотека ws буферизует неотправленные фреймы в очереди, которая растёт линейно при медленных клиентах. Проверяйте bufferedAmount перед send(), используйте событие drain для возобновления отправки, задавайте жёсткие лимиты очереди через ws.terminate(). В продакшене 10k клиентов с bufferedAmount > 1 МБ каждый — процесс потребляет 10+ ГБ и падает.
Утечка памяти в for await…of: rejections в стримах — Необработанные rejections внутри асинхронного генератора или _read() приводят к зависанию итерации и неосвобождению памяти. Для стримов всегда вызывайте this.destroy(err) при ошибках. Используйте pipeline для автоматической обработки.