Closed ZerGo0 closed 1 day ago
Sounds like the instanceof check doesn't properly work within an extension context, so we should guard against falsy values as well - though in curious why Firefox behaves this way
I'm not sure if a simple null check would be a good enough fix. It would still fill the setters cache with stuff that usually wouldn't be in there, but this would fix the issue that I have. Not sure if the prototype constructor name is used anywhere else, either.
Can you open bug ticket on firefox bugzilla as well?
Can you open bug ticket on firefox bugzilla as well?
Here is the bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=1925835
It seems like it's messed up because of the sandbox.
Describe the bug
Firstly, I'm not 100% sure if this combination of libraries is supported (svelte 4 libs in svelte 5). I tried to reproduce it in a normal svelte project, but I wasn't able to reproduce it there.
I'm currently working on porting a browser extension over to svelte 5. In the final testing phase, I noticed that the Firefox version couldn't render any components. The chrome version worked just fine.
I'm using wxt as the browser extension framework and shadcn-svelte and lucide icon for basic components/icons. All of them are still using svelte 4. When I use any components from those libraries, I get the following error:
TypeError: proto is null
The exception gets thrown because the while loop in
attributes.js/get_setters
never breaks and eventually tries to get the prototype of the JSObject
which doesn't have a prototype. The next iteration throws the exception. All the prototypes that get used in that function don't have the name attribute in this case, which is why it doesn't break out of the while loop.Reproduction
https://github.com/ZerGo0/ftv-svelte5-reprod
This project uses pnpm.
I tried my best to make the example as small as possible. It's a pretty specific use case, all my elements are inside a shadow-root.
pnpm i
pnpm dev:firefox
Logs
System Info
Severity
blocking an upgrade