Skip to content

feat: render custom error page for unexpected sever error + remove pages/_error #18606

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jan 12, 2025

Conversation

hbjORbj
Copy link
Contributor

@hbjORbj hbjORbj commented Jan 12, 2025

What does this PR do?

  • Follow up of chore: migrate 404 page to App Router #18449
  • Apparently, we need to remove pages/_error.tsx too, not only pages/404.tsx. Otherwise, Pages Router’s error handling takes precedence over App Router’s, and app/not-found.tsx does not get rendered (e.g., https://app.cal.qa/123123 is showing a blank page instead of 404 page). Couldn’t catch this in local testing because app router’s error handling takes precedence in local testing. Not sure why. Let’s merge this and I will test again in QA.

As a bonus, we will display a custom error page instead of blank page with text for unhandled errors

Screenshot 2025-01-12 at 12 55 06 AM

TLDR:

  • Remove pages/_error.tsx
  • Refactor app/error.tsx
  • Use a custom error page

Mandatory Tasks (DO NOT REMOVE)

  • I have self-reviewed the code (A decent size PR without self-review might be rejected).
  • N/A - I have updated the developer docs in /docs if this PR makes changes that would require a documentation change. If N/A, write N/A here and check the checkbox.
  • I confirm automated tests are in place that prove my fix is effective or that my feature works.

How should this be tested?

  • Add throw new Error("TESTING") in WithLayout in app/layoutHOC.tsx and go to any App Router page (/event-types)

@graphite-app graphite-app bot requested a review from a team January 12, 2025 05:58
@keithwillcode keithwillcode added consumer core area: core, team members only labels Jan 12, 2025
@dosubot dosubot bot added the ✨ feature New feature or request label Jan 12, 2025
@hbjORbj hbjORbj changed the title feat: better error page feat: render custom error page for unexpected sever error + remove pages/_error Jan 12, 2025
Copy link

graphite-app bot commented Jan 12, 2025

Graphite Automations

"Add consumer team as reviewer" took an action on this PR • (01/12/25)

1 reviewer was added to this PR based on Keith Williams's automation.

@hbjORbj hbjORbj enabled auto-merge (squash) January 12, 2025 06:02
@hbjORbj hbjORbj requested review from keithwillcode and zomars and removed request for a team January 12, 2025 06:10
Copy link
Contributor

E2E results are ready!

@hbjORbj hbjORbj merged commit a3d7bcd into main Jan 12, 2025
54 of 93 checks passed
@hbjORbj hbjORbj deleted the feat/better-error-page branch January 12, 2025 13:12
zomars pushed a commit that referenced this pull request Jan 14, 2025
…ages/_error` (#18606)

* remove page/_error

* refactor app/error
joeauyeung added a commit that referenced this pull request Jan 17, 2025
* Upgrade jsforce to 3.6.2

* Refactor connecting to Salesforce

* Revert yarn.lock changes

* Add `TASKER_ENABLE_CRM_EVENT_CREATION` to .env

* Add createCRMEvent scheduler

* Schedule CRM event creating in `EventManager`

* Add calendar event builder for CRM tasks

* Do not write to person record if fields don't exist

* Change type to expect string from tasker

* Create CRM event

* Create booking references

* Type fixes

* Migrate callback endpoint

* Add jsforce node dependency

* Migrate add endpoint

* Import

* Import package into crmService

* Use new package types

* Type fix

* Update vite config

* Push updated lockfile

* Attempt to bump platform/libraries to unlock jsforce

* Also update lockfile, naturally

* bump platform libraries

* feat: salesforce to tasker improvements (#18419)

* feat: salesforce to tasker

* refactor: event manager

* tests: add unit tests for create CRM Event

* Update vite.config

* Add jsforce to vite config

* Revert mint.json changes

* Default to not enabling

* Revert yarn.lock changes

* Remove `TASKER_ENABLE_CRM_EVENT_CREATION` variable

* Revert yarn.lock changes

* feat: Round Robin weights future members toggle (#17782)

Co-authored-by: Omar López <[email protected]>

* detailed customer card (#18511)

Co-authored-by: Omar López <[email protected]>

* chore: app router - all sub-pages in `/apps` (#16976)

* chore: apps/[slug] remove pages router

* remove apps/[slug] pages from /future

* chore: apps/installed remove pages router

* chore: apps/installation remove pages router

* remove Head element

* fix metadata

* fix test

* fix another test

* chore: apps/categories remove pages router

* revert unneeded changes

* update middleware

* Remove <Head>

* remove unused import and code

* remove unused import and code again

* fix

* fix category page

* add split icon

* add /routing paths to middleware matcher

* wip

* remove HeadSeo from App.tsx

* clean up head-seo test

* add generateAppMetadata

* use generateAppMetadata in apps/[slug] page

* delete file

* remove log

* fix

* fix

* fix apps/installed pages

* fix cateogires pages

* fix

* fix imports

* wip

* fix

* fix

* fix metadata

* fix

* redirect /apps/routing-forms to /routing

* replace all usages of /apps/routing-forms to /routing

* better naming

* /routing -> /routing/forms

* fix

* fix

* fix

* fix

* remove backPath as it is irrelevant when withoutMain is true

* fix type checks

* fix type check in apps/[slug]

* refactors

* fix

* fix test

* fix

* fix

* fix

* Replace multiple leading slashes with a single slash

* migrate routing-forms too

* add re routing

* fix

* add redirection

---------

Co-authored-by: Peer Richelsen <[email protected]>
Co-authored-by: Anik Dhabal Babu <[email protected]>

* chore: app router 404 page (#18597)

* wip

* wip

* fix not found page

* render middleware for /settings pages

* fix

* remove global-error page

* add metadata to not-found page

* make not-found page static

* remove 404

* adding not-found to middleware is not necessary

* add every routes to config.matcher

* fix test

* fix style

* use i18n string

* fix tests

* fix

* fix

* revert unneeded changes

* fix

* fix

* fix

* fix style

* fix

* remove 404

* remove log

* fix

* fix

* fix

* fix

* better naming

* parallel testing

---------

Co-authored-by: Benny Joo <[email protected]>

* feat: render custom error page for unexpected sever error + remove` pages/_error` (#18606)

* remove page/_error

* refactor app/error

* fix: app/not-found cannot be a static page (#18610)

* Async False (#18611)

* chore: redirect to /500 if pathname does not exist + better error handling (#18615)

* fix lint error

* fix booking page and better error handling

* chore: gracefully handle 404s from pages router's dynamic pages + tests (#18618)

* restore pages/_error

* set custom header in pages/_error

* handle it in middleware

* add test

* remove logs

* better test description

* chore: try using custom 404 in pages/_error (#18622)

* fix: parsing teamId (#18623)

* chore: restore error pages for pages router (#18625)

* disable emails to all guests (#18628)

Co-authored-by: CarinaWolli <[email protected]>

* revert: "feat: bulk shorten links with dub.links.createMany (#18539)" (#18587)

This reverts commit 4902c6a.

Co-authored-by: Alex van Andel <[email protected]>

* chore: release v4.8.18

* fix: disable sending sms when email is present (#18632)

* fix: disable sending sms when email is present

* fix: update test

* fix: main lint errors (#18634)

* fix: error-page.tsx related lint errors

* fix: lint no continue-on-error

* Adding more lint fixes

* Bring back annotate code linting results

* Bring back linting continue-on-error

* Slimline lint

* feat: do not show automation webhooks in webhook list (#18607)

* fix: make ESLint work and fix lint errors that were undetected before (#18639)

* fix eslint config

* fix

* add it to dev dep

* fix

* sync eslint version

* force ts-node to compile our ESLint plugin's TS files into CommonJS (which ESLint requires)

* fix some lint errors

* fix lint errors

* remove duplicate classname

* make @typescript-eslint/ban-types a warn for packages/trpc files

* fix lint errors in trpc

* fix lint errors in trpc - 2

* fix

* fix

* fix lint warnings

* chore: clean up config.matcher in middleware (#18638)

Co-authored-by: Alex van Andel <[email protected]>

* Allow lint to error but continue (unblock pipeline)

* fix: potential fix for flaky layout shift (#18651)

* potential fix: layout shift

* fix lint error

* feat: update translations via @replexica (#18598)

* chore: sync with main

* feat: update translations via @replexica

---------

Co-authored-by: Replexica <[email protected]>

* Update yarn.lock

* nit: let tasker handle payload stringification

---------

Co-authored-by: Udit Takkar <[email protected]>
Co-authored-by: Alex van Andel <[email protected]>
Co-authored-by: Morgan <[email protected]>
Co-authored-by: Morgan Vernay <[email protected]>
Co-authored-by: Omar López <[email protected]>
Co-authored-by: sean-brydon <[email protected]>
Co-authored-by: Nizzy <[email protected]>
Co-authored-by: Benny Joo <[email protected]>
Co-authored-by: Peer Richelsen <[email protected]>
Co-authored-by: Anik Dhabal Babu <[email protected]>
Co-authored-by: Carina Wollendorfer <[email protected]>
Co-authored-by: CarinaWolli <[email protected]>
Co-authored-by: Keith Williams <[email protected]>
Co-authored-by: GitHub Actions <[email protected]>
Co-authored-by: Kartik Saini <[email protected]>
Co-authored-by: Calcom Bot <[email protected]>
Co-authored-by: Replexica <[email protected]>
MuhammadAimanSulaiman pushed a commit to hit-pay/cal.com that referenced this pull request Feb 24, 2025
…ages/_error` (calcom#18606)

* remove page/_error

* refactor app/error
MuhammadAimanSulaiman pushed a commit to hit-pay/cal.com that referenced this pull request Feb 24, 2025
…ages/_error` (calcom#18606)

* remove page/_error

* refactor app/error
MuhammadAimanSulaiman pushed a commit to hit-pay/cal.com that referenced this pull request Feb 25, 2025
…ages/_error` (calcom#18606)

* remove page/_error

* refactor app/error
MuhammadAimanSulaiman pushed a commit to hit-pay/cal.com that referenced this pull request Feb 25, 2025
* Upgrade jsforce to 3.6.2

* Refactor connecting to Salesforce

* Revert yarn.lock changes

* Add `TASKER_ENABLE_CRM_EVENT_CREATION` to .env

* Add createCRMEvent scheduler

* Schedule CRM event creating in `EventManager`

* Add calendar event builder for CRM tasks

* Do not write to person record if fields don't exist

* Change type to expect string from tasker

* Create CRM event

* Create booking references

* Type fixes

* Migrate callback endpoint

* Add jsforce node dependency

* Migrate add endpoint

* Import

* Import package into crmService

* Use new package types

* Type fix

* Update vite config

* Push updated lockfile

* Attempt to bump platform/libraries to unlock jsforce

* Also update lockfile, naturally

* bump platform libraries

* feat: salesforce to tasker improvements (calcom#18419)

* feat: salesforce to tasker

* refactor: event manager

* tests: add unit tests for create CRM Event

* Update vite.config

* Add jsforce to vite config

* Revert mint.json changes

* Default to not enabling

* Revert yarn.lock changes

* Remove `TASKER_ENABLE_CRM_EVENT_CREATION` variable

* Revert yarn.lock changes

* feat: Round Robin weights future members toggle (calcom#17782)

Co-authored-by: Omar López <[email protected]>

* detailed customer card (calcom#18511)

Co-authored-by: Omar López <[email protected]>

* chore: app router - all sub-pages in `/apps` (calcom#16976)

* chore: apps/[slug] remove pages router

* remove apps/[slug] pages from /future

* chore: apps/installed remove pages router

* chore: apps/installation remove pages router

* remove Head element

* fix metadata

* fix test

* fix another test

* chore: apps/categories remove pages router

* revert unneeded changes

* update middleware

* Remove <Head>

* remove unused import and code

* remove unused import and code again

* fix

* fix category page

* add split icon

* add /routing paths to middleware matcher

* wip

* remove HeadSeo from App.tsx

* clean up head-seo test

* add generateAppMetadata

* use generateAppMetadata in apps/[slug] page

* delete file

* remove log

* fix

* fix

* fix apps/installed pages

* fix cateogires pages

* fix

* fix imports

* wip

* fix

* fix

* fix metadata

* fix

* redirect /apps/routing-forms to /routing

* replace all usages of /apps/routing-forms to /routing

* better naming

* /routing -> /routing/forms

* fix

* fix

* fix

* fix

* remove backPath as it is irrelevant when withoutMain is true

* fix type checks

* fix type check in apps/[slug]

* refactors

* fix

* fix test

* fix

* fix

* fix

* Replace multiple leading slashes with a single slash

* migrate routing-forms too

* add re routing

* fix

* add redirection

---------

Co-authored-by: Peer Richelsen <[email protected]>
Co-authored-by: Anik Dhabal Babu <[email protected]>

* chore: app router 404 page (calcom#18597)

* wip

* wip

* fix not found page

* render middleware for /settings pages

* fix

* remove global-error page

* add metadata to not-found page

* make not-found page static

* remove 404

* adding not-found to middleware is not necessary

* add every routes to config.matcher

* fix test

* fix style

* use i18n string

* fix tests

* fix

* fix

* revert unneeded changes

* fix

* fix

* fix

* fix style

* fix

* remove 404

* remove log

* fix

* fix

* fix

* fix

* better naming

* parallel testing

---------

Co-authored-by: Benny Joo <[email protected]>

* feat: render custom error page for unexpected sever error + remove` pages/_error` (calcom#18606)

* remove page/_error

* refactor app/error

* fix: app/not-found cannot be a static page (calcom#18610)

* Async False (calcom#18611)

* chore: redirect to /500 if pathname does not exist + better error handling (calcom#18615)

* fix lint error

* fix booking page and better error handling

* chore: gracefully handle 404s from pages router's dynamic pages + tests (calcom#18618)

* restore pages/_error

* set custom header in pages/_error

* handle it in middleware

* add test

* remove logs

* better test description

* chore: try using custom 404 in pages/_error (calcom#18622)

* fix: parsing teamId (calcom#18623)

* chore: restore error pages for pages router (calcom#18625)

* disable emails to all guests (calcom#18628)

Co-authored-by: CarinaWolli <[email protected]>

* revert: "feat: bulk shorten links with dub.links.createMany (calcom#18539)" (calcom#18587)

This reverts commit 4902c6a.

Co-authored-by: Alex van Andel <[email protected]>

* chore: release v4.8.18

* fix: disable sending sms when email is present (calcom#18632)

* fix: disable sending sms when email is present

* fix: update test

* fix: main lint errors (calcom#18634)

* fix: error-page.tsx related lint errors

* fix: lint no continue-on-error

* Adding more lint fixes

* Bring back annotate code linting results

* Bring back linting continue-on-error

* Slimline lint

* feat: do not show automation webhooks in webhook list (calcom#18607)

* fix: make ESLint work and fix lint errors that were undetected before (calcom#18639)

* fix eslint config

* fix

* add it to dev dep

* fix

* sync eslint version

* force ts-node to compile our ESLint plugin's TS files into CommonJS (which ESLint requires)

* fix some lint errors

* fix lint errors

* remove duplicate classname

* make @typescript-eslint/ban-types a warn for packages/trpc files

* fix lint errors in trpc

* fix lint errors in trpc - 2

* fix

* fix

* fix lint warnings

* chore: clean up config.matcher in middleware (calcom#18638)

Co-authored-by: Alex van Andel <[email protected]>

* Allow lint to error but continue (unblock pipeline)

* fix: potential fix for flaky layout shift (calcom#18651)

* potential fix: layout shift

* fix lint error

* feat: update translations via @replexica (calcom#18598)

* chore: sync with main

* feat: update translations via @replexica

---------

Co-authored-by: Replexica <[email protected]>

* Update yarn.lock

* nit: let tasker handle payload stringification

---------

Co-authored-by: Udit Takkar <[email protected]>
Co-authored-by: Alex van Andel <[email protected]>
Co-authored-by: Morgan <[email protected]>
Co-authored-by: Morgan Vernay <[email protected]>
Co-authored-by: Omar López <[email protected]>
Co-authored-by: sean-brydon <[email protected]>
Co-authored-by: Nizzy <[email protected]>
Co-authored-by: Benny Joo <[email protected]>
Co-authored-by: Peer Richelsen <[email protected]>
Co-authored-by: Anik Dhabal Babu <[email protected]>
Co-authored-by: Carina Wollendorfer <[email protected]>
Co-authored-by: CarinaWolli <[email protected]>
Co-authored-by: Keith Williams <[email protected]>
Co-authored-by: GitHub Actions <[email protected]>
Co-authored-by: Kartik Saini <[email protected]>
Co-authored-by: Calcom Bot <[email protected]>
Co-authored-by: Replexica <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
consumer core area: core, team members only ✨ feature New feature or request ready-for-e2e
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants