From e1eb30d7983a80ccba273b052e399bd9dd6a9d2d Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Fri, 21 Aug 2026 15:09:57 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=88(frontend)=20track=20errors=20when?= =?UTF-8?q?=20starting=20or=20stopping=20a=20recording?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Send an analytics event whenever starting or stopping a recording fails, so we can monitor how often it happens. It also gives support the context needed to understand what went wrong when inspecting a user's session. --- CHANGELOG.md | 4 ++++ .../src/features/recording/hooks/useMutateRecording.ts | 3 +++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d08eb06..fa2ab6ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ and this project adheres to ## [Unreleased] +### Added + +- 📈(frontend) track errors when starting or stopping a recording + ### Changed - ✨(backend) accept form-urlencoded on the user token endpoint diff --git a/src/frontend/src/features/recording/hooks/useMutateRecording.ts b/src/frontend/src/features/recording/hooks/useMutateRecording.ts index a745b72d..2f8f2f5b 100644 --- a/src/frontend/src/features/recording/hooks/useMutateRecording.ts +++ b/src/frontend/src/features/recording/hooks/useMutateRecording.ts @@ -1,17 +1,20 @@ import { useStartRecording, useStopRecording } from '@/features/recording' import { recordingStore } from '@/stores/recording' +import { captureEvent } from '@/features/analytics/telemetry' export const useMutateRecording = () => { const { mutateAsync: startRecording, isPending: isPendingToStart } = useStartRecording({ onError: () => { recordingStore.isErrorDialogOpen = 'start' + captureEvent('error-starting-recording') }, }) const { mutateAsync: stopRecording, isPending: isPendingToStop } = useStopRecording({ onError: () => { recordingStore.isErrorDialogOpen = 'stop' + captureEvent('error-stopping-recording') }, })