Как уменьшить bundle size в React

Коротко. Split, lazy, аудит зависимостей.

Суть

Размер бандла — это не только «удалить lodash», а осознанные границы: что грузится на первом экране, что — по маршруту.

Ниже — практика без лишней теории: что делаю в реальных проектах (лендинги, визитки, MVP).

Анализ

Сначала rollup-plugin-visualizer — смотрю топ-5 модулей по весу.

Стратегия

  • lazy для страниц;
  • иконки — SVG, не библиотека;
  • графики — dynamic import.

Цель

Для лендинга держу JS первого экрана до ~150–200 KB gzip.

import { lazy, Suspense } from 'react'
const Prices = lazy(() => import('./pages/Prices'))
export function App() {
  return <Suspense fallback={<div className="p-8">Загрузка…</div>}><Prices /></Suspense>
}
build: { rollupOptions: { output: { manualChunks: { vendor: ['react', 'react-dom'] } } } }
import debounce from 'lodash/debounce'

Как уменьшить bundle size в React — не абстрактная «оптимизация ради галочки», а влияние на заявки: медленная страница режет конверсию сильнее, чем спорный оттенок кнопки. Разберём, что проверять в первую очередь.

Чеклист перед релизом

  • LCP: тяжёлый hero сжат (WebP/AVIF), критичный шрифт не блокирует отрисовку.
  • CLS: у картинок и embed заданы width/height или aspect-ratio.
  • INP: нет тяжёлых синхронных обработчиков на каждый input.
  • JS: code splitting, без лишних UI-kit на весь сайт.
  • Третьи стороны: метрика и чаты — после load или по согласию.

Гонитесь за метрикой в контексте устройства ЦА, а не только за зелёным Lighthouse на MacBook.

Типичные ошибки

Перегруз эффектами и библиотеками «на всякий случай»; отсутствие проверки на слабом интернете и старых телефонах; копирование чужого дизайна без адаптации под свою аудиторию; отсутствие явного CTA; ожидание, что «сайт сам продаст» без трафика и оффера.

Для коммерческих проектов отдельно болит размытое ТЗ и бесконечные правки без доплаты — лечится этапами и лимитом итераций.

Когда имеет смысл привлечь разработчика

Если нужен не шаблон, а связка дизайна, скорости, интеграций и сопровождения — проще обсудить задачу один раз, чем чинить конструктор полгода. Я беру лендинги, визитки и MVP под ключ; ориентиры по срокам и бюджету — на странице цен.

Читать дальше

Короткие ответы на частые вопросы

Это подойдёт моему бизнесу? Если вам нужен понятный сайт с заявкой или звонком — да; если десятки кабинетов и сложная логика — обсудим отдельный объём.

Что подготовить до старта? Тексты или тезисы, логотип, примеры конкурентов, доступы к домену и хостингу (если уже есть).

Как оценить результат? Скорость на мобилке, ясный CTA, отсутствие «битых» блоков и совпадение страницы с рекламой/поисковым запросом.

Итог по теме «Как уменьшить bundle size в React»

Сфокусируйтесь на сценарии пользователя, а не на количестве фич. Остальное — вопрос исполнения и дисциплины в проекте. Готов помочь с оценкой — контакты или Telegram из кнопки ниже.

Хотите обсудить похожую задачу для своего проекта — без обязаловки.

Написать в Telegram →