Анализ Error Sessions (сессии с ошибками JavaScript)

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Анализ Error Sessions (сессии с ошибками JavaScript)
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Анализ Error Sessions (сессии с ошибками JavaScript)

Error Sessions — сессии пользователей, в которых произошла одна или несколько JavaScript ошибок. Ошибки JS нарушают работу интерфейса, блокируют формы и checkout, что напрямую снижает конверсию.

Настройка перехвата JS ошибок

// Перехват необработанных ошибок
window.addEventListener('error', function(event) {
  const errorInfo = {
    message: event.message,
    source: event.filename?.split('/').pop(),
    line: event.lineno,
    col: event.colno,
    stack: event.error?.stack?.slice(0, 500),
    page: window.location.pathname,
    user_agent: navigator.userAgent.slice(0, 100)
  }

  // Отправить в GA4
  gtag('event', 'js_error', errorInfo)

  // Отправить в Sentry/Bugsnag
  Sentry.captureException(event.error, {
    extra: errorInfo
  })
})

// Перехват unhandled Promise rejections
window.addEventListener('unhandledrejection', function(event) {
  gtag('event', 'promise_rejection', {
    message: event.reason?.message || String(event.reason),
    page: window.location.pathname
  })
})

// Перехват ошибок в fetch/XHR
const originalFetch = window.fetch
window.fetch = async function(...args) {
  try {
    const response = await originalFetch(...args)
    if (!response.ok) {
      gtag('event', 'fetch_error', {
        url: args[0].toString().split('?')[0],
        status: response.status,
        page: window.location.pathname
      })
    }
    return response
  } catch (err) {
    gtag('event', 'fetch_exception', {
      url: args[0].toString().split('?')[0],
      message: err.message
    })
    throw err
  }
}

Sentry: полноценный error tracking

// sentry.init.js
import * as Sentry from '@sentry/browser'
import { BrowserTracing } from '@sentry/tracing'

Sentry.init({
  dsn: 'https://[email protected]/yyy',
  integrations: [
    new BrowserTracing(),
    new Sentry.Replay({
      maskAllText: false,
      blockAllMedia: false
    })
  ],
  tracesSampleRate: 0.1,   // 10% для performance
  replaysSessionSampleRate: 0.05,  // 5% сессий записывать
  replaysOnErrorSampleRate: 1.0,   // 100% при ошибке

  beforeSend(event) {
    // Добавить контекст пользователя
    event.user = {
      id: currentUser?.id,
      segment: currentUser?.plan
    }
    return event
  }
})

Анализ ошибок по влиянию на конверсию

def analyze_error_impact(analytics_db):
    # Сравнить конверсию сессий с ошибками vs без
    result = analytics_db.query("""
        WITH session_errors AS (
            SELECT
                session_id,
                COUNT(*) as error_count,
                MAX(CASE WHEN event_name = 'purchase' THEN 1 ELSE 0 END) as converted
            FROM events
            WHERE date >= CURRENT_DATE - INTERVAL '7 days'
            AND event_name IN ('js_error', 'purchase')
            GROUP BY session_id
        ),
        all_sessions AS (
            SELECT session_id,
                   MAX(CASE WHEN event_name = 'purchase' THEN 1 ELSE 0 END) as converted
            FROM events
            WHERE date >= CURRENT_DATE - INTERVAL '7 days'
            GROUP BY session_id
        )
        SELECT
            'with_errors' AS segment,
            COUNT(*) AS sessions,
            SUM(converted) AS conversions,
            ROUND(AVG(converted::float) * 100, 2) AS cvr
        FROM session_errors WHERE error_count > 0

        UNION ALL

        SELECT
            'without_errors',
            COUNT(*),
            SUM(a.converted),
            ROUND(AVG(a.converted::float) * 100, 2)
        FROM all_sessions a
        LEFT JOIN session_errors se ON a.session_id = se.session_id
        WHERE se.session_id IS NULL
    """)
    return result

# Типичный результат:
# with_errors:    1.2% CVR
# without_errors: 3.8% CVR
# Ошибки снижают конверсию в 3+ раза

Приоритизация ошибок для исправления

def prioritize_errors(sentry_api, project_slug):
    """Приоритет = affected_users × conversion_impact"""
    issues = sentry_api.get_issues(project_slug, limit=50)

    for issue in issues:
        affected_users = issue['userCount']
        # Ошибки в checkout/payment — высокий приоритет
        is_critical = any(p in issue['culprit'] for p in
                         ['checkout', 'payment', 'cart', 'form'])
        issue['priority_score'] = affected_users * (3 if is_critical else 1)

    return sorted(issues, key=lambda x: x['priority_score'], reverse=True)

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

  • Cannot read property 'X' of undefined — race condition при асинхронной загрузке
  • Network Error в fetch — API недоступен, нет retry логики
  • PaymentRequestUpdateEvent — ошибки Payment Request API на iOS Safari
  • ChunkLoadError — устаревший кэш после деплоя (решается: window.location.reload())

Срок выполнения

Интеграция Sentry, настройка GA4 error events, анализ влияния на конверсию — 1–2 рабочих дня.