import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; import { StudioApp } from "./App"; import { StudioErrorBoundary } from "./components/StudioErrorBoundary"; import { trackStudioEvent } from "./utils/studioTelemetry"; 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) => { if (event.message?.includes("ResizeObserver loop")) { event.stopImmediatePropagation(); event.preventDefault(); return; } trackStudioEvent("unhandled_error", { ...errorProps(event.error), error_message: event.message, filename: event.filename, lineno: event.lineno, colno: event.colno, }); }); window.addEventListener("unhandledrejection", (event) => { trackStudioEvent("unhandled_promise_rejection", errorProps(event.reason)); }); createRoot(document.getElementById("root")!).render( , );