mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-03 04:38:33 +00:00
feat(studio): add stack traces to all error telemetry events
Send `stack_trace` (up to 4KB) on crash, unhandled_error, and unhandled_promise_rejection events so PostHog captures the full JS call stack for debugging. Also bump `component_stack` from 500→2000 chars, and add `error_name` to promise rejections.
This commit is contained in:
@@ -21,7 +21,8 @@ export class StudioErrorBoundary extends Component<Props, State> {
|
||||
trackStudioEvent("crash", {
|
||||
error_message: error.message,
|
||||
error_name: error.name,
|
||||
component_stack: info.componentStack?.slice(0, 500) ?? null,
|
||||
stack_trace: error.stack?.slice(0, 4000) ?? null,
|
||||
component_stack: info.componentStack?.slice(0, 2000) ?? null,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -7,19 +7,33 @@ import "./styles/studio.css";
|
||||
|
||||
trackStudioEvent("session_start");
|
||||
|
||||
function errorProps(value: unknown): {
|
||||
error_message: string;
|
||||
error_name: string | null;
|
||||
stack_trace: string | null;
|
||||
} {
|
||||
if (value instanceof Error) {
|
||||
return {
|
||||
error_message: value.message,
|
||||
error_name: value.name,
|
||||
stack_trace: value.stack?.slice(0, 4000) ?? null,
|
||||
};
|
||||
}
|
||||
return { error_message: String(value), error_name: null, stack_trace: null };
|
||||
}
|
||||
|
||||
window.addEventListener("error", (event) => {
|
||||
trackStudioEvent("unhandled_error", {
|
||||
...errorProps(event.error),
|
||||
error_message: event.message,
|
||||
filename: event.filename ?? null,
|
||||
lineno: event.lineno ?? null,
|
||||
colno: event.colno ?? null,
|
||||
filename: event.filename,
|
||||
lineno: event.lineno,
|
||||
colno: event.colno,
|
||||
});
|
||||
});
|
||||
|
||||
window.addEventListener("unhandledrejection", (event) => {
|
||||
trackStudioEvent("unhandled_promise_rejection", {
|
||||
error_message: event.reason instanceof Error ? event.reason.message : String(event.reason),
|
||||
});
|
||||
trackStudioEvent("unhandled_promise_rejection", errorProps(event.reason));
|
||||
});
|
||||
|
||||
createRoot(document.getElementById("root")!).render(
|
||||
|
||||
Reference in New Issue
Block a user