-
Notifications
You must be signed in to change notification settings - Fork 1.3k
fix(core): serialize the 'key' attribute of JSX nodes #5501
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
Conversation
Added serialization and deserialization of the 'key' attribute, the only member of JSXNodeImpl which was not serialized thus far. Issue QwikDev#5496
👷 Deploy request for qwik-insights pending review.Visit the deploys page to approve it
|
Note that the 'key' attribute is populated by some value whenever it is not explicitely set, e.g. '81_1'. Therefor with this change we can expect an increase in byte size of serialized nodes whether or not they had their 'key' attribute set explicitely. However I don't see a way around paying this price, if we want perfect serialization/resumption. |
We could also check that the key is a short number or string that doesn't need serialization? The dev can choose it. I don't see why we should allow arbitrary keys. Let's make it max 16 characters? |
The thing with keys, is that they must be unique inside a list in order for Qwik/React to do their thing; not just unique, but uniquely identifying the specific element they are set on, or else we break in run time. A restriction on length could force the developer to be overly conscious when choosing keys, I don't think we want that. The magic of resumption is appealing precisely because it is as seemless as possible. A possible solution would be to somehow mark keys automatically-generated by the framework, from keys set by the user. The former could be serialized to some special single character that when read back, is replaced with an automatically generated key in runtime. These auto keys tend to be 4-5 chars long, and we'll get some saving by replacing them with a single magic character. However I am not sure what is the actual gain we would observe over the wire, after compression does its thing, so I cannot gauge whether or not it is worth the added complexity in code. |
@yanivhamo can you update your PR? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@yanivhamo actually I just realized - I'm pretty sure that when the keys are auto-generated, they are the same on server and client, and therefore they don't need serializing, right? So, can we handle that case? I think it needs an extra flag on the JSXNode. |
Let's do this! @wmertens can you please point me to the general area of where keys are being auto-generated? For the life of me, I can't find it. |
@yanivhamo That's the spirit 😎 I'm not so sure myself - here's what seems to be the code for CSR: But I think maybe the SSR side doesn't use keys at all? The way to tell would be to look at SSR output of your branch and see what it makes of it |
@wmertens Yeah that line executes only if the key is already set. The key (no pun intended) to understanding what's happing here is that all "generated keys" end up being the same symbol. That means that there's no "smart" logic on the server that understands this is a key that must be unique. It looks like something is merely mapping values into hashes(?) and it simply maps all null values (for unset keys) into the same symbol. |
Thinking about it more, I don't think the issue is with serialization. When we create a JSXNode without key on the server, it gets some key associated with it already on the server's side, before serialization. E.g. this code, part of my example:
Logs This PR serializes this assigned key to the client, such that the client has exactly the same keys as on the server. I argue now that this is the correct behavior. It would be wrong from a maintenance point of view to re-generate automatic keys on the client and hope that they would match the ones generated on the server. Much cleaner to correctly serialize everything that the server sets. The logic of serializing keys is therefor correct. Now, one can argue, that the server shouldn't be generating keys for JSXNodes on its own, and surely not in the way it is doing so now, where it assigned the same key to all elements. But this has nothing to do with serialization, it would affect code accessing the key on the server side. It is therefor something we should do in a separate PR. @wmertens what do you think? |
@yanivhamo I'd like to merge it but it needs rebasing |
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@builder.io/qwik](https://qwik.builder.io/) ([source](https://togithub.com/BuilderIO/qwik/tree/HEAD/packages/qwik)) | [`1.3.2` -> `1.4.3`](https://renovatebot.com/diffs/npm/@builder.io%2fqwik/1.3.2/1.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/) | --- ### Release Notes <details> <summary>BuilderIO/qwik (@​builder.io/qwik)</summary> ### [`v1.4.3`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.4.3) [Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.4.2...v1.4.3) #### What's Changed - chore(vite): downgrade vite version by [@​balaji-sivasakthi](https://togithub.com/balaji-sivasakthi) in [https://github.com/BuilderIO/qwik/pull/5785](https://togithub.com/BuilderIO/qwik/pull/5785) - fix(starter): adjust padding for 768px devices by [@​balaji-sivasakthi](https://togithub.com/balaji-sivasakthi) in [https://github.com/BuilderIO/qwik/pull/5787](https://togithub.com/BuilderIO/qwik/pull/5787) - chore: lint++ by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5788](https://togithub.com/BuilderIO/qwik/pull/5788) - fix(qwik-city): fix import ./[@​qwik-city](https://togithub.com/qwik-city) files in prod by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5791](https://togithub.com/BuilderIO/qwik/pull/5791) - fix(qwik-auth): lock down `@auth/core` version by [@​balazsorban44](https://togithub.com/balazsorban44) in [https://github.com/BuilderIO/qwik/pull/5790](https://togithub.com/BuilderIO/qwik/pull/5790) - chore(docs): align indentation by [@​greatgraphicdesign](https://togithub.com/greatgraphicdesign) in [https://github.com/BuilderIO/qwik/pull/5792](https://togithub.com/BuilderIO/qwik/pull/5792) - chore(docs): Update to latest builder.io/sdk-qwik by [@​STRd6](https://togithub.com/STRd6) in [https://github.com/BuilderIO/qwik/pull/5794](https://togithub.com/BuilderIO/qwik/pull/5794) - docs: Redirect all requests from builder.io to the qwik.dev domain. by [@​mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5796](https://togithub.com/BuilderIO/qwik/pull/5796) - feat(QwikCityMockProvider): add optional goto prop by [@​alexismch](https://togithub.com/alexismch) in [https://github.com/BuilderIO/qwik/pull/5779](https://togithub.com/BuilderIO/qwik/pull/5779) - chore(starters): update 🐼 PandaCSS integration starter dev dependency by [@​mrhoodz](https://togithub.com/mrhoodz) in [https://github.com/BuilderIO/qwik/pull/5797](https://togithub.com/BuilderIO/qwik/pull/5797) - feat(qwik): configure sourcemap in optimizer by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5799](https://togithub.com/BuilderIO/qwik/pull/5799) - chore: 1.4.3 by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5800](https://togithub.com/BuilderIO/qwik/pull/5800) #### New Contributors - [@​balaji-sivasakthi](https://togithub.com/balaji-sivasakthi) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5785](https://togithub.com/BuilderIO/qwik/pull/5785) - [@​balazsorban44](https://togithub.com/balazsorban44) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5790](https://togithub.com/BuilderIO/qwik/pull/5790) - [@​greatgraphicdesign](https://togithub.com/greatgraphicdesign) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5792](https://togithub.com/BuilderIO/qwik/pull/5792) - [@​alexismch](https://togithub.com/alexismch) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5779](https://togithub.com/BuilderIO/qwik/pull/5779) **Full Changelog**: QwikDev/qwik@v1.4.2...v1.4.3 ### [`v1.4.2`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.4.2) [Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.4.1...v1.4.2) ##### What's Changed - fix(docs): Sandbox playground iframe by [@​STRd6](https://togithub.com/STRd6) in [https://github.com/BuilderIO/qwik/pull/5768](https://togithub.com/BuilderIO/qwik/pull/5768) - docs(astro): update integration doc by [@​thejackshelton](https://togithub.com/thejackshelton) in [https://github.com/BuilderIO/qwik/pull/5771](https://togithub.com/BuilderIO/qwik/pull/5771) - docs: add note about Astro integrations order importance by [@​Seanmclem](https://togithub.com/Seanmclem) in [https://github.com/BuilderIO/qwik/pull/5776](https://togithub.com/BuilderIO/qwik/pull/5776) - feat(dev): preload modules for / so dev starts faster by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5775](https://togithub.com/BuilderIO/qwik/pull/5775) - fix: SW cache race condition by [@​thejackshelton](https://togithub.com/thejackshelton) in [https://github.com/BuilderIO/qwik/pull/5780](https://togithub.com/BuilderIO/qwik/pull/5780) - chore: 1.4.2 by [@​thejackshelton](https://togithub.com/thejackshelton) in [https://github.com/BuilderIO/qwik/pull/5781](https://togithub.com/BuilderIO/qwik/pull/5781) ##### New Contributors - [@​Seanmclem](https://togithub.com/Seanmclem) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5776](https://togithub.com/BuilderIO/qwik/pull/5776) **Full Changelog**: QwikDev/qwik@v1.4.1...v1.4.2 ### [`v1.4.1`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.4.1) [Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.4.0...v1.4.1) ##### Overview - Try harder to prevent dirty tasks on SSR - AWS middleware in `qwik-city` - File filter option to make Qwik work better with Astro - `qwik-auth` can now handle multiple cookies - Node adapters in `qwik-city` now read .env files - Bugfixes in various service workers, starter CSS build, etc - Dependency updates Thanks to all contributors! ##### Commits - chore(starters): update 🐼 PandaCSS integration dev dependency by [@​mrhoodz](https://togithub.com/mrhoodz) in [https://github.com/BuilderIO/qwik/pull/5739](https://togithub.com/BuilderIO/qwik/pull/5739) - docs: add Valibot website to showcases by [@​fabian-hiller](https://togithub.com/fabian-hiller) in [https://github.com/BuilderIO/qwik/pull/5740](https://togithub.com/BuilderIO/qwik/pull/5740) - fix: multiple cookies in qwik-auth by [@​ksjogo](https://togithub.com/ksjogo) in [https://github.com/BuilderIO/qwik/pull/5602](https://togithub.com/BuilderIO/qwik/pull/5602) - feat(qwik-city): AWS adapter middleware by [@​leifermendez](https://togithub.com/leifermendez) in [https://github.com/BuilderIO/qwik/pull/5732](https://togithub.com/BuilderIO/qwik/pull/5732) - docs: fix code highlight by downgrading rehype-pretty-code by [@​Balastrong](https://togithub.com/Balastrong) in [https://github.com/BuilderIO/qwik/pull/5742](https://togithub.com/BuilderIO/qwik/pull/5742) - feat(starters): add dotenv in node adapters by [@​hassanzohdy](https://togithub.com/hassanzohdy) in [https://github.com/BuilderIO/qwik/pull/5749](https://togithub.com/BuilderIO/qwik/pull/5749) - fix(docs): Validate origin on postmessage by [@​STRd6](https://togithub.com/STRd6) in [https://github.com/BuilderIO/qwik/pull/5751](https://togithub.com/BuilderIO/qwik/pull/5751) - feat(vite): new file filter option by [@​thejackshelton](https://togithub.com/thejackshelton) in [https://github.com/BuilderIO/qwik/pull/5752](https://togithub.com/BuilderIO/qwik/pull/5752) - fix(ssr): dirty tasks by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5741](https://togithub.com/BuilderIO/qwik/pull/5741) - fix(qwik): ensure that SW cache is properly opened by [@​mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5748](https://togithub.com/BuilderIO/qwik/pull/5748) - fix: insights error handling and qwik-city json imports by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5754](https://togithub.com/BuilderIO/qwik/pull/5754) - fix(prefetch-sw): await cache opening by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5759](https://togithub.com/BuilderIO/qwik/pull/5759) - chore: updates by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5760](https://togithub.com/BuilderIO/qwik/pull/5760) - fix(sw-prefetch): prevent uninitialized cache use by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5761](https://togithub.com/BuilderIO/qwik/pull/5761) - fix(sw-prefetch): cache handling by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5764](https://togithub.com/BuilderIO/qwik/pull/5764) - fix: duplicated css code in global.css in starter template by [@​linkfang](https://togithub.com/linkfang) in [https://github.com/BuilderIO/qwik/pull/5763](https://togithub.com/BuilderIO/qwik/pull/5763) - feat(repl): use bundled qwik and prettier versions by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5755](https://togithub.com/BuilderIO/qwik/pull/5755) - fix(sw-prefetch): clone on reuse by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5765](https://togithub.com/BuilderIO/qwik/pull/5765) - chore: 1.4.1 by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5766](https://togithub.com/BuilderIO/qwik/pull/5766) ##### New Contributors - [@​STRd6](https://togithub.com/STRd6) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5751](https://togithub.com/BuilderIO/qwik/pull/5751) **Full Changelog**: QwikDev/qwik@v1.4.0...v1.4.1 ### [`v1.4.0`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.4.0) [Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.3.5...v1.4.0) ##### What's Changed - Types have changed a bit, now JSX components output `JSXOutput` instead of `JSXNode`, which captures the existing possibility to return strings, booleans, arrays etc. - The Link component now automatically prefetches the JS needed - When SPA routing fails, it will now use MPA routing as a fallback - Various bugfixes ##### PRs merged - docs(showcase): add Blueagle's Profolio & Blog by [@​blueagler](https://togithub.com/blueagler) in [https://github.com/BuilderIO/qwik/pull/5695](https://togithub.com/BuilderIO/qwik/pull/5695) - docs(showcase): update metrics by [@​gioboa](https://togithub.com/gioboa) in [https://github.com/BuilderIO/qwik/pull/5707](https://togithub.com/BuilderIO/qwik/pull/5707) - fix(types): untyped components, test more edge cases by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5713](https://togithub.com/BuilderIO/qwik/pull/5713) - docs(showcase): add Zhou's portfolio by [@​linkfang](https://togithub.com/linkfang) in [https://github.com/BuilderIO/qwik/pull/5710](https://togithub.com/BuilderIO/qwik/pull/5710) - chore: upgrades by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5705](https://togithub.com/BuilderIO/qwik/pull/5705) - fix(qwik): register new index.d.ts package file by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5715](https://togithub.com/BuilderIO/qwik/pull/5715) - docs: move props example after local state and useStore explanation by [@​Balastrong](https://togithub.com/Balastrong) in [https://github.com/BuilderIO/qwik/pull/5718](https://togithub.com/BuilderIO/qwik/pull/5718) - docs: emphasize on useStore and onInput$ by [@​Balastrong](https://togithub.com/Balastrong) in [https://github.com/BuilderIO/qwik/pull/5719](https://togithub.com/BuilderIO/qwik/pull/5719) - docs: add Storybook Examples by [@​thenhawke](https://togithub.com/thenhawke) in [https://github.com/BuilderIO/qwik/pull/5720](https://togithub.com/BuilderIO/qwik/pull/5720) - fix(jsx-qwik-attributes): fix ts error TS4023 by [@​maiieul](https://togithub.com/maiieul) in [https://github.com/BuilderIO/qwik/pull/5722](https://togithub.com/BuilderIO/qwik/pull/5722) - fix(types): JSX.Element is JSXOutput by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5723](https://togithub.com/BuilderIO/qwik/pull/5723) - fix: prevent race condition by [@​mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5711](https://togithub.com/BuilderIO/qwik/pull/5711) - fix: build from scratch + insights by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5724](https://togithub.com/BuilderIO/qwik/pull/5724) - docs: Good first issue link doesn't lead you to properly label "COMMUNITY: good first issue" by [@​aendel](https://togithub.com/aendel) in [https://github.com/BuilderIO/qwik/pull/5726](https://togithub.com/BuilderIO/qwik/pull/5726) - docs: fixed CodeSandbox/CodeFile src paths to match github files by [@​aendel](https://togithub.com/aendel) in [https://github.com/BuilderIO/qwik/pull/5725](https://togithub.com/BuilderIO/qwik/pull/5725) - fix: Uppercase handling for SameSite cookie values by [@​ksjogo](https://togithub.com/ksjogo) in [https://github.com/BuilderIO/qwik/pull/5603](https://togithub.com/BuilderIO/qwik/pull/5603) - feat(link): prefetch symbols by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5480](https://togithub.com/BuilderIO/qwik/pull/5480) - docs: Fixed various typos (or misspelled words) in documentation files by [@​aendel](https://togithub.com/aendel) in [https://github.com/BuilderIO/qwik/pull/5728](https://togithub.com/BuilderIO/qwik/pull/5728) - chore: extra type tests by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5580](https://togithub.com/BuilderIO/qwik/pull/5580) - fix(build): qwik binary path in package.json by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5729](https://togithub.com/BuilderIO/qwik/pull/5729) - fix(routing): fallback to hard navigation when soft navigation fails. by [@​iamriajul](https://togithub.com/iamriajul) in [https://github.com/BuilderIO/qwik/pull/5521](https://togithub.com/BuilderIO/qwik/pull/5521) - fix(JSX): remove Promise from FC by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5730](https://togithub.com/BuilderIO/qwik/pull/5730) - fix(core): serialize the 'key' attribute of JSX nodes by [@​yanivhamo](https://togithub.com/yanivhamo) in [https://github.com/BuilderIO/qwik/pull/5501](https://togithub.com/BuilderIO/qwik/pull/5501) - fix(repl): give monaco the names of the imports by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5734](https://togithub.com/BuilderIO/qwik/pull/5734) - docs(cookbook): add Combine Request Handlers example by [@​gioboa](https://togithub.com/gioboa) and [@​erikras](https://togithub.com/erikras) in [https://github.com/BuilderIO/qwik/pull/5733](https://togithub.com/BuilderIO/qwik/pull/5733) - fix(docs): grammar in "Project Structure" page by [@​ChallengeHandler](https://togithub.com/ChallengeHandler) in [https://github.com/BuilderIO/qwik/pull/5735](https://togithub.com/BuilderIO/qwik/pull/5735) - chore: 1.4.0 by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5736](https://togithub.com/BuilderIO/qwik/pull/5736) ##### New Contributors - [@​blueagler](https://togithub.com/blueagler) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5695](https://togithub.com/BuilderIO/qwik/pull/5695) - [@​linkfang](https://togithub.com/linkfang) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5710](https://togithub.com/BuilderIO/qwik/pull/5710) - [@​Balastrong](https://togithub.com/Balastrong) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5718](https://togithub.com/BuilderIO/qwik/pull/5718) - [@​thenhawke](https://togithub.com/thenhawke) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5720](https://togithub.com/BuilderIO/qwik/pull/5720) - [@​aendel](https://togithub.com/aendel) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5726](https://togithub.com/BuilderIO/qwik/pull/5726) - [@​ksjogo](https://togithub.com/ksjogo) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5603](https://togithub.com/BuilderIO/qwik/pull/5603) - [@​yanivhamo](https://togithub.com/yanivhamo) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5501](https://togithub.com/BuilderIO/qwik/pull/5501) - [@​ChallengeHandler](https://togithub.com/ChallengeHandler) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5735](https://togithub.com/BuilderIO/qwik/pull/5735) **Full Changelog**: QwikDev/qwik@v1.3.5...v1.4.0 ### [`v1.3.5`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.3.5) [Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.3.4...v1.3.5) #### What's Changed - docs: fix typos for theme management cookbook by [@​harshmangalam](https://togithub.com/harshmangalam) in [https://github.com/BuilderIO/qwik/pull/5698](https://togithub.com/BuilderIO/qwik/pull/5698) - fix(labs): double slash when used with BASE_URL by [@​mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5700](https://togithub.com/BuilderIO/qwik/pull/5700) - fix: improve escapeText and unescapeText replace to prevent XSS by [@​ignatvilesov](https://togithub.com/ignatvilesov) in [https://github.com/BuilderIO/qwik/pull/5701](https://togithub.com/BuilderIO/qwik/pull/5701) - chore: allow any undici version by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5703](https://togithub.com/BuilderIO/qwik/pull/5703) - docs(propfunctionprops): mark propfunctionprops as deprecated by [@​maiieul](https://togithub.com/maiieul) in [https://github.com/BuilderIO/qwik/pull/5680](https://togithub.com/BuilderIO/qwik/pull/5680) - chore: 1.3.5 by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5704](https://togithub.com/BuilderIO/qwik/pull/5704) **Full Changelog**: QwikDev/qwik@v1.3.4...v1.3.5 ### [`v1.3.4`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.3.4) [Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.3.3...v1.3.4) ##### What's Changed - chore: update deps + monaco by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5685](https://togithub.com/BuilderIO/qwik/pull/5685) - chore: Remove duplicated dist directory from .prettierignore by [@​nelsonprsousa](https://togithub.com/nelsonprsousa) in [https://github.com/BuilderIO/qwik/pull/5687](https://togithub.com/BuilderIO/qwik/pull/5687) - docs: add og-img integration guide by [@​fabian-hiller](https://togithub.com/fabian-hiller) in [https://github.com/BuilderIO/qwik/pull/5686](https://togithub.com/BuilderIO/qwik/pull/5686) - chore: improve FunctionComponent by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5688](https://togithub.com/BuilderIO/qwik/pull/5688) - fix: improve escapeText replace by [@​ignatvilesov](https://togithub.com/ignatvilesov) in [https://github.com/BuilderIO/qwik/pull/5689](https://togithub.com/BuilderIO/qwik/pull/5689) - fix(optimizer): use correct prop in omit by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5690](https://togithub.com/BuilderIO/qwik/pull/5690) - chore: 1.3.4 by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5691](https://togithub.com/BuilderIO/qwik/pull/5691) - docs: fix typos for nav link cookbook by [@​harshmangalam](https://togithub.com/harshmangalam) in [https://github.com/BuilderIO/qwik/pull/5694](https://togithub.com/BuilderIO/qwik/pull/5694) ##### New Contributors - [@​ignatvilesov](https://togithub.com/ignatvilesov) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5689](https://togithub.com/BuilderIO/qwik/pull/5689) **Full Changelog**: QwikDev/qwik@v1.3.3...v1.3.4 ### [`v1.3.3`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.3.3) [Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.3.2...v1.3.3) ##### What's Changed - fix(cli): Update jokes.json by [@​mayank99](https://togithub.com/mayank99) in [https://github.com/BuilderIO/qwik/pull/5657](https://togithub.com/BuilderIO/qwik/pull/5657) - docs: for accessing the .env variables in serverfull architechture example in express by [@​sreeisalso](https://togithub.com/sreeisalso) in [https://github.com/BuilderIO/qwik/pull/5619](https://togithub.com/BuilderIO/qwik/pull/5619) - docs: change placement of {...props} and add section by [@​Adbib](https://togithub.com/Adbib) in [https://github.com/BuilderIO/qwik/pull/5664](https://togithub.com/BuilderIO/qwik/pull/5664) - docs: Update build command in Static Site Generation (SSG) Overview docs by [@​lelouchB](https://togithub.com/lelouchB) in [https://github.com/BuilderIO/qwik/pull/5668](https://togithub.com/BuilderIO/qwik/pull/5668) - fix(starter): rename tailwind postcss.config file by [@​iamriajul](https://togithub.com/iamriajul) in [https://github.com/BuilderIO/qwik/pull/5669](https://togithub.com/BuilderIO/qwik/pull/5669) - fix: fixing running qwik-development-server on windows machine by [@​hassanzohdy](https://togithub.com/hassanzohdy) in [https://github.com/BuilderIO/qwik/pull/5593](https://togithub.com/BuilderIO/qwik/pull/5593) - fix(starter): add vite plugin type by [@​iamriajul](https://togithub.com/iamriajul) in [https://github.com/BuilderIO/qwik/pull/5670](https://togithub.com/BuilderIO/qwik/pull/5670) - feat(qwik-react): directive aliases for Astro and other package conflicts by [@​thejackshelton](https://togithub.com/thejackshelton) in [https://github.com/BuilderIO/qwik/pull/5651](https://togithub.com/BuilderIO/qwik/pull/5651) - feat: qwik-prefetch-worker by [@​mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5618](https://togithub.com/BuilderIO/qwik/pull/5618) - refactor: Clarify var naming qwikloader.ts by [@​gabrielgrant](https://togithub.com/gabrielgrant) in [https://github.com/BuilderIO/qwik/pull/5546](https://togithub.com/BuilderIO/qwik/pull/5546) - docs: fix entry file name by [@​AustinGil](https://togithub.com/AustinGil) in [https://github.com/BuilderIO/qwik/pull/5646](https://togithub.com/BuilderIO/qwik/pull/5646) - feat(labs): Support base prefix in untypedAppUrl by [@​tera-ny](https://togithub.com/tera-ny) in [https://github.com/BuilderIO/qwik/pull/5615](https://togithub.com/BuilderIO/qwik/pull/5615) - style(starter templates): updates to starter templates names by [@​abstractalgo](https://togithub.com/abstractalgo) in [https://github.com/BuilderIO/qwik/pull/5479](https://togithub.com/BuilderIO/qwik/pull/5479) - fix: Clearer error message for `resolveValue` for `head` function by [@​colelawrence](https://togithub.com/colelawrence) in [https://github.com/BuilderIO/qwik/pull/5624](https://togithub.com/BuilderIO/qwik/pull/5624) - refactor(starter): add alt attribute in order to improve accessibility by [@​tidiview](https://togithub.com/tidiview) in [https://github.com/BuilderIO/qwik/pull/5674](https://togithub.com/BuilderIO/qwik/pull/5674) - refactor(insights): remove netlify.toml causing confusion by [@​mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5676](https://togithub.com/BuilderIO/qwik/pull/5676) - feat(cookbook): add Algolia search by [@​gioboa](https://togithub.com/gioboa) in [https://github.com/BuilderIO/qwik/pull/5675](https://togithub.com/BuilderIO/qwik/pull/5675) - fix(cookbook): change Algolia example by [@​gioboa](https://togithub.com/gioboa) in [https://github.com/BuilderIO/qwik/pull/5677](https://togithub.com/BuilderIO/qwik/pull/5677) - fix: polymorphic component types by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5672](https://togithub.com/BuilderIO/qwik/pull/5672) - chore: add Nix build flake environment by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5594](https://togithub.com/BuilderIO/qwik/pull/5594) - fix(nix): missing .envrc by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5678](https://togithub.com/BuilderIO/qwik/pull/5678) - fix(nix): make rust and wasm builds work by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5679](https://togithub.com/BuilderIO/qwik/pull/5679) - fix: dynamic refs by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5681](https://togithub.com/BuilderIO/qwik/pull/5681) - fix(core): Make polymorphic components easy by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5682](https://togithub.com/BuilderIO/qwik/pull/5682) - chore: 1.3.3 by [@​wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5683](https://togithub.com/BuilderIO/qwik/pull/5683) ##### New Contributors - [@​mayank99](https://togithub.com/mayank99) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5657](https://togithub.com/BuilderIO/qwik/pull/5657) - [@​lelouchB](https://togithub.com/lelouchB) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5668](https://togithub.com/BuilderIO/qwik/pull/5668) - [@​hassanzohdy](https://togithub.com/hassanzohdy) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5593](https://togithub.com/BuilderIO/qwik/pull/5593) - [@​AustinGil](https://togithub.com/AustinGil) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5646](https://togithub.com/BuilderIO/qwik/pull/5646) - [@​tera-ny](https://togithub.com/tera-ny) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5615](https://togithub.com/BuilderIO/qwik/pull/5615) **Full Changelog**: QwikDev/qwik@v1.3.2...v1.3.3 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 9pm on sunday" (UTC), 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. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/ascorbic/unpic-img). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMjcuMCIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
Added serialization and deserialization of the 'key' attribute, the only member of JSXNodeImpl which was not serialized thus far.
Issue #5496