← к блогу

// перформанс

Таблица на 100k строк: с 8 секунд до <1с

Панель скоринга показывала до 100 000 лидов в одной таблице. На проде это превращалось в 5–8 секунд белого экрана при каждом открытии и фризы на скролле. Маркетологи ждали, нервничали и закрывали вкладку.

Где утекало время

Первая причина банальна: мы рендерили все строки сразу. Сто тысяч DOM-узлов — это десятки тысяч лейаут-пересчётов. Вторая — каждая ячейка тянула за собой тяжёлый форматтер и пересоздавала колбэки на каждый ререндер.

Самый быстрый рендер — тот, которого не было. Рисуем только то, что видно.

Что сделал

  • Виртуализация строк через react-window — в DOM живёт ~30 строк вместо 100k.
  • Мемоизация ячеек и стабильные ключи, чтобы React не пересоздавал поддеревья.
  • Дебаунс фильтров и перенос тяжёлых вычислений в Web Worker.

Итог — первый рендер за <1 секунду и плавный скролл на 60 fps. Маркетологи перестали замечать таблицу: она просто работает.

Есть похожая задача?

Расскажите — вернусь с оценкой в тот же день.

Обсудить проект

// читать дальше

Кадр из клипа про то, почему ИИ-агенты рисуют серые интерфейсы
0:36
// видео

Почему ИИ-агенты рисуют одинаково серые интерфейсы

Обложка статьи: «Claude Design в проде»
// дизайн6 мин

Как использовать Claude Design в проде

Я разработчик, дизайнер из меня никакой. Но сайт, который ты читаешь, выглядит как надо — дизайн я собрал с Claude, руками не рисовал. Показываю весь путь и артефакты, которые реально пошли в работу.

Обложка статьи: «1 блог, 2 сайта, 1 сервис»
// архитектура8 мин

Два сайта — один блог: как я не уронил SEO, сливая контент в один сервис

Слил блоги двух сайтов в один сервис на Hono и Turso. База оказалась простой частью, вся коварность — в доставке: контент должен приезжать на билде, потому что при фетче на клиенте превью-боты ловят пустую страницу.