Модульные границы, error boundaries, журналирование, telemetry, feature flags, i18n, CI/CD и эксплуатация фронтенда.
Production frontend — распределённый клиент: он работает на неизвестных устройствах, переживает частичные deploy и должен объяснять свои сбои.
Вы проведёте module boundaries, встроите safe telemetry, rollout/rollback и диагностику ошибок по версии и correlation id.
До начала достаточно routing, security, performance, testing и server/client architecture. В конце должен появиться не конспект, а production readiness review приложения с observability dashboard, flags и release runbook.
App composition зависит от routes/features/shared; shared не импортирует feature. Каждый slice экспортирует public API, deep imports запрещает lint/boundaries. Границы соответствуют ownership и изменчивости, не создают index file на каждый div.
Рабочая проверка. Постройте graph и найдите cycles.
Типичная поломка. shared/utils импортирует feature store.
Разделяйте validation, unauthorized, not-found, transient network, invariant bug и chunk load/version skew. Пользователь получает действие; telemetry — code/cause/release. Route/component boundaries ограничивают blast radius. Event/action errors идут по result flow.
Рабочая проверка. Составьте error matrix.
Типичная поломка. Один catch “что-то пошло не так” без code.
Frontend event содержит name, version, route template, duration, outcome и allowlisted dimensions. Не отправляйте raw URL query, form values, tokens и DOM. Traceparent/correlation id связывает client→BFF→service. Sampling и rate limits защищают стоимость.
Рабочая проверка. Добавьте trace id к failed save.
Типичная поломка. Логировать FormData целиком.
Собирайте LCP/INP/CLS с route/release/device coarse dimensions и sampling. Добавляйте product latency: search-to-result, save confirmation. Не отправляйте high-cardinality raw URLs. Dashboard разделяет frontend, network и backend contributors.
Рабочая проверка. Определите SLO interaction.
Типичная поломка. Только average page load.
Flag evaluation имеет default и outage policy, target cohorts и audit. Код обеих ветвей должен работать с API/schema во время rollout. Flag не хранит authorization. После стабилизации удалите старую ветвь и flag debt.
Рабочая проверка. Rollout 5→25→100% с kill switch.
Типичная поломка. В flag положить secret permission.
Тексты, plurals, dates/numbers/currency форматируются locale-aware через message catalog/Intl. Не конкатенируйте предложение из fragments: порядок меняется. Layout выдерживает expansion/RTL, timezone явно. Message keys versioned и extracted.
Рабочая проверка. Добавьте plural и RTL screenshot.
Типичная поломка. count + " товара".
Build once, promote same immutable artifact. Env-specific runtime config не должен требовать непроверенного rebuild или раскрывать secrets. Assets content-hashed и долго кэшируются; HTML short/no-cache с актуальными links. Deploy поддерживает backward-compatible API и rollback.
Рабочая проверка. Смоделируйте old tab после deploy.
Типичная поломка. Удалить старые chunks мгновенно.
Runbook содержит signal, severity, dashboards, recent releases/flags, mitigation, rollback и verification. Frontend incident может быть CDN, asset, API, browser-specific или third party. Сначала уменьшите impact, сохраните evidence, затем root cause. Postmortem добавляет regression guard.
Рабочая проверка. Проведите game day chunk outage.
Типичная поломка. Отлаживать только локально без release/user context.
Разделите монолит на app/routes/features/shared, введите public APIs и import rules. Добавьте Error Boundary telemetry с release/user-safe context, Web Vitals, feature flag rollout, i18n formatting, CI artifact и rollback checklist.
Критерий завершения: dependency graph направлен, PII не уходит в telemetry, инцидент связывается с release/API request, feature можно отключить без нового deploy. Сначала зафиксируйте наблюдаемое поведение тестом или измерением, затем меняйте реализацию.
Вопросы ещё не добавлены
Вопросы для этой подтемы ещё не добавлены.
Далее: Внутреннее устройство и миграция