LF
Lumen Fitness·Consumer fitness· iOS

How Lumen Fitness got 3x the beta reports with shake-to-report

Lumen Fitness traded vague App Store reviews for shake-to-report feedback with a screenshot and device context attached — 3x more beta reports, fixed same-day.

·3 min read
~3x
more beta bug reports
days → same-day
time to reproduce a report
one afternoon
to integrate the SDK
“I'm not playing 20 questions to reproduce a bug anymore. The screenshot, the version, the device — it's all just there.”
Dana Reyes — Founder and iOS lead, Lumen Fitness

Lumen Fitness used to find out their app was broken from one-star App Store reviews. Now a beta tester shakes their phone, circles the broken button, types a line, and it lands in the dashboard with the screenshot, app version, and device already attached — usually fixed the same day. Beta bug reports roughly tripled, and the integration took an afternoon.

The team and the problem

Lumen Fitness is an eight-person team building a UIKit workout-tracking app for iPhone. Their advantage was a large, engaged TestFlight cohort — hundreds of beta users who genuinely cared about the product. Their problem was that those users had no good way to tell them anything.

Feedback arrived as vague App Store reviews ("the timer screen is broken") and screenshots texted straight to the founder with no context at all. Which build? Which device? What were they doing? Every report kicked off days of back-and-forth just to figure out what the person had actually seen. By the time they could reproduce it, the tester had usually moved on.

They sketched out building their own shake-to-report flow. It sounded simple until they listed what it actually meant: capturing the current screen, layering an annotation tool on top, flattening the drawing onto the image, uploading it reliably, and stitching device and version metadata onto every report. That's a small product on its own — plumbing nobody on an eight-person team wanted to own or maintain.

What they did with Catch

They added the CatchDev iOS SDK instead. The integration was one line in their app delegate:

import CatchDev

CatchDev.start(apiKey: "ck_your_key")

Shake-to-report is on by default, so that single call was the whole feature. A tester shakes the device, sees a screenshot of the screen they're on, draws on it to mark the problem, types a note, and taps Send. The report shows up in the dashboard under App → Feedback with the annotated screenshot, the message, and the app version, build, device, and OS attached automatically — no work on the tester's part, none on Lumen's.

They added one more call to tie reports to real accounts:

CatchDev.setUser(id: "123", email: "tester@example.com")

Now every report is linked to a specific beta account, so when a pattern shows up across a few testers on the same build, it's obvious. Nothing leaves the device until the user taps Send, which mattered for a fitness app where a screenshot can include personal data.

What changed

The reporting bar dropped from "compose an email" to "shake and scribble," and report volume moved with it — beta bug reports came in at roughly 3x the previous rate. People who'd never have written a review will circle a misaligned button and hit Send.

The bigger shift was reproduction. Because the app version, build, device, and OS arrive stapled to every report, the days-long back-and-forth is gone. Most reports now go from inbox to reproduced the same day, because the screenshot and the context answer the questions Lumen used to have to ask one at a time.

"I'm not playing 20 questions to reproduce a bug anymore," says Dana Reyes, the founder and iOS lead. "The screenshot, the version, the device — it's all just there."

What's next

With reproduction off the critical path, Lumen has started routing feedback by setUser identity, so reports from their most active testers surface first. They're tagging environments with setEnvironment to keep staging-build noise separate from their release candidate, and the time they used to spend reconstructing bug reports now goes back into shipping the fixes those reports surface.

// More case studies