svelte-chartjs
svelte-chartjs copied to clipboard
[Bug]: Incompatible with Svelte 5 (pre-release)
Would you like to work on a fix?
- [ ] Check this if you would like to implement a PR, we are more than happy to help you go through the process.
Current and expected behavior
Importing a chartjs component (e.g. Bar) with Svelte 5 ([email protected]) yields this error message:
Your application, or one of its dependencies, imported from 'svelte/internal', which was a private module used by Svelte 4 components that no longer exists in Svelte 5. It is not intended to be public API. If you're a library author and you used 'svelte/internal' deliberately, please raise an issue on https://github.com/sveltejs/svelte/issues detailing your use case.
I haven't looked any further than simply confirming the import in this library:
https://github.com/SauravKanchan/svelte-chartjs/blob/4333128d3f47b7e8c9a7a77177ad8592c2e22999/src/utils/svelte.ts#L1-L6
Reproduction
[did not create shareable repro - merely confirmed svelte/internal is import]
chart.js version
4.4.2
svelte-chartjs version
3.1.5
Possible solution
No response
I just updated my project to svelte [email protected] and I encountered the same issue.
I've implemented a fix here: https://github.com/anowell/svelte-chartjs/commit/155042fc4866615014a12414b3b4815223bcb0b3
It's basically a rewrite of src/util/svelte.ts to work directly with the DOM, and then changes to the base Chart component to setup event listeners more explicitly.
It's certainly a breaking change, and I don't know that it's "correct", but it seems to work, still supports attaching event listeners (tested on the Bar chart storybook story), and I think it cleans them up. And I didn't mean to bump so many devDependencies, but I'm several years removed from the frontend dev tooling ecosystem so might have run a few too many unneeded pnpm commands.
From here, what it would take for this repo/package to support Svelte 5? Is it a new version? Should we wait for Svelte 5 to release? Is there an expectation of Svelte 4 compatibility? Is there some glaring issue with the implementation? Is there some other testing expectation I've completely overlooked? I could put together a PR if the missing pieces are relatively small, or I'm happy to have someone steal whatever they need from my change to put together a better solution.
Fwiw, I'm currently using it in a prototype with no intent to maintain beyond that prototype, so I advise against using my fork for anything beyond experimenting/testing.
@SauravKanchan is this work planned? Would love to continue to use this library in svelte.
Same issue here, this doesn't work for Svelte 5.