TGViewer
SuperOleg dev notes SuperOleg dev notes @super_oleg_dev · 1.75K subscribers
Post #230 1.66K
Занимался сейчас оптимизацией времени старта @tramvai/cli, и самый популярный паттерн такой:
- снять CPU profile
- найти самые тяжелые CJS require вызовы
- если импортируемые пакеты не используются, заменить обычный import в начале файла на require(lib) по месту вызова

Буквально несколько тяжелых импортов зря занимали 500-1000ms на старте скрипта, очень эффективная и простая оптимизация, хоть и требует ручной работы + смешивать CJS + ESM.

Есть классный пропозал с defer import - https://github.com/tc39/proposal-defer-import-eval

Но проблема та же, что вручную надо определить, что нам требуется не сразу.

Плюс запустить это можно только на собранном через бандлер коде на данный момент - https://webpack.js.org/configuration/experiments/#experimentsdeferimport

Еще одна приятная оптимизация - замена require('date-fns') на require('date-fns/format'), минус 350ms - кажется бесполезный налог на жирный barrel файл - точку входа date-fns.

Следующий момент вдохновлен вебпаковским thread-loader, опишу сначала сам пайплайн dev сборки (трейс на вложенном изображении):
- наша cli запускает процессы сборки серверного и клиентского кода
- также она стартует воркер для фетча и запуска собранного server.js
- соответственно этот воркер простаивает зря все время пока собирается серверный код

Добавил на старте воркера прогрев самого тяжелого модуля - require('fastify') - итого минус 200ms на старт development сервера приложения.

Получаю большое удовольствие от такой работы, хоть теперь и не доверяю Chrome Devtools Performance как прежде :)
  • 👍 14
  • 🔥 5
More from @super_oleg_dev
  1. Sep 10, 2026Посмотреть на работу анимаций и скролла можно в нашей демке, основанной на примере Remix ф…
  2. Sep 10, 2026Далее, про скролл. В принципе для SPA-приложений это база, если при переходах на разные ст…
  3. Sep 10, 2026Раз уж меня прорвало, вспомню ещё один интересный кейс. Решали примерно в одно время две п…
  4. Sep 10, 2026Вместо тысячи слов, пример работы и сразу разметка, которая долетает в HTML - и наш механи…
  5. Sep 10, 2026Когда-то давно рассказывал про интеграцию стриминга и deferred загрузки данных в Tramvai -…
  6. Sep 7, 2026TIL, небольшой, но интересный кейс! Делал кастомный анализ бандла через Claude, пишет мне…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →