-
Notifications
You must be signed in to change notification settings - Fork 13.5k
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
bug: light dom custom element with comment node causes retainer #28189
Comments
Thanks for the report. I can reproduce this on the latest version of Ionic, but I need to take a closer look to understand why this is happening. Is this happening in an app you are building? |
Yes, it does. |
Do you have a minimal reproduction of the issue happening in that app? |
It is a production application that I can not really share, but It happens consistently every time I close a page that should be destroyed. Same as in the example app. |
Any minimal reproduction you can provide will make it easier for us to diagnose and potentially fix the issue. Otherwise, I'll keep working through the conference app. However, it is a big app so it will likely delay any results. |
Tried to recreate the behavior on a new app, but no luck there. My application is pretty similar to the conference app, but couldnt figure out what is the root cause. |
It might be best to start with your production application since you know the bug reproduces there. Then you can start removing code until you have a minimal working example. There does seem to be an issue in the Ionic conference app, but at the moment I have no way of knowing if this is the same bug that is impacting your app. |
My application is bigger then the conference one, but I will give it a try once I have time for it... I would be very surprised if it were two different bugs though. |
What version of Chrome are you using? I'm on |
117.0.5938.132 Tested it also in Firefox and also on different PC. All results the same. How come that even the heap size is so much different on the first snapshot I wonder |
Do you have an example of this happening in Firefox? (i.e. the heap snapshot) |
Not rly familiar with Firefox devtools. But this is how it looks. Could not find GC trigger, but hopefully it runs automatically before heap snapshot as in chrome. screen-capture.2.webm |
Got some interesting findings now. Chrome behavior:
Firefox behavior:
If I remove the footer component that I mentioned before, the Chrome starts to behave same way as Firefox. Leaking only for the first time and stay consistent after. |
Hey there! Apologies for the delay. I can confirm that certain components are being retained in memory when they should not be. I was able to determine that |
Great, I got rid of the footer because of this. looking forward to a fix. |
Any news on this? |
Can you give this a try in Ionic 7.7.0? The underlying Stencil bug should have been resolved in Stencil 4.11.0. |
Sadly still behaves the same way |
Thanks for testing. I spoke with the Stencil team, and it sounds like there may be multiple bugs in Stencil that need resolving. I'll work with them to see if we can find a good resolution here. |
@liamdebeasi, are there Github issues for these Stencil bugs? |
The issues that are potentially related are stenciljs/core#5181 and stenciljs/core#5172. The Stencil team is still investigating these issues. |
@terslada @aeharding we have just published a fix for this in Stencil and will continue to work with the Ionic team to get this updated in Ionic Framework as well. |
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@lerna-lite/cli](https://redirect.github.com/lerna-lite/lerna-lite) ([source](https://redirect.github.com/lerna-lite/lerna-lite/tree/HEAD/packages/cli)) | [`3.10.1` -> `3.11.0`](https://renovatebot.com/diffs/npm/@lerna-lite%2fcli/3.10.1/3.11.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@stencil/core](https://stenciljs.com/) ([source](https://redirect.github.com/ionic-team/stencil)) | [`4.23.0` -> `4.25.1`](https://renovatebot.com/diffs/npm/@stencil%2fcore/4.23.0/4.25.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@stencil/react-output-target](https://stenciljs.com/) ([source](https://redirect.github.com/ionic-team/stencil-ds-output-targets)) | [`0.8.1` -> `0.8.2`](https://renovatebot.com/diffs/npm/@stencil%2freact-output-target/0.8.1/0.8.2) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`22.10.2` -> `22.10.10`](https://renovatebot.com/diffs/npm/@types%2fnode/22.10.2/22.10.10) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@types/react](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | [`19.0.2` -> `19.0.8`](https://renovatebot.com/diffs/npm/@types%2freact/19.0.2/19.0.8) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@types/react-dom](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react-dom) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom)) | [`19.0.2` -> `19.0.3`](https://renovatebot.com/diffs/npm/@types%2freact-dom/19.0.2/19.0.3) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | [`8.18.2` -> `8.22.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.18.2/8.22.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | [`8.18.2` -> `8.22.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.18.2/8.22.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [eslint](https://eslint.org) ([source](https://redirect.github.com/eslint/eslint)) | [`9.17.0` -> `9.19.0`](https://renovatebot.com/diffs/npm/eslint/9.17.0/9.19.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [eslint-plugin-prettier](https://redirect.github.com/prettier/eslint-plugin-prettier) | [`5.2.1` -> `5.2.3`](https://renovatebot.com/diffs/npm/eslint-plugin-prettier/5.2.1/5.2.3) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [eslint-plugin-react](https://redirect.github.com/jsx-eslint/eslint-plugin-react) | [`7.37.3` -> `7.37.4`](https://renovatebot.com/diffs/npm/eslint-plugin-react/7.37.3/7.37.4) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [highlight.js](https://highlightjs.org/) ([source](https://redirect.github.com/highlightjs/highlight.js)) | [`11.11.0` -> `11.11.1`](https://renovatebot.com/diffs/npm/highlight.js/11.11.0/11.11.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [lint-staged](https://redirect.github.com/lint-staged/lint-staged) | [`15.2.11` -> `15.4.3`](https://renovatebot.com/diffs/npm/lint-staged/15.2.11/15.4.3) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | [typescript](https://www.typescriptlang.org/) ([source](https://redirect.github.com/microsoft/TypeScript)) | [`5.7.2` -> `5.7.3`](https://renovatebot.com/diffs/npm/typescript/5.7.2/5.7.3) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>lerna-lite/lerna-lite (@​lerna-lite/cli)</summary> ### [`v3.11.0`](https://redirect.github.com/lerna-lite/lerna-lite/blob/HEAD/packages/cli/CHANGELOG.md#3110-2025-01-02) [Compare Source](https://redirect.github.com/lerna-lite/lerna-lite/compare/v3.10.1...v3.11.0) ##### Bug Fixes - **deps:** update all non-major dependencies ([#​966](https://redirect.github.com/lerna-lite/lerna-lite/issues/966)) ([956ad09](https://redirect.github.com/lerna-lite/lerna-lite/commit/956ad098754c6869263afb92ec629be1ad968bbc)) - by [@​renovate](https://redirect.github.com/renovate)\[bot] </details> <details> <summary>ionic-team/stencil (@​stencil/core)</summary> ### [`v4.25.1`](https://redirect.github.com/ionic-team/stencil/blob/HEAD/CHANGELOG.md#-4251-2025-01-25) [Compare Source](https://redirect.github.com/ionic-team/stencil/compare/v4.25.0...v4.25.1) ##### Bug Fixes - **dist-custom-elements:** stop duplicate `@stencil/core` ([#​6109](https://redirect.github.com/ionic-team/stencil/issues/6109)) ([dc4c88f](https://redirect.github.com/ionic-team/stencil/commit/dc4c88f998de33c53fb94b73bffb913adf953cf3)), closes [#​6040](https://redirect.github.com/ionic-team/stencil/issues/6040), closes [#​4135](https://redirect.github.com/ionic-team/stencil/issues/4135) - **runtime:** allow classList to be null ([#​6118](https://redirect.github.com/ionic-team/stencil/issues/6118)) ([749fab9](https://redirect.github.com/ionic-team/stencil/commit/749fab9636d70429f67e61af92f4d932bf475ea5)), closes [#​6117](https://redirect.github.com/ionic-team/stencil/issues/6117) - **runtime:** fix NotFoundError in addStyle function with referenceNode parent check ([#​6107](https://redirect.github.com/ionic-team/stencil/issues/6107)) ([26ceed6](https://redirect.github.com/ionic-team/stencil/commit/26ceed69570761ed17c66e4bc38ff9d88ebe819c)), closes [#​6106](https://redirect.github.com/ionic-team/stencil/issues/6106) - **runtime:** SSR class handling breaks normal class handling ([#​6116](https://redirect.github.com/ionic-team/stencil/issues/6116)) ([1e8a2d2](https://redirect.github.com/ionic-team/stencil/commit/1e8a2d228810d92e3b2b6b271d547087df911ce7)), closes [#​6114](https://redirect.github.com/ionic-team/stencil/issues/6114), closes [#​6115](https://redirect.github.com/ionic-team/stencil/issues/6115) ##### Thanks 🎉# Thanks for [@​johnjenkins](https://redirect.github.com/johnjenkins) for their contributions! 🎉 ### [`v4.25.0`](https://redirect.github.com/ionic-team/stencil/blob/HEAD/CHANGELOG.md#-4250-2025-01-23) [Compare Source](https://redirect.github.com/ionic-team/stencil/compare/v4.24.0...v4.25.0) ##### Bug Fixes - **SSR:** class prop / state reactivity for target es2022 ([#​6099](https://redirect.github.com/ionic-team/stencil/issues/6099)) ([07dcfa8](https://redirect.github.com/ionic-team/stencil/commit/07dcfa84e223820046fef2e0eab91c313f26fa81)), closes [#​6095](https://redirect.github.com/ionic-team/stencil/issues/6095) - **test:** stop re-running prototype augment in spec tests. ([#​6105](https://redirect.github.com/ionic-team/stencil/issues/6105)) ([a7d3873](https://redirect.github.com/ionic-team/stencil/commit/a7d38735a8572303fa2ea7e154e9a9dc3bf7eecb)), closes [#​6104](https://redirect.github.com/ionic-team/stencil/issues/6104) ##### Features - **mock-doc:** `assignednodes` and `assignedElements` ([#​6108](https://redirect.github.com/ionic-team/stencil/issues/6108)) ([777aafd](https://redirect.github.com/ionic-team/stencil/commit/777aafd57b6b03dc972e0f0bada648bf8af1f42f)) - **runtime:** Add element to component error handler. Enables error boundaries ([#​2979](https://redirect.github.com/ionic-team/stencil/issues/2979)) ([5605d48](https://redirect.github.com/ionic-team/stencil/commit/5605d48d1c9f42279ab3442b625007edcd7a9e3f)) ##### Reverts - Revert "fix(custom-elements): hydrate on client side ([#​5317](https://redirect.github.com/ionic-team/stencil/issues/5317))" ([#​6111](https://redirect.github.com/ionic-team/stencil/issues/6111)) ([375fa8b](https://redirect.github.com/ionic-team/stencil/commit/375fa8b8a9bac61afbef5dfd69f4e641bae45533)) ### [`v4.24.0`](https://redirect.github.com/ionic-team/stencil/blob/HEAD/CHANGELOG.md#-4240-2025-01-17) [Compare Source](https://redirect.github.com/ionic-team/stencil/compare/v4.23.2...v4.24.0) ##### Bug Fixes - **runtime:** clean up ancestor nodes on resolve ([#​6094](https://redirect.github.com/ionic-team/stencil/issues/6094)) ([2503dc5](https://redirect.github.com/ionic-team/stencil/commit/2503dc5293479f2fc161cdaee61846dffb4dcea6)) - **testing:** update puppeteer, default to 'new' headless ([#​6098](https://redirect.github.com/ionic-team/stencil/issues/6098)) ([6537869](https://redirect.github.com/ionic-team/stencil/commit/6537869f917449c59e88b8bf57f3dcfdf0f2d077)) ##### Features - **runtime:** `@Prop` / `@State` now work with runtime decorators ([#​6084](https://redirect.github.com/ionic-team/stencil/issues/6084)) ([82fc857](https://redirect.github.com/ionic-team/stencil/commit/82fc857518883cc75b265f2381e36777e8047840)) - **slot-polyfill:** patch insertBefore & slotted node parentNode ([#​6096](https://redirect.github.com/ionic-team/stencil/issues/6096)) ([efb40d5](https://redirect.github.com/ionic-team/stencil/commit/efb40d598d3c5e5d4ae58780e03ea0ae9816b211)), closes [#​6043](https://redirect.github.com/ionic-team/stencil/issues/6043) ##### Thanks 🎉# Thanks for [@​johnjenkins](https://redirect.github.com/johnjenkins) for their contributions! 🎉 #### 🌮 [4.23.2](https://redirect.github.com/ionic-team/stencil/compare/v4.23.1...v4.23.2) (2025-01-10) ##### Bug Fixes - **runtime:** clear up rootAppliedStyles ([#​6087](https://redirect.github.com/ionic-team/stencil/issues/6087)) ([c4a9c9e](https://redirect.github.com/ionic-team/stencil/commit/c4a9c9e7bd168d6e0e6b6d83ad338c0179c1e731)), refs [@​ionic-team/ionic-framework#28189](https://redirect.github.com/ionic-team/ionic-framework/issues/28189), closes [#​5181](https://redirect.github.com/ionic-team/stencil/issues/5181), closes [#​5172](https://redirect.github.com/ionic-team/stencil/issues/5172), closes [#​3607](https://redirect.github.com/ionic-team/stencil/issues/3607), closes [#​3158](https://redirect.github.com/ionic-team/stencil/issues/3158) #### 🌯 [4.23.1](https://redirect.github.com/ionic-team/stencil/compare/v4.23.0...v4.23.1) (2025-01-06) ##### Bug Fixes - correctly handle svg class attribute within `parseClassList` ([#​6085](https://redirect.github.com/ionic-team/stencil/issues/6085)) ([5d29255](https://redirect.github.com/ionic-team/stencil/commit/5d2925593410fc53ef2fc989c3d33ceb4cf9b503)) - **mock-doc:** don't force template tags to have a shadowroot ([#​6078](https://redirect.github.com/ionic-team/stencil/issues/6078)) ([b63039f](https://redirect.github.com/ionic-team/stencil/commit/b63039f10c2c4e01114e2d11bc29b60ba1e486d9)) - runtime decorators ([#​6076](https://redirect.github.com/ionic-team/stencil/issues/6076)) ([9e6483a](https://redirect.github.com/ionic-team/stencil/commit/9e6483a3f41718c46f13cdc1528c8138110688d0)), closes [#​3831](https://redirect.github.com/ionic-team/stencil/issues/3831) - **scoped:** fixes for `<slot />` and slotted nodes ([#​6082](https://redirect.github.com/ionic-team/stencil/issues/6082)) ([13ee704](https://redirect.github.com/ionic-team/stencil/commit/13ee7049d3e30ee17135965ad7e2c6172e637c09)), closes [#​6080](https://redirect.github.com/ionic-team/stencil/issues/6080), [#​6081](https://redirect.github.com/ionic-team/stencil/issues/6081) and [#​6088](https://redirect.github.com/ionic-team/stencil/issues/6088) - **SSR:** patch `scoped: true` SSR-ed, slotted nodes next/prev sibling accessors ([#​6057](https://redirect.github.com/ionic-team/stencil/issues/6057)) ([af102ce](https://redirect.github.com/ionic-team/stencil/commit/af102ce8c7faaf1f999c09faefb4aeb55145dade)), closes [#​6056](https://redirect.github.com/ionic-team/stencil/issues/6056) ### [`v4.23.2`](https://redirect.github.com/ionic-team/stencil/blob/HEAD/CHANGELOG.md#-4232-2025-01-10) [Compare Source](https://redirect.github.com/ionic-team/stencil/compare/v4.23.1...v4.23.2) ##### Bug Fixes - **runtime:** clear up rootAppliedStyles ([#​6087](https://redirect.github.com/ionic-team/stencil/issues/6087)) ([c4a9c9e](https://redirect.github.com/ionic-team/stencil/commit/c4a9c9e7bd168d6e0e6b6d83ad338c0179c1e731)), refs [@​ionic-team/ionic-framework#28189](https://redirect.github.com/ionic-team/ionic-framework/issues/28189), closes [#​5181](https://redirect.github.com/ionic-team/stencil/issues/5181), closes [#​5172](https://redirect.github.com/ionic-team/stencil/issues/5172), closes [#​3607](https://redirect.github.com/ionic-team/stencil/issues/3607), closes [#​3158](https://redirect.github.com/ionic-team/stencil/issues/3158) ### [`v4.23.1`](https://redirect.github.com/ionic-team/stencil/blob/HEAD/CHANGELOG.md#-4231-2025-01-06) [Compare Source](https://redirect.github.com/ionic-team/stencil/compare/v4.23.0...v4.23.1) ##### Bug Fixes - correctly handle svg class attribute within `parseClassList` ([#​6085](https://redirect.github.com/ionic-team/stencil/issues/6085)) ([5d29255](https://redirect.github.com/ionic-team/stencil/commit/5d2925593410fc53ef2fc989c3d33ceb4cf9b503)) - **mock-doc:** don't force template tags to have a shadowroot ([#​6078](https://redirect.github.com/ionic-team/stencil/issues/6078)) ([b63039f](https://redirect.github.com/ionic-team/stencil/commit/b63039f10c2c4e01114e2d11bc29b60ba1e486d9)) - runtime decorators ([#​6076](https://redirect.github.com/ionic-team/stencil/issues/6076)) ([9e6483a](https://redirect.github.com/ionic-team/stencil/commit/9e6483a3f41718c46f13cdc1528c8138110688d0)), closes [#​3831](https://redirect.github.com/ionic-team/stencil/issues/3831) - **scoped:** fixes for `<slot />` and slotted nodes ([#​6082](https://redirect.github.com/ionic-team/stencil/issues/6082)) ([13ee704](https://redirect.github.com/ionic-team/stencil/commit/13ee7049d3e30ee17135965ad7e2c6172e637c09)), closes [#​6080](https://redirect.github.com/ionic-team/stencil/issues/6080), [#​6081](https://redirect.github.com/ionic-team/stencil/issues/6081) and [#​6088](https://redirect.github.com/ionic-team/stencil/issues/6088) - **SSR:** patch `scoped: true` SSR-ed, slotted nodes next/prev sibling accessors ([#​6057](https://redirect.github.com/ionic-team/stencil/issues/6057)) ([af102ce](https://redirect.github.com/ionic-team/stencil/commit/af102ce8c7faaf1f999c09faefb4aeb55145dade)), closes [#​6056](https://redirect.github.com/ionic-team/stencil/issues/6056) </details> <details> <summary>ionic-team/stencil-ds-output-targets (@​stencil/react-output-target)</summary> ### [`v0.8.2`](https://redirect.github.com/ionic-team/stencil-ds-output-targets/releases/tag/v0.8.2) [Compare Source](https://redirect.github.com/ionic-team/stencil-ds-output-targets/compare/v0.8.1...v0.8.2) #### What's Changed - fix(vue): apply vue component name to wrapper by [@​sean-perkins](https://redirect.github.com/sean-perkins) & [@​liamdebeasi](https://redirect.github.com/liamdebeasi) in [https://github.com/ionic-team/stencil-ds-output-targets/pull/257](https://redirect.github.com/ionic-team/stencil-ds-output-targets/pull/257) **Full Changelog**: stenciljs/output-targets@v0.8.1...v0.8.2 </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)</summary> ### [`v8.22.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8220-2025-01-27) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.21.0...v8.22.0) ##### 🩹 Fixes - **eslint-plugin:** \[no-unnecessary-template-expression] handle template literal type ([#​10612](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10612)) - **eslint-plugin:** \[prefer-readonly] autofixer doesn't add type to property that is mutated in the constructor ([#​10552](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10552)) - **eslint-plugin:** \[no-extraneous-class] handle accessor keyword ([#​10678](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10678)) - **eslint-plugin:** \[no-shadow] don't report unnecessarily on valid ways of using module augmentation ([#​10616](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10616)) - **eslint-plugin:** \[no-duplicate-type-constituents] handle nested types ([#​10638](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10638)) - **eslint-plugin:** \[prefer-nullish-coalescing] doesn't report on ternary but on equivalent || ([#​10517](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10517)) ##### ❤️ Thank You - mdm317 - Olivier Zalmanski [@​OlivierZal](https://redirect.github.com/OlivierZal) - Ronen Amiel - YeonJuan [@​yeonjuan](https://redirect.github.com/yeonjuan) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v8.21.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8210-2025-01-20) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.20.0...v8.21.0) ##### 🩹 Fixes - **eslint-plugin:** \[no-duplicate-enum-values] handle template literal ([#​10675](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10675)) - **eslint-plugin:** \[no-base-to-string] don't crash for recursive array or tuple types ([#​10633](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10633)) - **eslint-plugin:** \[no-for-in-array] report on any type which may be an array or array-like ([#​10535](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10535)) - **eslint-plugin:** check JSX spread elements for misused spread usage ([#​10653](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10653)) - **eslint-plugin:** \[no-unnecessary-type-arguments] handle type args on jsx ([#​10630](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10630)) ##### ❤️ Thank You - Ronen Amiel - YeonJuan [@​yeonjuan](https://redirect.github.com/yeonjuan) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v8.20.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8200-2025-01-13) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.19.1...v8.20.0) ##### 🚀 Features - **eslint-plugin:** \[consistent-type-assertions] add arrayLiteralTypeAssertions options ([#​10565](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10565)) - **eslint-plugin:** \[no-deprecated] add allow options ([#​10585](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10585)) - **eslint-plugin:** \[no-misused-spread] add new rule ([#​10551](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10551)) ##### 🩹 Fixes - **eslint-plugin:** \[no-unnecessary-condition] don't flag optional chaining for union types with an unconstrained type parameters ([#​10602](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10602)) - **eslint-plugin:** \[no-shadow] ignore ordering of type declarations ([#​10593](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10593)) ##### ❤️ Thank You - Josh Goldberg ✨ - Ronen Amiel - YeonJuan [@​yeonjuan](https://redirect.github.com/yeonjuan) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v8.19.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8191-2025-01-06) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.19.0...v8.19.1) ##### 🩹 Fixes - **eslint-plugin:** \[no-unnecessary-type-assertion] handle literal types ([#​10523](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10523)) - **eslint-plugin:** \[no-deprecated] doesn't report on shorthand property in an object expression ([#​10550](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10550)) - **eslint-plugin:** \[strict-boolean-expressions] remove remaining (unsafe) autofixes ([#​10548](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10548)) - **eslint-plugin:** \[no-shadow] report correctly on parameters of functions declared with the `declare` keyword ([#​10543](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10543)) - **eslint-plugin:** \[no-base-to-string] check array generic type ([#​10437](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10437)) ##### ❤️ Thank You - Kirk Waiblinger - mdm317 - Ronen Amiel - Yukihiro Hasegawa [@​y-hsgw](https://redirect.github.com/y-hsgw) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v8.19.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8190-2024-12-30) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.18.2...v8.19.0) ##### 🚀 Features - **eslint-plugin:** \[strict-boolean-expressions] check array predicate functions' return statements ([#​10106](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10106)) ##### 🩹 Fixes - **eslint-plugin:** \[member-ordering] ignore method overloading ([#​10536](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10536)) - **eslint-plugin:** \[consistent-indexed-object-style] don't report on indirect circular references ([#​10537](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10537)) - **eslint-plugin:** \[array-type] autofix with conditional types needs parentheses ([#​10522](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10522)) - **eslint-plugin:** add getConstraintInfo to handle generic constraints better ([#​10496](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10496)) ##### ❤️ Thank You - Karl Werner - Kirk Waiblinger [@​kirkwaiblinger](https://redirect.github.com/kirkwaiblinger) - Ronen Amiel - YeonJuan [@​yeonjuan](https://redirect.github.com/yeonjuan) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/parser)</summary> ### [`v8.22.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8220-2025-01-27) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.21.0...v8.22.0) ##### 🚀 Features - **parser:** add standalone isolatedDeclarations option ([#​10499](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10499)) ##### ❤️ Thank You - Josh Goldberg ✨ You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v8.21.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8210-2025-01-20) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.20.0...v8.21.0) This was a version bump only for parser to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v8.20.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8200-2025-01-13) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.19.1...v8.20.0) This was a version bump only for parser to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v8.19.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8191-2025-01-06) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.19.0...v8.19.1) This was a version bump only for parser to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. ### [`v8.19.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8190-2024-12-30) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.18.2...v8.19.0) This was a version bump only for parser to align it with other projects, there were no code changes. You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. </details> <details> <summary>eslint/eslint (eslint)</summary> ### [`v9.19.0`](https://redirect.github.com/eslint/eslint/compare/v9.18.0...208e0b199f5d5f9dd173e58e3f5db19c1f0c38ed) [Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.18.0...v9.19.0) ### [`v9.18.0`](https://redirect.github.com/eslint/eslint/compare/v9.17.0...1c87b415313b4aacda496b3b26efc4e0b93dc13a) [Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.17.0...v9.18.0) </details> <details> <summary>prettier/eslint-plugin-prettier (eslint-plugin-prettier)</summary> ### [`v5.2.3`](https://redirect.github.com/prettier/eslint-plugin-prettier/blob/HEAD/CHANGELOG.md#523) [Compare Source](https://redirect.github.com/prettier/eslint-plugin-prettier/compare/v5.2.2...v5.2.3) ##### Patch Changes - [#​703](https://redirect.github.com/prettier/eslint-plugin-prettier/pull/703) [`9c6141f`](https://redirect.github.com/prettier/eslint-plugin-prettier/commit/9c6141f2436de0bf379bef91b30fe1b0bc737cf2) Thanks [@​BPScott](https://redirect.github.com/BPScott)! - Add name field to recommended flat config ### [`v5.2.2`](https://redirect.github.com/prettier/eslint-plugin-prettier/blob/HEAD/CHANGELOG.md#522) [Compare Source](https://redirect.github.com/prettier/eslint-plugin-prettier/compare/v5.2.1...v5.2.2) ##### Patch Changes - [#​700](https://redirect.github.com/prettier/eslint-plugin-prettier/pull/700) [`aa5b59f`](https://redirect.github.com/prettier/eslint-plugin-prettier/commit/aa5b59f7d98431bdb9559d079619065f812a2420) Thanks [@​ntnyq](https://redirect.github.com/ntnyq)! - fix: report node when loc not found </details> <details> <summary>jsx-eslint/eslint-plugin-react (eslint-plugin-react)</summary> ### [`v7.37.4`](https://redirect.github.com/jsx-eslint/eslint-plugin-react/blob/HEAD/CHANGELOG.md#7374---20250112) [Compare Source](https://redirect.github.com/jsx-eslint/eslint-plugin-react/compare/v7.37.3...v7.37.4) ##### Fixed - \[`no-unknown-property`]: support `onBeforeToggle`, `popoverTarget`, `popoverTargetAction` attributes ([#​3865][] [@​acusti](https://redirect.github.com/acusti)) - \[types] fix types of flat configs ([#​3874][] [@​ljharb](https://redirect.github.com/ljharb)) [7.37.4]: https://redirect.github.com/jsx-eslint/eslint-plugin-react/compare/v7.37.3...v7.37.4 [#​3874]: https://redirect.github.com/jsx-eslint/eslint-plugin-react/pull/3874 [#​3865]: https://redirect.github.com/jsx-eslint/eslint-plugin-react/pull/3865 </details> <details> <summary>highlightjs/highlight.js (highlight.js)</summary> ### [`v11.11.1`](https://redirect.github.com/highlightjs/highlight.js/blob/HEAD/CHANGES.md#Version-11111) [Compare Source](https://redirect.github.com/highlightjs/highlight.js/compare/11.11.0...11.11.1) - Fixes regression with Rust grammar. </details> <details> <summary>lint-staged/lint-staged (lint-staged)</summary> ### [`v15.4.3`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1543) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.4.2...v15.4.3) ##### Patch Changes - [#​1512](https://redirect.github.com/lint-staged/lint-staged/pull/1512) [`cbfed1d`](https://redirect.github.com/lint-staged/lint-staged/commit/cbfed1dfd2465c4198c692955281f0836600bea1) Thanks [@​tarik02](https://redirect.github.com/tarik02)! - Adjust TypeScript types for the default export so that it can be used as a value without error TS2693. ### [`v15.4.2`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1542) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.4.1...v15.4.2) ##### Patch Changes - [#​1509](https://redirect.github.com/lint-staged/lint-staged/pull/1509) [`8827ebf`](https://redirect.github.com/lint-staged/lint-staged/commit/8827ebf29dc8f25149a36450b4a0023425202e18) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Change *lint-staged*'s dependencies to use [caret (`^`) ranges](https://docs.npmjs.com/cli/v6/using-npm/semver#caret-ranges-123-025-004) instead of [tilde (`~`)](https://docs.npmjs.com/cli/v6/using-npm/semver#tilde-ranges-123-12-1). This makes it easier for package managers to perform dependency management when minor-level updates are also permitted instead of just patch-level. ### [`v15.4.1`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1541) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.4.0...v15.4.1) ##### Patch Changes - [#​1504](https://redirect.github.com/lint-staged/lint-staged/pull/1504) [`1c7a45e`](https://redirect.github.com/lint-staged/lint-staged/commit/1c7a45ed2c7fee9d5f55337be16a51e4c9b240e1) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Default TypeScript config filenames match JS equivalents. - [#​1504](https://redirect.github.com/lint-staged/lint-staged/pull/1504) [`9cc18c9`](https://redirect.github.com/lint-staged/lint-staged/commit/9cc18c9debb185490f9ae4f9c1d21ec8c2587393) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Add missing conditional exports syntax for TypeScript types. ### [`v15.4.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1540) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.3.0...v15.4.0) ##### Minor Changes - [#​1500](https://redirect.github.com/lint-staged/lint-staged/pull/1500) [`a8ec1dd`](https://redirect.github.com/lint-staged/lint-staged/commit/a8ec1ddb587d2c1c2420dbb4baff8160f0ac46c9) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - *Lint-staged* now provides TypeScript types for the configuration and main Node.js API. You can use the JSDoc syntax in your JS configuration files: ```js /** * @​filename: lint-staged.config.js * @​type {import('lint-staged').Configuration} */ export default { '*': 'prettier --write', } ``` It's also possible to use the `.ts` file extension for the configuration if your Node.js version supports it. The `--experimental-strip-types` flag was introduced in [Node.js v22.6.0](https://redirect.github.com/nodejs/node/releases/tag/v22.6.0) and unflagged in [v23.6.0](https://redirect.github.com/nodejs/node/releases/tag/v23.6.0), enabling Node.js to execute TypeScript files without additional configuration. ```shell export NODE_OPTIONS="--experimental-strip-types" npx lint-staged --config lint-staged.config.ts ``` ##### Patch Changes - [#​1501](https://redirect.github.com/lint-staged/lint-staged/pull/1501) [`9b79364`](https://redirect.github.com/lint-staged/lint-staged/commit/9b793640e1f87b46e4f40fcfc1ecf9d6f6013ac9) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Handle possible failures when logging user shell for debug info. ### [`v15.3.0`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1530) [Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.2.11...v15.3.0) ##### Minor Changes - [#​1495](https://redirect.github.com/lint-staged/lint-staged/pull/1495) [`e69da9e`](https://redirect.github.com/lint-staged/lint-staged/commit/e69da9e614db2d45f56e113d45d5ec0157813423) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Added more info to the debug logs so that "environment" info doesn't need to be added separately to GitHub issues. - [#​1493](https://redirect.github.com/lint-staged/lint-staged/pull/1493) [`fa0fe98`](https://redirect.github.com/lint-staged/lint-staged/commit/fa0fe98104f8885f673b98b8b49ae586de699c5e) Thanks [@​iiroj](https://redirect.github.com/iiroj)! - Added more help messages around the automatic `git stash` that *lint-staged* creates as a backup (by default). The console output also displays the short git *hash* of the stash so that it's easier to recover lost files in case some fatal errors are encountered, or the process is killed before completing. For example: % npx lint-staged ✔ Backed up original state in git stash (20addf8) ✔ Running tasks for staged files... ✔ Applying modifications from tasks... ✔ Cleaning up temporary files... where the backup can be seen with `git show 20addf8`, or `git stash list`: % git stash list stash@{0}: lint-staged automatic backup (20addf8) </details> <details> <summary>microsoft/TypeScript (typescript)</summary> ### [`v5.7.3`](https://redirect.github.com/microsoft/TypeScript/compare/v5.7.2...a5e123d9e0690fcea92878ea8a0a382922009fc9) [Compare Source](https://redirect.github.com/microsoft/TypeScript/compare/v5.7.2...v5.7.3) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/Aiko-IT-Systems/Discord-React-Components). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS44MC4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTI1LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
Prerequisites
Ionic Framework Version
v7.x
Current Behavior
When navigating between pages that should not be reused, there are leaks in both nodes and listeners, which makes the application unusable after a while.
Expected Behavior
Pages should be disposed correctly
Steps to Reproduce
Reproducible even inside your ionic conference app example. Simply navigate between schedule and support pages and watch the performance monitor.

Code Reproduction URL
https://github.com/ionic-team/ionic-conference-app
Ionic Info
Ionic:
Ionic CLI : 6.19.0
Ionic Framework : not installed
@angular-devkit/build-angular : 16.0.0
@angular-devkit/schematics : 16.0.0
@angular/cli : 16.0.0
@ionic/angular-toolkit : 6.1.0
Capacitor:
Capacitor CLI : 4.6.3
@capacitor/android : 4.6.3
@capacitor/core : 4.6.3
@capacitor/ios : 4.6.3
Utility:
cordova-res : 0.15.4
native-run : 1.7.1
System:
NodeJS : v18.16.1 (C:\Program Files\nodejs\node.exe)
npm : 9.7.2
OS : Windows 10
Additional Information
No response
The text was updated successfully, but these errors were encountered: