import React from 'react' import SessionRecorder from '../session-recorder' export type ErrorBoundaryProps = { children: React.ReactNode fallback?: React.ReactNode } type State = { hasError: boolean } export class ErrorBoundary extends React.Component { constructor(props: ErrorBoundaryProps) { super(props) this.state = { hasError: false } } static getDerivedStateFromError(): State { return { hasError: true } } componentDidCatch(error: unknown): void { try { SessionRecorder.captureException(error as any) } catch (_e) { // ignore } } render(): React.ReactNode { if (this.state.hasError) { return this.props.fallback ?? null } return this.props.children } } export default ErrorBoundary