Shake to report. Every bug comes with Zustand state, navigation history, and JS errors. Route to Linear, GitHub, Jira, or Slack.
Free tier. No credit card. MIT licensed.
cart: { items: 3, total: 0 } user: { plan: "pro" }
BugPulse captures a screenshot, freezes your app state, and records the navigation history. All automatic.
Draw on the screenshot to circle the problem. Pick colors, undo strokes, highlight exactly what's wrong.
Report goes to Linear, GitHub, Jira, or Slack with full diagnostics attached. Your team gets everything they need.
Every report captures what cross-platform tools miss. Not just a screenshot and a text box.
{
"stateSnapshots": [{
"name": "cartStore",
"state": {
"items": ["Earbuds", "Case"],
"total": 0
}
}],
"navHistory": [
{ "path": "/products" },
{ "path": "/cart" },
{ "path": "/checkout" }
],
"lastError": {
"message": "Cannot read total of undefined"
}
} One SDK, every destination. Reports go where your team already works.
Ship in 5 minutes, not 5 sprints. No account needed for the free tier.
Wrap your app. Shake to report. That's it.
import { BugReportProvider, SlackIntegration } from '@bugpulse/react-native'; export default function App() { return ( <BugReportProvider integrations={[ SlackIntegration({ webhookUrl: 'https://hooks.slack.com/...', }), ]} > <YourApp /> </BugReportProvider> ); }
No credit card required. Upgrade or cancel anytime.
Sign up to get your API key for the proxy.
Save these now. The HMAC secret cannot be retrieved later.
Or use the CLI: npx @bugpulse/cli signup
$ npx @bugpulse/cli signup ✓ API key created: bp_k7x... ✓ HMAC secret saved to .env $ npx @bugpulse/cli open ✓ Dashboard opened in browser