-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
[Svelte 5] False positive firefox ownership_invalid_mutation warning #13139
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
Comments
When possible it's better to provide REPL. Here is one : REPL I can confirm this is only happening on firefox (tested with Svelte 5 next 144 + Firefox 130) |
@jamesst20 you need to split everything to two separate packages. I thought it is impossible ot reproduce in playground. I am really surprised that you managed to reproduce it in playground |
I though it was weird to require to have 2 separate project. At first I thought maybe it was SvelteKit related but doesn't appear so as it works in REPL. I am no experts in how Svelte works internally so I will let other investigate but it's odd it requires the inspector of Firefox to be opened prior loading the page |
Previously we were doing stack-based retrieval of the owner, which while catching more cases was costly (performance-wise) and prone to errors (as shown by many issues over the months). This drastically simplifies the ownership validation - we now only do simple static analysis to check which props are mutated and wrap them with runtime checks to see if a binding was established. Besides making the implementation simpler and more performant, this also follows an insight we had over the months: Most people don't really know what to do with this warning when it's shown beyond very simple cases. Either it's not actionable because they don't really know how to fix it or they question if they should at all (in some cases rightfully so). Now that the warning is only shown in simple and easy-to-reason-about cases, it has a much better signal-to-noise-ratio and will hopefully guide people in the right direction early on (learn from the obvious cases to not write spaghetti code in more complex cases). closes #15532 closes #15210 closes #14893 closes #13607 closes #13139 closes #11861
Describe the bug
Got
ownership_invalid_mutation
warning on every$state
rune update, if update was triggered from parent snippet and$state
was created inside child component using function from external lib.Reproduction
I have described the most detailed reproduction in this repository. There is also a full explanation of the cause of the bug.
Shortened reproduction:
npm create svelte@latest
.svelte
component and function that creates for example onclick handler that updates$state
npm create svelte@latest
app repo and make sure is is optimized with vite.svelte
component that accepts a snippet as a prop and passes return from lib funtion to itlib index.ts
lib hook.svelte.ts
app +page.svelte
app Wrapper.svelte
Bug happens due to how (check_ownership)[https://github.com/sveltejs/svelte/blob/main/packages/svelte/src/internal/client/dev/ownership.js#L246] function from svelte source code parses
new Error().stack
for firefox.Full explanation in this repo.
Logs
No response
System Info
Severity
annoyance
The text was updated successfully, but these errors were encountered: