Проблемы во фронтовых проектах и их решения


Подсобрал список типовых проблем и их решений, с которыми неизбежно сталкиваются разросшиеся фронтовые монорепы или семейства проектов, если заранее не позаботиться о решениях.

⚠️ Неудобная локальная разработка, зоопарк технологий/подходов, сложно вкатываться в существующие проекты.

Решения:

  1. Переход на единую типовую сборку (Vite, Webpack…) с общим конфигом, общий инструментарий для монореп (workspaces, turbo, lerna…).
  2. Создание единого шаблона для старта нового приложения.
  3. Выработка единообразного стека:
    1. система: node/bun, TS, фреймворк (React, Vue, Next…)
    2. зависимости:
      • пакетный менеджер (yarn/npm/pnpm, для консистентности лок-файлов)
      • стейт-менеджер (или его отсутствие => Tanstack Query)
      • роутер
      • инструменты для работы с формами (хуки, валидация, маски для инпутов…) и валидатор схем
      • стилизация (CSS Modules, SASS, Styled-подобные, ваниль), использование единообразного UI-kit (Storybook)
      • утилиты (работа с датами, общие либы типа lodash)
  4. Процесс регулярных обновлений зависимостей.
  5. Единообразная структура проекта/проектов, приведение к единому виду (FSD…).
  6. Архитектурные соглашения по выносу шаренных кусочков в микрофронты, связь между «отдельными кусочками» приложений в рамках общих приложений.
  7. Общий/стандартизированный CI/CD.
  8. Общий подход к проксированию запросов на бэк, к развёртыванию проекта локально.
  9. Общий код-стайл и линтинг (ESLint, Prettier, Biome…).
  10. Общий подход к логированию аналитики.

⚠️ Долгая разработка, необходимость частых ресерчей

Решения:

  1. Централизованное внедрение AI-инструментов для помощи в написании кода (выбор единых агентов, генерация вспомогательных артефактов типа claude.md)
  2. Создание бойлерплейта для документации и внедрение AI-генерации документации. Хранение документации в самих проектах и регулярная перегенерация.

⚠️ Дублирования кода, велосипеды

Решение:

  1. Вынос повторяющихся пакетов в шареное хранилище переиспользуемых решений, хостинг в приватном npm-реестре, поддержка.

⚠️ Большое количество багов, уязвимостей и неконтролируемый/плохой перф и UX

Решения:

  1. Внедрение мониторинга ошибок (Sentry), настройка алертов в чаты/дашбордов на ошибки (Grafana).
  2. Подключение измерения метрик перфа в рантайме у пользователей (Vitals, TTVC и подобные), а также на CI/CD («бюджет» на перф в пулреквестах).
  3. Интеграция в CI/CD инструментов для поиска уязвимостей в коде.
  4. Процесс регулярного пополнения и разгребания бэклога техдолга (баги, уязвимости, оптимизации).
  5. Внедрение среды для тестов/автотестов, написание/генерация юнит-тестов и e2e-тестов, регрессионное тестирование, запуск на CI/CD.
  6. Выработка плавил работы со статикой (картинки на CDN, автоматизированное сжатие, ленивая загрузка).

⚠️ Несогласованная командная работа

Решения:

  1. Использование контрактов (Open API) на бэке/фронте, кодогенерации типов и API-клиентов, клиент-серверных фреймворков (trpc).
  2. Внедрение автоматизации в код-ревью (автоназначение ревьюеров, выработка правил мерджа в master, AI-генерация описаний пулреквестов и ревью).
  3. Договорённости в единообразном именовании коммитов (conventional commits), веток, пулреквестов; единые подходы к организации дев/стейдж/релиз-веток; семантическое версионирование релизов.