qwik
qwik copied to clipboard
Trivial constants sometimes misdetected as mutable
Qwik Version
0.0.33
Operating System (or Browser)
OSX
Node Version (if applicable)
16
Which component is affected?
Qwik Runtime
Expected Behaviour
Mutable error emitted only on data that changes
Actual Behaviour
In a component source file, define a global constant.
export const foo = [];
In the component, bind that to something
blah={foo}
No other code refers to this constant, and the child component does not use the prop at all.
In some cases (maybe only "production" builds?), an error nonetheless occurs, stating that mutable() should have been used.
It displays a before and after value, visually identical.
Additional Information
I will hopefully isolate this with a minimum repro in the future; but I entered it now in case someone spots this and knows what is wrong.
maybe, instead of a repo, you could try reproduce in the playground! https://qwik.builder.io/playground
Not sure how this bug could be happening…
We're in luck, it reproduces in the playground:
https://qwik.builder.io/playground#version=0.0.33&buildMode=development&entryStrategy=hook&files=JTVCJTdCJTIycGF0aCUyMiUzQSUyMiUyRmFwcC50c3glMjIlMkMlMjJjb2RlJTIyJTNBJTIyaW1wb3J0JTIwJTdCJTIwY29tcG9uZW50JTI0JTJDJTIwdXNlU3RvcmUlMkMlMjBtdXRhYmxlJTIwJTdEJTIwZnJvbSUyMCclNDBidWlsZGVyLmlvJTJGcXdpayclM0IlNUNuJTVDbmV4cG9ydCUyMGNvbnN0JTIwSGVsbG8lMjAlM0QlMjBjb21wb25lbnQlMjQoKHByb3BzJTNBJTIwYW55KSUyMCUzRCUzRSUyMCU3QiU1Q24lMjAlMjByZXR1cm4lMjAlM0NkaXYlM0UlNUNuJTIwJTIwJTIwJTNDaDElM0UlN0Jwcm9wcy5uYW1lJTdEJTIwYWdlJTIwJTdCcHJvcHMuYWdlJTdEJTNDJTJGaDElM0UlNUNuJTIwJTIwJTIwJTdCcHJvcHMuaG9iYmllcy5tYXAoaCUyMCUzRCUzRSUyMCUzQ3AlM0UlN0JoJTdEJTNDJTJGcCUzRSklN0QlNUNuJTIwJTIwJTIwJTNDJTJGZGl2JTNFJTVDbiU3RCklM0IlNUNuJTVDbmV4cG9ydCUyMGNvbnN0JTIwaG9iYmllcyUyMCUzRCUyMCU1QiU1QyUyMmNhcmRzJTVDJTIyJTJDJTIwJTVDJTIyZ29sZiU1QyUyMiU1RCUzQiU1Q24lNUNuZXhwb3J0JTIwY29uc3QlMjBBcHAlMjAlM0QlMjBjb21wb25lbnQlMjQoKCklMjAlM0QlM0UlMjAlN0IlNUNuJTIwJTIwY29uc3QlMjBzdCUyMCUzRCUyMHVzZVN0b3JlKCU3QmFnZSUzQSUyMDMyJTdEKSU1Q24lMjAlMjByZXR1cm4lMjAlM0NkaXYlM0UlNUNuJTIwJTIwJTIwJTIwJTNDcCUzRUhlbGxvJTIwUXdpayUzQyUyRnAlM0UlNUNuJTIwJTIwJTIwJTIwJTNDSGVsbG8lMjBuYW1lJTNEJTdCJTVDJTIyQm9iJTVDJTIyJTdEJTIwYWdlJTNEJTdCbXV0YWJsZShzdC5hZ2UpJTdEJTIwaG9iYmllcyUzRCU3QmhvYmJpZXMlN0QlM0UlM0MlMkZIZWxsbyUzRSU1Q24lMjAlMjAlMjAlMjAlM0NidXR0b24lMjBvbkNsaWNrJTI0JTNEJTdCKCklMjAlM0QlM0UlMjBzdC5hZ2UlMkIlMkIlN0QlM0V0aW1lJTIwcGFzc2VzJTNDJTJGYnV0dG9uJTNFJTVDbiUyMCUyMCUyMCUzQyUyRmRpdiUzRSUzQiU1Q24lN0QpJTNCJTVDbiU1Q24lMjIlN0QlMkMlN0IlMjJwYXRoJTIyJTNBJTIyJTJGZW50cnkuc2VydmVyLnRzeCUyMiUyQyUyMmNvZGUlMjIlM0ElMjJpbXBvcnQlMjAlN0IlMjByZW5kZXJUb1N0cmluZyUyQyUyMFJlbmRlck9wdGlvbnMlMjAlN0QlMjBmcm9tJTIwJyU0MGJ1aWxkZXIuaW8lMkZxd2lrJTJGc2VydmVyJyUzQiU1Q25pbXBvcnQlMjAlN0IlMjBSb290JTIwJTdEJTIwZnJvbSUyMCcuJTJGcm9vdCclM0IlNUNuJTVDbmV4cG9ydCUyMGZ1bmN0aW9uJTIwcmVuZGVyKG9wdHMlM0ElMjBSZW5kZXJPcHRpb25zKSUyMCU3QiU1Q24lMjAlMjByZXR1cm4lMjByZW5kZXJUb1N0cmluZyglM0NSb290JTIwJTJGJTNFJTJDJTIwb3B0cyklM0IlNUNuJTdEJTVDbiUyMiU3RCUyQyU3QiUyMnBhdGglMjIlM0ElMjIlMkZyb290LnRzeCUyMiUyQyUyMmNvZGUlMjIlM0ElMjJpbXBvcnQlMjAlN0IlMjBBcHAlMjAlN0QlMjBmcm9tJTIwJy4lMkZhcHAnJTNCJTVDbiU1Q25leHBvcnQlMjBjb25zdCUyMFJvb3QlMjAlM0QlMjAoKSUyMCUzRCUzRSUyMCU3QiU1Q24lMjAlMjByZXR1cm4lMjAoJTVDbiUyMCUyMCUyMCUyMCUzQ2h0bWwlM0UlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTNDaGVhZCUzRSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0N0aXRsZSUzRUhlbGxvJTIwUXdpayUzQyUyRnRpdGxlJTNFJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRmhlYWQlM0UlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTNDYm9keSUzRSU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NBcHAlMjAlMkYlM0UlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGYm9keSUzRSU1Q24lMjAlMjAlMjAlMjAlM0MlMkZodG1sJTNFJTVDbiUyMCUyMCklM0IlNUNuJTdEJTNCJTVDbiUyMiU3RCU1RA%3D%3D
This might turn out to be array-specific, maybe arrays are always detected as a mutation even with neither the identity or state of the array changes.
@manucorporat This appears to work on latest now that mutable has been deprecated.
@shairez @manucorporat @adamdbradley 🔝sry for pinging you again 👼 what @nnelgxorz said: on latest version mutation
is deprecated therefor this issue won't exist any longer.
Thanks @zanettin for the triaging!
Closing this for now, feel free to re-open if it's still relevant