Back to Blog
Engineering6 minApr 12, 2026

Building the Sensitivity Dialer: From 'Chill' to 'Unhinged'

The story of how we built a configurable rage meter that lets developers choose exactly how much abuse they can handle.

Building the Sensitivity Dialer: From 'Chill' to 'Unhinged'
GT
Grumpy Team
Apr 12, 2026

Not every bug deserves a five-alarm Slack notification. And not every developer wants the same level of noise.

That's why we built the Sensitivity Dialer — a configurable threshold that controls how aggressively Grumpy monitors your application.

The Three Levels

Fatal (Low Sensitivity) Only unhandled crashes that kill your process. This is "wake me up at 3 AM" territory. Production is down, users are affected, and someone needs to fix it now.

Error (Medium Sensitivity) Caught exceptions plus fatal crashes. This catches bugs that your try-catch blocks are silently swallowing. You know, the ones where you wrote `catch (e) { /* TODO: handle this */ }` three years ago.

Warning (High Sensitivity) Everything. Deprecation notices, type mismatches, missing environment variables, sketchy patterns. This is for masochists who want Grumpy to critique every line of code that runs in production.

How It Works

The Sensitivity Dialer can be set in two places:

  • SDK Level — Set level in grumpy.init() for per-application control
  • Dashboard Level — Override per-project in Settings (server-side enforcement)

The server always wins. If your dashboard is set to "fatal" and your SDK sends a "warning", we drop it silently. This prevents rogue developers from flooding the channel.

The Sweet Spot

Most teams start at Error (medium) and adjust from there. New projects often go full Warning to catch everything early, then dial it down as the codebase stabilizes.

Pro tip: set it to Warning for one week after every major release. You'll thank us later.

Ready to get roasted?

Two lines of code. That's all it takes.

Start your free month