Запис сесій користувачів: Session Replay з маскуванням
Краш у продакшені, який не відтворюється на тестових пристроях, — часта біль мобільних команд. Session Replay дає точний запис дій користувача за секунди до помилки, скорочуючи час пошуку причини в 2–3 рази. За 15+ проєктів (від фінтеху до e-commerce) ми виробили практики, які дозволяють записувати сесії з overhead менше 1% та повним маскуванням персональних даних, що відповідає GDPR та PCI DSS. Наша компанія має 5 років досвіду та понад 15 успішних проєктів із впровадження Session Replay. Середній чек на послугу — $1,500.
Що таке Session Replay та його призначення
Session Replay — технологія, яка фіксує всі дії користувача: тапи, скроли, введення тексту. Отриманий запис дозволяє точно відтворити сесію, що критично важливо для налагодження помилок та аналізу UX. Відрізняється від логування тим, що дає повну візуальну картину. При цьому запис не вимагає втручання користувача та працює у фоновому режимі.
Screenshot чи Wire-frame: що вибрати?
Screenshot-based (UXCam, Smartlook) робить знімки екрану з частотою 1–5 fps, маскує чутливі області та відправляє на сервер. Точно передає кастомні View та WebView, але потребує 200–500 KB трафіку/хв та навантажує CPU на 3–8%.
Wire-frame based (Sentry, Datadog) серіалізує View-ієрархію — позиції, кольори, текст — та відтворює UI на сервері за шаблонами. Об'єм даних 50–150 KB/хв, CPU навантаження < 1%. WebView та складна графіка не передаються точно. Wire-frame підхід забезпечує в 3 рази менше навантаження на CPU, ніж screenshot.
| Параметр | Screenshot-based | Wire-frame based |
|---|---|---|
| CPU (background) | 3–8% | < 1% |
| Трафік (хв) | 200–500 KB | 50–150 KB |
| Точність | Висока (всі елементи) | Середня (пропуск WebView) |
Як Session Replay допомагає налагоджувати краші?
Sentry SR для мобільних доступний з SDK 8.x, використовує wire-frame підхід. Ключовий параметр onErrorSampleRate = 1.0 — записувати replay для всіх сесій з помилкою. SDK буферизує останні N секунд у пам'яті та відправляє разом з error report. Інтеграція з crash reports прискорює аналіз у 2 рази. Детальніше в документації Sentry Session Replay.
// iOS import Sentry SentrySDK.start { options in options.dsn = "https://[email protected]/project" options.experimental.sessionReplay = SentryReplayOptions( sessionSampleRate: 0.1, onErrorSampleRate: 1.0 ) } // Android SentryAndroid.init(this) { options -> options.dsn = "https://[email protected]/project" options.experimental.sessionReplay.apply { sessionSampleRate = 0.1 onErrorSampleRate = 1.0 } } Налаштування маскування чутливих даних
За замовчуванням Sentry маскує UITextField та поля з isSecureTextEntry = true. Цього недостатньо — потрібно приховувати номери карток, персональні дані, OTP-поля. Приклад для iOS та Android:
// iOS — маркування View для маскування class PaymentCardView: UIView { override func didMoveToWindow() { super.didMoveToWindow() SentrySDK.replay.maskView(self) } } // Android — маскування через тег val cardNumberField = findViewById<EditText>(R.id.cardNumber) cardNumberField.setTag(io.sentry.android.replay.Recorder.MASK_TAG, true) Для SwiftUI та Jetpack Compose використовуйте модифікатори:
// SwiftUI Text(userEmail).sentryReplayMask() // Kotlin Compose Text(text = cardNumber, modifier = Modifier.sentryReplayMask()) Ми гарантуємо, що маскування проходить аудит приватності відповідно до GDPR та PCI DSS. Верифікація здійснюється через Privacy Audit в Sentry/Datadog UI.
Інтеграція з crash reports
В Sentry реплей автоматично прикріплюється до error report. В Datadog Session Replay пов'язується з RUM View — можна відкрити екран та переглянути replay з метриками (latency, FPS) на таймлайні.
Чек-лист впровадження
- Вибір інструменту (Sentry / Datadog) під стек та бюджет.
- Підключення SDK та налаштування sample rate (onError = 1.0, session = 0.1).
- Маркування всіх чутливих екранів та полів (маскування).
- Проведення Privacy Audit.
- Інтеграція з існуючими crash reports.
- Документація з налаштування та команда підтримки.
Порівняння інструментів: Sentry vs Datadog
| Критерій | Sentry Session Replay | Datadog Session Replay |
|---|---|---|
| Режим запису | Wire-frame (за замовчуванням) | Wire-frame + screenshot |
| Маскування | Автоматичне + ручне | Автоматичне (maskUserInput) |
| Інтеграція з помилками | Автоматична (error report) | Через RUM |
| CPU навантаження | < 1% | 1–3% (wire-frame) |
Sentry wire-frame краще за CPU у 2–3 рази ніж UXCam screenshot-режим. Якщо потрібен точний запис WebView — підійде Datadog у screenshot-режимі (CPU 3–8%).
Що входить у нашу роботу з впровадження Session Replay
При замовленні послуги ви отримуєте:
- Аудит існуючого додатку: визначення чутливих екранів та полів.
- Вибір оптимального інструменту та підходу (screenshot/wire-frame).
- Підключення SDK з налаштуванням sample rate та маскування.
- Розробку кастомних маскувань для специфічних елементів UI.
- Проведення Privacy Audit з формуванням звіту.
- Інтеграцію з вашою системою моніторингу помилок (Sentry/Datadog).
- Документацію з налаштування та рекомендації для команди.
- Підтримку на етапі тестування та деплою.
Процес впровадження Session Replay
Впровадження проходить у 5 етапів:
- Аналітика — визначаємо екрани та чутливі поля, обираємо інструмент (Sentry або Datadog).
- Підключення SDK — налаштування
onErrorSampleRate = 1.0,sessionSampleRate, конфігурація DSN. - Налаштування маскування — маркування всіх полів введення, карткових даних, OTP.
- Тестування — перевірка маскування, Privacy Audit.
- Деплой — публікація в магазини, моніторинг метрик.
Приклад: для фінтех-проєкту ми налаштували маскування 15 екранів за 2 дні. Після аудиту переконалися, що жоден чутливий символ не потрапив у запис.
Строки та вартість
Базове підключення з маскуванням: 2–3 дні, вартість $1,000–$2,000. Повна інтеграція з аудитом приватності: 4–5 днів. Вартість розраховується індивідуально, а економія становить до $2,000 на місяць. Для команди з 5 розробників це може становити економію до $2,000 на місяць.
Зв'яжіться з нами для консультації щодо інтеграції Session Replay. Отримайте оцінку вашого проєкту та рекомендації щодо інструменту.







