Detecting User Frustration: Understanding rage clicks and session replay
Detecting User Frustration: Understanding rage clicks and session replay
Detecting User Frustration: Understanding rage clicks and session replay
Published November 13, 2025
Part 1 of 3: Rage Click Detection with LaunchDarkly
The holidays are around the corner and with it comes the expected uptick in traffic, and as traffic increases the need to preserve user experience becomes that much more imperative. You can ship out a new feature, everything seems to be going as planned, and then all of a sudden you start to see a spike in support tickets. The error logs aren’t helpful or show nothing and the metrics look fine.
So, what happened? Wouldn’t you like to literally put yourself in the user’s shoes by seeing exactly what happened in a user session? Enter session replay and more specifically rage clicks as a barometer for user experience.
In this three-part series, we’ll explore how LaunchDarkly’s session replay and observability features help you detect, diagnose, and fix user experience issues in real-time. Part 1 covers the fundamentals: what rage clicks are, how to detect them, and how to get started with session replay.
A rage click occurs when a user rapidly clicks the same element multiple times in frustration, usually because the element appears clickable but isn’t responding as expected. It’s one of the strongest behavioral signals that something is wrong with your user experience.
Not every series of rapid clicks qualifies as rage clicks. LaunchDarkly uses three criteria to distinguish genuine frustration from normal user behavior:

These defaults work well for most applications, but LaunchDarkly lets you adjust them based on your specific use case. We’ll cover customization later in this post.
While rage clicks are the most obvious indicator of user frustration, LaunchDarkly’s session replay automatically captures several other behavioral patterns:

Together, these signals paint a complete picture of user frustration, which gives you qualitative context that complements your quantitative metrics.
Let’s walk through implementing session replay in a complete application, from installation to viewing your first rage click detection.
This health tracking app, written in Javascript, demonstrates LaunchDarkly session replay implementation for detecting user frustration through rage click monitoring.
Find all the code for this demo here, with the LaunchDarkly integration instructions in this .md file.
File Structure:
Key Features:
Step 1: Install Dependencies First, install the required LaunchDarkly packages:
< Note: The observability plugin requires JavaScript SDK version 3.7.0 or later. >
Step 2: Configure Environment Variables. Create a .env file in your project root. You can get your client-side ID from LaunchDarkly: Project Settings > Environments.

Step 3: Initialize LaunchDarkly Client.
Create src/services/launchdarkly.js:
Step 4: Implement the LaunchDarkly Client in Main.
Initialize LaunchDarkly in src/main.jsx for:
Now that we have initialized our LaunchDarkly client and configured session replay at the start of the app, we can configure rage detection in the LaunchDarkly UI.
Rage click detection is configured in the LaunchDarkly UI, not in code. This makes it easy to adjust thresholds without redeploying.
Access Settings:

Adjust the rage click settings to reflect the user clicking 5+ times within 2 seconds in the same area:
Click Save.
These settings apply to all sessions automatically and require no code changes needed.
Session recording When the session replay plugin is initialized, LaunchDarkly automatically:
Automatic detection LaunchDarkly’s backend analyzes recorded sessions:
In order to test this integration, you can do the following:
To start, your app should look something like this:
When you navigate to Launchdarkly UI -> Sessions, you should be able to see the complete session replay.
In order to test the rage clicks integration, we can add a custom button by adding the following code to the AilmentsListScreen.jsx file within the header div.
Now that you have your test button, you can try clicking it 5+ times within 2 seconds in the same spot as shown in the session below.
Finally, you should see your full session replay under the sessions tab.
It’s important to note that all sessions for a specific app are appended in the session replay tab. So if a user is inactive and comes back to the same tab, the video will be longer. However, if the user starts a new tab or its been more than 4 hours a new video will be created for that session.
After enabling rage click, you can now:
Rage clicks Not detected
Session replay Not Working
Session replay is powerful, but it comes with important privacy responsibilities. LaunchDarkly provides several layers of protection to ensure you’re capturing useful debugging data without exposing sensitive user information.
Default Privacy Mode: Strict Protection By default, LaunchDarkly operates in strict privacy mode, which provides the safest option:
This means you can safely record sessions without worrying about capturing passwords, credit card numbers, or other sensitive data.
Implementing rage click detection with LaunchDarkly session replay is a pretty straightforward process and involves installing the observability sdk with specific plugins. The real power comes from LaunchDarkly’s automatic detection and the ability to replay sessions with full context (errors, logs, network requests) to understand exactly what frustrated users.
By detecting rage clicks, we can:
This was accomplished without any additional code changes. LaunchDarkly handled everything automatically, and you were able to adjust sensitivity through the dashboard.
You now have the foundation for detecting user frustration with LaunchDarkly’s session replay. You can:
But detection alone isn’t enough. The real magic comes from connecting these frustration signals directly to your feature releases, so you can catch issues during progressive rollouts and roll back instantly if something breaks.
In Part 2, we’ll explore Guarded Releases: how to automatically monitor rage clicks during feature rollouts, set up alerts for frustration spikes, and enable automated rollback when metrics exceed thresholds.
You’ll learn how to create a closed-loop system where user frustration signals trigger immediate action, which prevents small issues from becoming widespread problems.
Additional Resources: