From 3ec78b4fab0a2688e7f701bc556eae2e9e9a6c12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20J=C3=A4derberg?= Date: Mon, 1 Dec 2025 13:00:44 +0100 Subject: [PATCH] refactor: update error handling and logging for improved error details display --- .../app/[lang]/(live)/error.module.css | 39 ++++++++------- apps/scandic-web/app/[lang]/(live)/error.tsx | 48 ++++++++++++++----- packages/common/logger/createLogger/index.ts | 4 ++ 3 files changed, 60 insertions(+), 31 deletions(-) diff --git a/apps/scandic-web/app/[lang]/(live)/error.module.css b/apps/scandic-web/app/[lang]/(live)/error.module.css index ee2e64cc5..175ea2e5b 100644 --- a/apps/scandic-web/app/[lang]/(live)/error.module.css +++ b/apps/scandic-web/app/[lang]/(live)/error.module.css @@ -1,25 +1,24 @@ -.layout { - display: grid; - font-family: var(--typography-Body-Regular-fontFamily); - grid-template-rows: auto 1fr; - min-height: 100dvh; +.container { + display: flex; + flex-direction: column; + max-width: var(--max-width-content); + margin: 0 auto; + padding: var(--Space-x5) 0; + gap: var(--Space-x2); + + min-height: 50dvh; + text-align: center; + text-wrap: beautiful; + + align-items: center; + justify-content: center; } -.content { - display: grid; - padding-bottom: 7.7rem; - padding-left: 0; - padding-right: 0; - position: relative; +.digest { + text-align: right; } -@media screen and (min-width: 1367px) { - .content { - gap: 10rem; - grid-template-columns: 25rem 1fr; - padding-bottom: 17.5rem; - padding-left: 2.4rem; - padding-right: 2.4rem; - padding-top: 5.8rem; - } +.errorDetails { + text-align: left; + margin-top: var(--Space-x5); } diff --git a/apps/scandic-web/app/[lang]/(live)/error.tsx b/apps/scandic-web/app/[lang]/(live)/error.tsx index b85dab07c..0f996f6d0 100644 --- a/apps/scandic-web/app/[lang]/(live)/error.tsx +++ b/apps/scandic-web/app/[lang]/(live)/error.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl" import { login } from "@scandic-hotels/common/constants/routes/handleAuth" import { logger } from "@scandic-hotels/common/logger" +import { Typography } from "@scandic-hotels/design-system/Typography" import { SESSION_EXPIRED } from "@scandic-hotels/trpc/errors" import { env } from "@/env/client" @@ -39,7 +40,7 @@ export default function Error({ } logger.error("(live)/error", error) - Sentry.captureException(error) + Sentry.captureException(error, { extra: { digest: error.digest } }) }, [error, params.lang]) useEffect(() => { @@ -60,16 +61,41 @@ export default function Error({ }, [searchParams, reset, router]) return ( -
-
- {intl.formatMessage({ - id: "errorMessage.somethingWentWrong", - defaultMessage: "Something went wrong!", - })} - {env.NEXT_PUBLIC_NODE_ENV === "development" && ( -
{error.stack || error.message}
- )} +
+ +

+ {intl.formatMessage({ + id: "errorMessage.somethingWentWrong", + defaultMessage: "Something went wrong!", + })} +

+
+
+ +

+ {intl.formatMessage({ + id: "errorMessage.somethingWentWrong.message", + defaultMessage: + "Please try refreshing the page or come back later. If the problem persists, please contact support.", + })} +

+
-
+ {error.digest && ( + + {/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */} +

Error reference ID: {error.digest}

+
+ )} + {env.NEXT_PUBLIC_SENTRY_ENVIRONMENT !== "production" && ( +
+          {error.message && 
{error.message}
} + {error.stack && {error.stack}} +
+ )} + ) } diff --git a/packages/common/logger/createLogger/index.ts b/packages/common/logger/createLogger/index.ts index fbefb4aaf..34e9b6103 100644 --- a/packages/common/logger/createLogger/index.ts +++ b/packages/common/logger/createLogger/index.ts @@ -21,6 +21,10 @@ function getLogValue(args: unknown[]): Record | undefined { stack: args[0].stack, name: args[0].name, cause: String(args[0].cause), + digest: + "digest" in args[0] && args[0].digest + ? String(args[0].digest) + : undefined, }, } }