Концепции, ценность и типичные сценарии клонирования — меньше кода.
Концепции, ценность и типичные сценарии клонирования — меньше кода.
Preparing Ring content
Preparing Ring content
Preparing Ring content
Воспользуйтесь фильтрами Founder / Developer в боковой панели документации. Эта страница замещает устаревшие вымышленные сведения (например, $2.8M дохода, выдуманные примеры отчетности, фиктивные SLA Lighthouse). Описанные паттерны подтверждены в файлах next.config.mjs, lib/cached-data.ts, components/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts и опыте продакшн-Docker.
Платформа Ring ориентирована на быструю первую отрисовку (по умолчанию серверные компоненты React 19), актуальные списки маркетплейса (теги кеша + синхронизация после мутаций) и измеряемый UX (сбор Core Web Vitals). Производительность — это задача деплоя: ограничения по времени сборки, ловушки SSR и инвалидирование кеша, а не только косметика фронтенда.
| Слой | Механизм | Где используется |
|---|---|---|
| Фреймворк | Next.js 16 App Router, cacheComponents: true | next.config.mjs |
| Кеш списков | unstable_cache + revalidateTag | lib/cached-data.ts |
| Дедупликация чтения | React.cache() для server reads | lib/services/firebase-service-manager.ts, actions |
| Read-after-write | 30 сек. in-process кеш сущностей | DatabaseService EntityCache |
| Тяжелый UI-клиент | dynamic(..., { ssr: false }) | components/docs/mdx-heavy-components.tsx |
| Блоки кода Docs | Серверный Shiki (highlightCodeToHtml) | components/docs/code.tsx |
| Изображения | next/image WebP/AVIF | next.config.mjs → images.formats |
| UX-метрики | useReportWebVitals → POST /api/analytics/web-vitals | components/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts |
| Hints ресурсов | prefetchDNS / preinit скрипты | contexts/app-context.tsx |
Медленные страницы opportunity и store прямо влияют на конверсию: пользователи бросают покупки, продавцы видят пустые дашборды, а уведомления AI выглядят «запаздывающими», даже если данные корректны.
Админ → Аналитика показывает медианы Web Vitals и ошибки клиента — зафиксируйте текущий уровень до смены бренда или добавления тяжёлых медиа.
Продуктовые и сущностные изображения — только через Blob/CDN-URL и next/image. Оверсайз PNG-герои — частая причина LCP-регрессий в новых клонах.
После публикации товаров продавцами кеш должен инвалидироваться. Если списки выглядят устаревшими — чините синхронизацию до масштабирования.
Следующее: health-checkи, Web Vitals API и админ-аналитика.
Схожие сценарии: история инцидентов Mermaid SSR и probes.
Глубже: инвалидирование кеша после CRUD тегов или возможностей.
Также смотрите: паттерны cache(), статическая генерация, заметки по edge.
Воспользуйтесь фильтрами Founder / Developer в боковой панели документации. Эта страница замещает устаревшие вымышленные сведения (например, $2.8M дохода, выдуманные примеры отчетности, фиктивные SLA Lighthouse). Описанные паттерны подтверждены в файлах next.config.mjs, lib/cached-data.ts, components/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts и опыте продакшн-Docker.
Платформа Ring ориентирована на быструю первую отрисовку (по умолчанию серверные компоненты React 19), актуальные списки маркетплейса (теги кеша + синхронизация после мутаций) и измеряемый UX (сбор Core Web Vitals). Производительность — это задача деплоя: ограничения по времени сборки, ловушки SSR и инвалидирование кеша, а не только косметика фронтенда.
| Слой | Механизм | Где используется |
|---|---|---|
| Фреймворк | Next.js 16 App Router, cacheComponents: true | next.config.mjs |
| Кеш списков | unstable_cache + revalidateTag | lib/cached-data.ts |
| Дедупликация чтения | React.cache() для server reads | lib/services/firebase-service-manager.ts, actions |
| Read-after-write | 30 сек. in-process кеш сущностей | DatabaseService EntityCache |
| Тяжелый UI-клиент | dynamic(..., { ssr: false }) | components/docs/mdx-heavy-components.tsx |
| Блоки кода Docs | Серверный Shiki (highlightCodeToHtml) | components/docs/code.tsx |
| Изображения | next/image WebP/AVIF | next.config.mjs → images.formats |
| UX-метрики | useReportWebVitals → POST /api/analytics/web-vitals | components/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts |
| Hints ресурсов | prefetchDNS / preinit скрипты | contexts/app-context.tsx |
Медленные страницы opportunity и store прямо влияют на конверсию: пользователи бросают покупки, продавцы видят пустые дашборды, а уведомления AI выглядят «запаздывающими», даже если данные корректны.
Админ → Аналитика показывает медианы Web Vitals и ошибки клиента — зафиксируйте текущий уровень до смены бренда или добавления тяжёлых медиа.
Продуктовые и сущностные изображения — только через Blob/CDN-URL и next/image. Оверсайз PNG-герои — частая причина LCP-регрессий в новых клонах.
После публикации товаров продавцами кеш должен инвалидироваться. Если списки выглядят устаревшими — чините синхронизацию до масштабирования.
Следующее: health-checkи, Web Vitals API и админ-аналитика.
Схожие сценарии: история инцидентов Mermaid SSR и probes.
Глубже: инвалидирование кеша после CRUD тегов или возможностей.
Также смотрите: паттерны cache(), статическая генерация, заметки по edge.
Воспользуйтесь фильтрами Founder / Developer в боковой панели документации. Эта страница замещает устаревшие вымышленные сведения (например, $2.8M дохода, выдуманные примеры отчетности, фиктивные SLA Lighthouse). Описанные паттерны подтверждены в файлах next.config.mjs, lib/cached-data.ts, components/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts и опыте продакшн-Docker.
Платформа Ring ориентирована на быструю первую отрисовку (по умолчанию серверные компоненты React 19), актуальные списки маркетплейса (теги кеша + синхронизация после мутаций) и измеряемый UX (сбор Core Web Vitals). Производительность — это задача деплоя: ограничения по времени сборки, ловушки SSR и инвалидирование кеша, а не только косметика фронтенда.
| Слой | Механизм | Где используется |
|---|---|---|
| Фреймворк | Next.js 16 App Router, cacheComponents: true | next.config.mjs |
| Кеш списков | unstable_cache + revalidateTag | lib/cached-data.ts |
| Дедупликация чтения | React.cache() для server reads | lib/services/firebase-service-manager.ts, actions |
| Read-after-write | 30 сек. in-process кеш сущностей | DatabaseService EntityCache |
| Тяжелый UI-клиент | dynamic(..., { ssr: false }) | components/docs/mdx-heavy-components.tsx |
| Блоки кода Docs | Серверный Shiki (highlightCodeToHtml) | components/docs/code.tsx |
| Изображения | next/image WebP/AVIF | next.config.mjs → images.formats |
| UX-метрики | useReportWebVitals → POST /api/analytics/web-vitals | components/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts |
| Hints ресурсов | prefetchDNS / preinit скрипты | contexts/app-context.tsx |
Медленные страницы opportunity и store прямо влияют на конверсию: пользователи бросают покупки, продавцы видят пустые дашборды, а уведомления AI выглядят «запаздывающими», даже если данные корректны.
Админ → Аналитика показывает медианы Web Vitals и ошибки клиента — зафиксируйте текущий уровень до смены бренда или добавления тяжёлых медиа.
Продуктовые и сущностные изображения — только через Blob/CDN-URL и next/image. Оверсайз PNG-герои — частая причина LCP-регрессий в новых клонах.
После публикации товаров продавцами кеш должен инвалидироваться. Если списки выглядят устаревшими — чините синхронизацию до масштабирования.
Следующее: health-checkи, Web Vitals API и админ-аналитика.
Схожие сценарии: история инцидентов Mermaid SSR и probes.
Глубже: инвалидирование кеша после CRUD тегов или возможностей.
Также смотрите: паттерны cache(), статическая генерация, заметки по edge.
| Метрика | Хорошо (≤) | Плохо (>) |
|---|---|---|
| LCP | 2.5s | 4s |
| INP | 200мс | 500мс |
| CLS | 0.1 | 0.25 |
| TTFB | 800мс | 1.8s |
| FCP | 1.8s | 3s |
| FID | 100мс | 300мс |
Значения берутся из ratingForMetric в features/analytics/lib/analytics-db.ts. Клиент сообщает рейтинг каждой метрики из next/web-vitals, буферизует и отправляет одним POST за debounce в /api/analytics/web-vitals.
Рассматривайте производительность как критерий релиза при запуске клона: запустите Lighthouse на /, /opportunities и /store после деплоя и сравните c Admin-аналитикой через неделю.
useActionState |
features/reviews/components/review-form.tsx |
useOptimistic | hooks/use-realtime.ts, hooks/use-realtime-opportunities.ts |
Server Actions + revalidatePath | app/_actions/*.ts |
Используйте Server Components для list/detail-оболочек; ограничивайте 'use client' лишь формами, туннелями, кошельками и визуализациями.
Документация и маркетинговые виджеты подгружаются через dynamic(..., { ssr: false }) в mdx-heavy-components.tsx. Серверный рендеринг Mermaid/Shiki на верхнем уровне приводил к 30-секундным задержкам и 503 в продакшене — см. Развертывание в Docker.
<Code> асинхронно обрабатываются на сервере через Shikicomponents/docs/code.tsx вызывает highlightCodeToHtml один раз на блок — не добавляйте на той же странице клиентские highlighter'ы.
staticPageGenerationTimeout: 180 в next.config.mjs — большие деревья документации или множество локалей требуют дисциплины в инкрементальной генерации; уменьшайте область сканирования в scanDocsStaticParams, если сборка не влазит в лимиты CI.
В next.config.mjs выставляется output: 'standalone' с outputFileTracingRoot, serverExternalPackages (Firebase, Auth.js, Solana, nodemailer), и outputFileTracingIncludes (i18n, локали, docs, ring-config, server.ts), чтобы контейнеры включали только нужные бандлы сервера.
next.config.mjs включает WebP/AVIF (images.formats) и remote patterns для Google-аватаров, Google Fonts, Vercel Blob и cdn.ring-platform.org, а также паттерны для каждого нового клона через collectCloneImageRemotePatterns. Добавляйте хосты CDN в images.remotePatterns при подключении клона.
WebVitalsProvider (components/providers/web-vitals-provider.tsx), встраивается в app-client-shell.tsx017_ring_analytics_schema.sqlGET /api/analytics/web-vitals?scope=platform (admin)ANALYTICS_DISABLE_STORAGE=true для нагрузочного тестированияПолная справка: Мониторинг и аналитика.
Паттерны реализации (Firebase cache(), статическая генерация, edge-заметки) смотрите в разделах Разработка: производительность и Возможности: паттерны производительности — сверяйте примеры с postgres-клонами перед использованием firebase-специфичного кода.
| Метрика | Хорошо (≤) | Плохо (>) |
|---|---|---|
| LCP | 2.5s | 4s |
| INP | 200мс | 500мс |
| CLS | 0.1 | 0.25 |
| TTFB | 800мс | 1.8s |
| FCP | 1.8s | 3s |
| FID | 100мс | 300мс |
Значения берутся из ratingForMetric в features/analytics/lib/analytics-db.ts. Клиент сообщает рейтинг каждой метрики из next/web-vitals, буферизует и отправляет одним POST за debounce в /api/analytics/web-vitals.
Рассматривайте производительность как критерий релиза при запуске клона: запустите Lighthouse на /, /opportunities и /store после деплоя и сравните c Admin-аналитикой через неделю.
useActionState |
features/reviews/components/review-form.tsx |
useOptimistic | hooks/use-realtime.ts, hooks/use-realtime-opportunities.ts |
Server Actions + revalidatePath | app/_actions/*.ts |
Используйте Server Components для list/detail-оболочек; ограничивайте 'use client' лишь формами, туннелями, кошельками и визуализациями.
Документация и маркетинговые виджеты подгружаются через dynamic(..., { ssr: false }) в mdx-heavy-components.tsx. Серверный рендеринг Mermaid/Shiki на верхнем уровне приводил к 30-секундным задержкам и 503 в продакшене — см. Развертывание в Docker.
<Code> асинхронно обрабатываются на сервере через Shikicomponents/docs/code.tsx вызывает highlightCodeToHtml один раз на блок — не добавляйте на той же странице клиентские highlighter'ы.
staticPageGenerationTimeout: 180 в next.config.mjs — большие деревья документации или множество локалей требуют дисциплины в инкрементальной генерации; уменьшайте область сканирования в scanDocsStaticParams, если сборка не влазит в лимиты CI.
В next.config.mjs выставляется output: 'standalone' с outputFileTracingRoot, serverExternalPackages (Firebase, Auth.js, Solana, nodemailer), и outputFileTracingIncludes (i18n, локали, docs, ring-config, server.ts), чтобы контейнеры включали только нужные бандлы сервера.
next.config.mjs включает WebP/AVIF (images.formats) и remote patterns для Google-аватаров, Google Fonts, Vercel Blob и cdn.ring-platform.org, а также паттерны для каждого нового клона через collectCloneImageRemotePatterns. Добавляйте хосты CDN в images.remotePatterns при подключении клона.
WebVitalsProvider (components/providers/web-vitals-provider.tsx), встраивается в app-client-shell.tsx017_ring_analytics_schema.sqlGET /api/analytics/web-vitals?scope=platform (admin)ANALYTICS_DISABLE_STORAGE=true для нагрузочного тестированияПолная справка: Мониторинг и аналитика.
Паттерны реализации (Firebase cache(), статическая генерация, edge-заметки) смотрите в разделах Разработка: производительность и Возможности: паттерны производительности — сверяйте примеры с postgres-клонами перед использованием firebase-специфичного кода.
| Метрика | Хорошо (≤) | Плохо (>) |
|---|---|---|
| LCP | 2.5s | 4s |
| INP | 200мс | 500мс |
| CLS | 0.1 | 0.25 |
| TTFB | 800мс | 1.8s |
| FCP | 1.8s | 3s |
| FID | 100мс | 300мс |
Значения берутся из ratingForMetric в features/analytics/lib/analytics-db.ts. Клиент сообщает рейтинг каждой метрики из next/web-vitals, буферизует и отправляет одним POST за debounce в /api/analytics/web-vitals.
Рассматривайте производительность как критерий релиза при запуске клона: запустите Lighthouse на /, /opportunities и /store после деплоя и сравните c Admin-аналитикой через неделю.
useActionState |
features/reviews/components/review-form.tsx |
useOptimistic | hooks/use-realtime.ts, hooks/use-realtime-opportunities.ts |
Server Actions + revalidatePath | app/_actions/*.ts |
Используйте Server Components для list/detail-оболочек; ограничивайте 'use client' лишь формами, туннелями, кошельками и визуализациями.
Документация и маркетинговые виджеты подгружаются через dynamic(..., { ssr: false }) в mdx-heavy-components.tsx. Серверный рендеринг Mermaid/Shiki на верхнем уровне приводил к 30-секундным задержкам и 503 в продакшене — см. Развертывание в Docker.
<Code> асинхронно обрабатываются на сервере через Shikicomponents/docs/code.tsx вызывает highlightCodeToHtml один раз на блок — не добавляйте на той же странице клиентские highlighter'ы.
staticPageGenerationTimeout: 180 в next.config.mjs — большие деревья документации или множество локалей требуют дисциплины в инкрементальной генерации; уменьшайте область сканирования в scanDocsStaticParams, если сборка не влазит в лимиты CI.
В next.config.mjs выставляется output: 'standalone' с outputFileTracingRoot, serverExternalPackages (Firebase, Auth.js, Solana, nodemailer), и outputFileTracingIncludes (i18n, локали, docs, ring-config, server.ts), чтобы контейнеры включали только нужные бандлы сервера.
next.config.mjs включает WebP/AVIF (images.formats) и remote patterns для Google-аватаров, Google Fonts, Vercel Blob и cdn.ring-platform.org, а также паттерны для каждого нового клона через collectCloneImageRemotePatterns. Добавляйте хосты CDN в images.remotePatterns при подключении клона.
WebVitalsProvider (components/providers/web-vitals-provider.tsx), встраивается в app-client-shell.tsx017_ring_analytics_schema.sqlGET /api/analytics/web-vitals?scope=platform (admin)ANALYTICS_DISABLE_STORAGE=true для нагрузочного тестированияПолная справка: Мониторинг и аналитика.
Паттерны реализации (Firebase cache(), статическая генерация, edge-заметки) смотрите в разделах Разработка: производительность и Возможности: паттерны производительности — сверяйте примеры с postgres-клонами перед использованием firebase-специфичного кода.