Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[8.8] [APM] Avoid re-mounting the entire application on every url cha…
…nge (#156171) (#156309) # Backport This will backport the following commits from `main` to `8.8`: - [[APM] Avoid re-mounting the entire application on every url change (#156171)](#156171) <!--- Backport version: 8.9.7 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Søren Louv-Jansen","email":"[email protected]"},"sourceCommit":{"committedDate":"2023-05-01T21:46:17Z","message":"[APM] Avoid re-mounting the entire application on every url change (#156171)\n\n## Problem\r\nThe `ErrorBoundary` component that encapsulates the APM application uses\r\nthe url path as the `key`, causing the application to be unmounted and\r\nre-mounted on every page change:\r\n\r\n```ts\r\n<ErrorBoundary key={location.pathname}>{children}</ErrorBoundary>\r\n```\r\n\r\n## Solution\r\n\r\nWhile applying a fix to the `ErrorBoundary` component I noticed that it\r\nis no longer used. Errors are captured by the\r\n`ObservabilityPageTemplate` (introduced a few weeks back in\r\nhttps://github.com//pull/154716) which makes our\r\nErrorBoundary useless.\r\n\r\nThe `ErrorBoundary` in `ObservabilityPageTemplate` does not have the\r\nsame problem our had. However, it also does not reset the ErrorBoundary\r\non page change (like ours did). This means that once an error is caught,\r\nit is not possible to remove the Error Boundary ui without manually\r\nperforming a full page refresh. I've mentioned this to @CoenWarmer and\r\ncreated a follow-up issue:\r\nhttps://github.com//issues/156172\r\n\r\n## Before\r\n\r\nhttps://user-images.githubusercontent.com/209966/235135444-d691b481-5441-449b-8555-77760877c3ba.mp4\r\n\r\n## After\r\n\r\nhttps://user-images.githubusercontent.com/209966/235135459-cc3d4318-d553-44ad-890b-c15bdeac9292.mp4\r\n\r\n---------\r\n\r\nCo-authored-by: kibanamachine <[email protected]>","sha":"66ab6b7464076126ee49c03a37f234280d8205a5","branchLabelMapping":{"^v8.9.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Team:APM","release_note:skip","v8.8.0","v8.9.0"],"number":156171,"url":"https://github.com/elastic/kibana/pull/156171","mergeCommit":{"message":"[APM] Avoid re-mounting the entire application on every url change (#156171)\n\n## Problem\r\nThe `ErrorBoundary` component that encapsulates the APM application uses\r\nthe url path as the `key`, causing the application to be unmounted and\r\nre-mounted on every page change:\r\n\r\n```ts\r\n<ErrorBoundary key={location.pathname}>{children}</ErrorBoundary>\r\n```\r\n\r\n## Solution\r\n\r\nWhile applying a fix to the `ErrorBoundary` component I noticed that it\r\nis no longer used. Errors are captured by the\r\n`ObservabilityPageTemplate` (introduced a few weeks back in\r\nhttps://github.com//pull/154716) which makes our\r\nErrorBoundary useless.\r\n\r\nThe `ErrorBoundary` in `ObservabilityPageTemplate` does not have the\r\nsame problem our had. However, it also does not reset the ErrorBoundary\r\non page change (like ours did). This means that once an error is caught,\r\nit is not possible to remove the Error Boundary ui without manually\r\nperforming a full page refresh. I've mentioned this to @CoenWarmer and\r\ncreated a follow-up issue:\r\nhttps://github.com//issues/156172\r\n\r\n## Before\r\n\r\nhttps://user-images.githubusercontent.com/209966/235135444-d691b481-5441-449b-8555-77760877c3ba.mp4\r\n\r\n## After\r\n\r\nhttps://user-images.githubusercontent.com/209966/235135459-cc3d4318-d553-44ad-890b-c15bdeac9292.mp4\r\n\r\n---------\r\n\r\nCo-authored-by: kibanamachine <[email protected]>","sha":"66ab6b7464076126ee49c03a37f234280d8205a5"}},"sourceBranch":"main","suggestedTargetBranches":["8.8"],"targetPullRequestStates":[{"branch":"8.8","label":"v8.8.0","labelRegex":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.9.0","labelRegex":"^v8.9.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/156171","number":156171,"mergeCommit":{"message":"[APM] Avoid re-mounting the entire application on every url change (#156171)\n\n## Problem\r\nThe `ErrorBoundary` component that encapsulates the APM application uses\r\nthe url path as the `key`, causing the application to be unmounted and\r\nre-mounted on every page change:\r\n\r\n```ts\r\n<ErrorBoundary key={location.pathname}>{children}</ErrorBoundary>\r\n```\r\n\r\n## Solution\r\n\r\nWhile applying a fix to the `ErrorBoundary` component I noticed that it\r\nis no longer used. Errors are captured by the\r\n`ObservabilityPageTemplate` (introduced a few weeks back in\r\nhttps://github.com//pull/154716) which makes our\r\nErrorBoundary useless.\r\n\r\nThe `ErrorBoundary` in `ObservabilityPageTemplate` does not have the\r\nsame problem our had. However, it also does not reset the ErrorBoundary\r\non page change (like ours did). This means that once an error is caught,\r\nit is not possible to remove the Error Boundary ui without manually\r\nperforming a full page refresh. I've mentioned this to @CoenWarmer and\r\ncreated a follow-up issue:\r\nhttps://github.com//issues/156172\r\n\r\n## Before\r\n\r\nhttps://user-images.githubusercontent.com/209966/235135444-d691b481-5441-449b-8555-77760877c3ba.mp4\r\n\r\n## After\r\n\r\nhttps://user-images.githubusercontent.com/209966/235135459-cc3d4318-d553-44ad-890b-c15bdeac9292.mp4\r\n\r\n---------\r\n\r\nCo-authored-by: kibanamachine <[email protected]>","sha":"66ab6b7464076126ee49c03a37f234280d8205a5"}}]}] BACKPORT--> Co-authored-by: Søren Louv-Jansen <[email protected]>
- Loading branch information