diff --git a/apps/web/components/error/BookingPageErrorBoundary.tsx b/apps/web/components/error/BookingPageErrorBoundary.tsx
new file mode 100644
index 0000000000..79cc3b2707
--- /dev/null
+++ b/apps/web/components/error/BookingPageErrorBoundary.tsx
@@ -0,0 +1,17 @@
+import { captureReactException } from "@sentry/nextjs";
+import React from "react";
+import { ErrorBoundary } from "react-error-boundary";
+
+import { ErrorPage } from "./error-page";
+
+export default function BookingPageErrorBoundary({ children }: { children: React.ReactNode }) {
+ return (
+ }
+ onError={(error, info) => {
+ captureReactException(error, info);
+ }}>
+ {children}
+
+ );
+}
diff --git a/apps/web/modules/d/[link]/d-type-view.tsx b/apps/web/modules/d/[link]/d-type-view.tsx
index 7f2595ead8..39c221ab12 100644
--- a/apps/web/modules/d/[link]/d-type-view.tsx
+++ b/apps/web/modules/d/[link]/d-type-view.tsx
@@ -5,6 +5,8 @@ import { getBookerWrapperClasses } from "@calcom/features/bookings/Booker/utils/
import { type PageProps } from "@lib/d/[link]/[slug]/getServerSideProps";
+import BookingPageErrorBoundary from "@components/error/BookingPageErrorBoundary";
+
export default function Type({
slug,
isEmbed,
@@ -18,18 +20,20 @@ export default function Type({
durationConfig,
}: PageProps) {
return (
-
-
-
+
+
+
+
+
);
}
diff --git a/apps/web/modules/org/[orgSlug]/instant-meeting/team/[slug]/[type]/instant-meeting-view.tsx b/apps/web/modules/org/[orgSlug]/instant-meeting/team/[slug]/[type]/instant-meeting-view.tsx
index 8b30d62d65..c0c3f70c0c 100644
--- a/apps/web/modules/org/[orgSlug]/instant-meeting/team/[slug]/[type]/instant-meeting-view.tsx
+++ b/apps/web/modules/org/[orgSlug]/instant-meeting/team/[slug]/[type]/instant-meeting-view.tsx
@@ -8,22 +8,26 @@ import { getBookerWrapperClasses } from "@calcom/features/bookings/Booker/utils/
import type { getServerSideProps } from "@lib/org/[orgSlug]/instant-meeting/team/[slug]/[type]/getServerSideProps";
import type { inferSSRProps } from "@lib/types/inferSSRProps";
+import BookingPageErrorBoundary from "@components/error/BookingPageErrorBoundary";
+
export type Props = inferSSRProps & EmbedProps;
function Type({ slug, user, booking, isEmbed, isBrandingHidden, entity, eventTypeId, duration }: Props) {
return (
-
-
-
+
+
+
+
+
);
}
diff --git a/apps/web/modules/team/type-view.tsx b/apps/web/modules/team/type-view.tsx
index 4fce3061dc..6153b6a025 100644
--- a/apps/web/modules/team/type-view.tsx
+++ b/apps/web/modules/team/type-view.tsx
@@ -9,6 +9,8 @@ import { getBookerWrapperClasses } from "@calcom/features/bookings/Booker/utils/
import type { getServerSideProps } from "@lib/team/[slug]/[type]/getServerSideProps";
import type { inferSSRProps } from "@lib/types/inferSSRProps";
+import BookingPageErrorBoundary from "@components/error/BookingPageErrorBoundary";
+
export type PageProps = inferSSRProps & EmbedProps;
export const getMultipleDurationValue = (
@@ -37,30 +39,32 @@ function Type({
const searchParams = useSearchParams();
return (
-
-
-
+
+
+
+
+
);
}
diff --git a/apps/web/modules/users/views/users-type-public-view.tsx b/apps/web/modules/users/views/users-type-public-view.tsx
index a5f6a3ce13..7104580858 100644
--- a/apps/web/modules/users/views/users-type-public-view.tsx
+++ b/apps/web/modules/users/views/users-type-public-view.tsx
@@ -8,6 +8,8 @@ import { getBookerWrapperClasses } from "@calcom/features/bookings/Booker/utils/
import type { inferSSRProps } from "@lib/types/inferSSRProps";
+import BookingPageErrorBoundary from "@components/error/BookingPageErrorBoundary";
+
import type { getServerSideProps } from "@server/lib/[user]/[type]/getServerSideProps";
export type PageProps = inferSSRProps & EmbedProps;
@@ -26,25 +28,27 @@ function Type({ slug, user, isEmbed, booking, isBrandingHidden, eventData, orgBa
const searchParams = useSearchParams();
return (
-
-
-
+
+
+
+
+
);
}