Skip to content

Crash reporting, QA capture and bug reports in one SDK.

Everframe goes into your phone, web or TV app. It catches crashes on its own, lets your testers file a bug with a shake, and lets users report from inside the app. Every one lands in one dashboard with the steps, logs and device that led to it.

How Everframe works: the SDK in your app sends crashes, tester captures and user reports to one dashboard, which hands them to AI triage, your board, webhooks and coding agents.

In your app

Everframe SDK

Phones, tablets, the web and TV

  • Crash or errorcaught on its own
  • Tester capturea shake on a linked device
  • User reportone tap in your app

Everframe

One dashboard

  • Errors, grouped by cause
  • Reports with replay and trail
  • Release health per version
  • AI triage
  • Your board
  • Webhooks
  • Coding agents

What it does

Crash and error reporting

Crashes report themselves, mapped back to the line in your code.

  • Native crashes on iOS and tvOS, ANRs and low-memory kills on Android, and uncaught errors on the web and TV.
  • Stack traces point at your source once your build uploads its source maps or symbols.
  • Grouped by cause, with how many events and users each one hit and the versions it came from.
  • Release health shows crash-free sessions for every app version.

Source maps and symbols

Everframe error page for a React error: 12 events from 4 users in version 3.0.0, the stack trace open at src/player/hooks/useLayoutGlide.ts line 161 with the source around it, and the event's browser, system, version and SDK beside it.

Quick capture for your team

Testers file a bug with a shake, without stopping to fill in a form.

  • Link a test phone or TV to yourself once, from the dashboard.
  • A shake, holding Play/Pause on the remote, or Shift+B in a simulator files a private draft with the screenshot, replay and logs.
  • Give it a title later on the dashboard. A shared QA device sends its captures to the team inbox.
  • The release builds your users run don’t change.

How linking works

The dashboard's New capture card with the phone's screenshot of the Nocturne app and a What's wrong here? title field.

Bug reports from your users

Users report from inside the app, and you see exactly what they saw.

  • One tap opens the reporter. The screenshot is taken before it opens, so it shows the problem, not the form.
  • They circle what’s wrong and say what they expected.
  • The report arrives with the replay, console, network requests and device.
  • On the web and React, you can reply to the reporter inside the app.

The reporter and screenshot

Report Neon Saints poster never loads: the user's circled screenshot replayed with rrweb, and the trail of requests, taps and logs beside it.

Replay and trail

See the last 30 seconds before the bug, step by step.

  • Taps, remote presses, screens, requests and logs go into a rolling buffer on the device. Nothing is uploaded until a report or capture is filed.
  • A pixel-accurate replay on the web, and a wireframe replay on native apps and TVs.
  • Follow trail moves the replay to each step as you read down the list.
  • Sensitive fields are masked on the device, before anything is sent.

Session replay

Everframe replaying an Apple TV session while Follow trail highlights each remote press, screen change and log.

Triage, board and agents

Decide what matters and get it fixed, in the same place.

  • With AI triage on, each report gets a summary, a suggested priority with its confidence, and similar reports. You accept or dismiss.
  • One board for every platform, from triage to review.
  • Ask AI across the project; answers cite the cards they came from.
  • A coding agent can read a bug over MCP or open the pull request from a ticket. Signed webhooks send each report to your own systems.

How to run bug triage

Board with Triage, Backlog, In progress and In review columns of bug cards from Roku, React Native and web.
Suggested priority Medium at 85% confidence for a slow Apple TV search, with a summary of why.

Phones, the web and TV

What each platform supports

Under the hood

For whoever sets it up: what each SDK captures, and what stays on the device.

What each SDK captures

The five core SDKs write the same report format, so triage, webhooks and prompts don’t change when the platform does. Replay uses a different mechanism on native.

WebReactReact NativeiOSAndroid
Screenshot with annotations, masked on the device yes yes yes yes yes
Session replay, rolling buffer, enabled per app, nothing sent until a report DOM · rrweb DOM · rrweb native wireframe native wireframe native wireframe
Console, last 100 lines yes yes native logs yes yes
Network requests yes yes no JS capture yet opt-in opt-in
Network bodies, enabled per app in the dashboard yes yes no yes yes
Breadcrumbs and screen tracking yes yes yes yes yes
Focused component, resolved to a real name element component no no no
Unattended reports from uncaught errors errors + rejections errors + rejections JS errors + native crashes native crashes crashes; ANRs and low-memory kills on Android 11+
Sensitive regions and redaction engine yes yes yes yes yes
Two-way replies to the reporter, in-app yes yes no no no
Reporter trigger hotkey · your button hotkey · your button your button your button your button
Quick capture on a linked test device, titled on the dashboard no no shake shake · hold Play/Pause on Apple TV shake · hold Play/Pause on Android TV
Session Vitals — playback health, memory, responsiveness (beta, not yet generally available) beta beta planned planned planned
Flutter
Wraps the iOS and Android SDKs. Replay is images of masked Flutter screens.
Kotlin Multiplatform
One shared API; the iOS and Android SDKs do the capturing.
TV apps
Apple TV, Android TV and Fire TV use the iOS, Android or React Native SDK. Tizen and webOS use Web or React.
Roku
Crash and error reports only.
Vega OS
A preview that reports JavaScript errors only.

What stays on the device

Masked before it is sent. Nothing is sent until a bug is filed.

Mark a field sensitive; its pixels are blacked out in the screenshot before it leaves the device. Card numbers are caught by Luhn, so order ids survive. Replay and logs live in a rolling buffer until a report freezes it.

Sessions beta

Health for every session, not only the reported ones.

Sampled playback health, memory and responsiveness per session, always on once enabled. Off by default. Opt in per app, sample rate set from the server. Reports carry the session id; the Sessions view pictured is the next step, not shipped yet. Web and React first; iOS, Android and TV natives follow on the same protocol.

Add Everframe in five minutes.

Free for 1,000 monthly active installs. Starter is $19 a month when you go to production.

// web, after npm i @everframe/web
import { init } from '@everframe/web';

const everframe = init({ sdkKey: 'evf_live_…', appVersion: '2.4.0' });