Skip to content
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

fix(core): serialize the 'key' attribute of JSX nodes #5501

Merged
merged 3 commits into from Jan 18, 2024

Conversation

yanivhamo
Copy link
Contributor

Added serialization and deserialization of the 'key' attribute, the only member of JSXNodeImpl which was not serialized thus far.

Issue #5496

Added serialization and deserialization of the 'key' attribute, the only member of JSXNodeImpl which
was not serialized thus far.

Issue QwikDev#5496
Copy link

netlify bot commented Nov 29, 2023

👷 Deploy request for qwik-insights pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit f428520

@yanivhamo
Copy link
Contributor Author

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.

@zanettin zanettin added COMP: optimizer STATUS-2: waiting for core Waiting for one of the core team members to review and reply labels Nov 29, 2023
@wmertens
Copy link
Member

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?

@gioboa gioboa linked an issue Nov 30, 2023 that may be closed by this pull request
@yanivhamo
Copy link
Contributor Author

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.

@PatrickJS
Copy link
Member

@yanivhamo can you update your PR?

Copy link
Member

@wmertens wmertens left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@wmertens wmertens enabled auto-merge (squash) January 10, 2024 06:23
@wmertens
Copy link
Member

@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.

@yanivhamo
Copy link
Contributor Author

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.

@wmertens
Copy link
Member

@yanivhamo That's the spirit 😎

I'm not so sure myself - here's what seems to be the code for CSR:
https://github.com/BuilderIO/qwik/blob/123c2bdae96a369ec386179c7316ad021f85b78e/packages/qwik/src/core/render/jsx/jsx-runtime.ts#L236

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

@yanivhamo
Copy link
Contributor Author

@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.
I'm looking into this.

@wmertens wmertens removed the STATUS-2: waiting for core Waiting for one of the core team members to review and reply label Jan 11, 2024
@yanivhamo
Copy link
Contributor Author

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:

  const list = [1,2,3].map(idx => <Item index={idx}/>);
  console.log(list.map(it => it.key).join(","));

Logs 81_1,81_1,81_1 on the server's console.

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?

@wmertens
Copy link
Member

@yanivhamo I'd like to merge it but it needs rebasing

@wmertens wmertens enabled auto-merge (squash) January 18, 2024 07:46
@wmertens wmertens merged commit bba73dc into QwikDev:main Jan 18, 2024
22 checks passed
kodiakhq bot pushed a commit to ascorbic/unpic-img that referenced this pull request Jan 30, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@builder.io%2fqwik/1.4.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@builder.io%2fqwik/1.4.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@builder.io%2fqwik/1.3.2/1.4.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@builder.io%2fqwik/1.3.2/1.4.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>BuilderIO/qwik (@&#8203;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 [@&#8203;balaji-sivasakthi](https://togithub.com/balaji-sivasakthi) in [QwikDev/qwik#5785
-   fix(starter): adjust padding for 768px devices by [@&#8203;balaji-sivasakthi](https://togithub.com/balaji-sivasakthi) in [QwikDev/qwik#5787
-   chore: lint++ by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5788
-   fix(qwik-city): fix import ./[@&#8203;qwik-city](https://togithub.com/qwik-city) files in prod by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5791
-   fix(qwik-auth): lock down `@auth/core` version by [@&#8203;balazsorban44](https://togithub.com/balazsorban44) in [QwikDev/qwik#5790
-   chore(docs): align indentation by [@&#8203;greatgraphicdesign](https://togithub.com/greatgraphicdesign) in [QwikDev/qwik#5792
-   chore(docs): Update to latest builder.io/sdk-qwik by [@&#8203;STRd6](https://togithub.com/STRd6) in [QwikDev/qwik#5794
-   docs: Redirect all requests from builder.io to the qwik.dev domain. by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5796
-   feat(QwikCityMockProvider): add optional goto prop by [@&#8203;alexismch](https://togithub.com/alexismch) in [QwikDev/qwik#5779
-   chore(starters): update 🐼 PandaCSS integration starter dev dependency by [@&#8203;mrhoodz](https://togithub.com/mrhoodz) in [QwikDev/qwik#5797
-   feat(qwik): configure sourcemap in optimizer by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5799
-   chore: 1.4.3 by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5800

#### New Contributors

-   [@&#8203;balaji-sivasakthi](https://togithub.com/balaji-sivasakthi) made their first contribution in [QwikDev/qwik#5785
-   [@&#8203;balazsorban44](https://togithub.com/balazsorban44) made their first contribution in [QwikDev/qwik#5790
-   [@&#8203;greatgraphicdesign](https://togithub.com/greatgraphicdesign) made their first contribution in [QwikDev/qwik#5792
-   [@&#8203;alexismch](https://togithub.com/alexismch) made their first contribution in [QwikDev/qwik#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 [@&#8203;STRd6](https://togithub.com/STRd6) in [QwikDev/qwik#5768
-   docs(astro): update integration doc by [@&#8203;thejackshelton](https://togithub.com/thejackshelton) in [QwikDev/qwik#5771
-   docs: add note about Astro integrations order importance by [@&#8203;Seanmclem](https://togithub.com/Seanmclem) in [QwikDev/qwik#5776
-   feat(dev): preload modules for / so dev starts faster by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5775
-   fix: SW cache race condition by [@&#8203;thejackshelton](https://togithub.com/thejackshelton) in [QwikDev/qwik#5780
-   chore: 1.4.2 by [@&#8203;thejackshelton](https://togithub.com/thejackshelton) in [QwikDev/qwik#5781

##### New Contributors

-   [@&#8203;Seanmclem](https://togithub.com/Seanmclem) made their first contribution in [QwikDev/qwik#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 [@&#8203;mrhoodz](https://togithub.com/mrhoodz) in [QwikDev/qwik#5739
-   docs: add Valibot website to showcases by [@&#8203;fabian-hiller](https://togithub.com/fabian-hiller) in [QwikDev/qwik#5740
-   fix: multiple cookies in qwik-auth by [@&#8203;ksjogo](https://togithub.com/ksjogo) in [QwikDev/qwik#5602
-   feat(qwik-city): AWS adapter middleware by [@&#8203;leifermendez](https://togithub.com/leifermendez) in [QwikDev/qwik#5732
-   docs: fix code highlight by downgrading rehype-pretty-code by [@&#8203;Balastrong](https://togithub.com/Balastrong) in [QwikDev/qwik#5742
-   feat(starters): add dotenv in node adapters by [@&#8203;hassanzohdy](https://togithub.com/hassanzohdy) in [QwikDev/qwik#5749
-   fix(docs): Validate origin on postmessage by [@&#8203;STRd6](https://togithub.com/STRd6) in [QwikDev/qwik#5751
-   feat(vite): new file filter option by [@&#8203;thejackshelton](https://togithub.com/thejackshelton) in [QwikDev/qwik#5752
-   fix(ssr): dirty tasks by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5741
-   fix(qwik): ensure that SW cache is properly opened by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5748
-   fix: insights error handling and qwik-city json imports by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5754
-   fix(prefetch-sw): await cache opening by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5759
-   chore: updates by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5760
-   fix(sw-prefetch): prevent uninitialized cache use by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5761
-   fix(sw-prefetch): cache handling by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5764
-   fix: duplicated css code in global.css in starter template by [@&#8203;linkfang](https://togithub.com/linkfang) in [QwikDev/qwik#5763
-   feat(repl): use bundled qwik and prettier versions by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5755
-   fix(sw-prefetch): clone on reuse by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5765
-   chore: 1.4.1 by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5766

##### New Contributors

-   [@&#8203;STRd6](https://togithub.com/STRd6) made their first contribution in [QwikDev/qwik#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 [@&#8203;blueagler](https://togithub.com/blueagler) in [QwikDev/qwik#5695
-   docs(showcase): update metrics by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#5707
-   fix(types): untyped components, test more edge cases by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5713
-   docs(showcase): add Zhou's portfolio by [@&#8203;linkfang](https://togithub.com/linkfang) in [QwikDev/qwik#5710
-   chore: upgrades by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5705
-   fix(qwik): register new index.d.ts package file by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5715
-   docs: move props example after local state and useStore explanation by [@&#8203;Balastrong](https://togithub.com/Balastrong) in [QwikDev/qwik#5718
-   docs: emphasize on useStore and onInput$ by [@&#8203;Balastrong](https://togithub.com/Balastrong) in [QwikDev/qwik#5719
-   docs: add Storybook Examples by [@&#8203;thenhawke](https://togithub.com/thenhawke) in [QwikDev/qwik#5720
-   fix(jsx-qwik-attributes): fix ts error TS4023 by [@&#8203;maiieul](https://togithub.com/maiieul) in [QwikDev/qwik#5722
-   fix(types): JSX.Element is JSXOutput by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5723
-   fix: prevent race condition by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5711
-   fix: build from scratch + insights by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5724
-   docs: Good first issue link doesn't lead you to properly label "COMMUNITY:  good first issue" by [@&#8203;aendel](https://togithub.com/aendel) in [QwikDev/qwik#5726
-   docs: fixed CodeSandbox/CodeFile src paths to match github files by [@&#8203;aendel](https://togithub.com/aendel) in [QwikDev/qwik#5725
-   fix: Uppercase handling for SameSite cookie values by [@&#8203;ksjogo](https://togithub.com/ksjogo) in [QwikDev/qwik#5603
-   feat(link): prefetch symbols by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5480
-   docs: Fixed various typos (or misspelled words) in documentation files by [@&#8203;aendel](https://togithub.com/aendel) in [QwikDev/qwik#5728
-   chore: extra type tests by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5580
-   fix(build): qwik binary path in package.json by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5729
-   fix(routing): fallback to hard navigation when soft navigation fails. by [@&#8203;iamriajul](https://togithub.com/iamriajul) in [QwikDev/qwik#5521
-   fix(JSX): remove Promise from FC by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5730
-   fix(core): serialize the 'key' attribute of JSX nodes by [@&#8203;yanivhamo](https://togithub.com/yanivhamo) in [QwikDev/qwik#5501
-   fix(repl): give monaco the names of the imports by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5734
-   docs(cookbook): add Combine Request Handlers example by [@&#8203;gioboa](https://togithub.com/gioboa) and [@&#8203;erikras](https://togithub.com/erikras) in [QwikDev/qwik#5733
-   fix(docs): grammar in "Project Structure" page by [@&#8203;ChallengeHandler](https://togithub.com/ChallengeHandler) in [QwikDev/qwik#5735
-   chore: 1.4.0 by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5736

##### New Contributors

-   [@&#8203;blueagler](https://togithub.com/blueagler) made their first contribution in [QwikDev/qwik#5695
-   [@&#8203;linkfang](https://togithub.com/linkfang) made their first contribution in [QwikDev/qwik#5710
-   [@&#8203;Balastrong](https://togithub.com/Balastrong) made their first contribution in [QwikDev/qwik#5718
-   [@&#8203;thenhawke](https://togithub.com/thenhawke) made their first contribution in [QwikDev/qwik#5720
-   [@&#8203;aendel](https://togithub.com/aendel) made their first contribution in [QwikDev/qwik#5726
-   [@&#8203;ksjogo](https://togithub.com/ksjogo) made their first contribution in [QwikDev/qwik#5603
-   [@&#8203;yanivhamo](https://togithub.com/yanivhamo) made their first contribution in [QwikDev/qwik#5501
-   [@&#8203;ChallengeHandler](https://togithub.com/ChallengeHandler) made their first contribution in [QwikDev/qwik#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 [@&#8203;harshmangalam](https://togithub.com/harshmangalam) in [QwikDev/qwik#5698
-   fix(labs): double slash when used with BASE_URL by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5700
-   fix: improve escapeText and unescapeText replace to prevent XSS by [@&#8203;ignatvilesov](https://togithub.com/ignatvilesov) in [QwikDev/qwik#5701
-   chore: allow any undici version by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5703
-   docs(propfunctionprops): mark propfunctionprops as deprecated by [@&#8203;maiieul](https://togithub.com/maiieul) in [QwikDev/qwik#5680
-   chore: 1.3.5 by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#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 [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5685
-   chore: Remove duplicated dist directory from .prettierignore by [@&#8203;nelsonprsousa](https://togithub.com/nelsonprsousa) in [QwikDev/qwik#5687
-   docs: add og-img integration guide by [@&#8203;fabian-hiller](https://togithub.com/fabian-hiller) in [QwikDev/qwik#5686
-   chore: improve FunctionComponent by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5688
-   fix: improve escapeText replace by [@&#8203;ignatvilesov](https://togithub.com/ignatvilesov) in [QwikDev/qwik#5689
-   fix(optimizer): use correct prop in omit by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5690
-   chore: 1.3.4 by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5691
-   docs: fix typos for nav link cookbook  by [@&#8203;harshmangalam](https://togithub.com/harshmangalam) in [QwikDev/qwik#5694

##### New Contributors

-   [@&#8203;ignatvilesov](https://togithub.com/ignatvilesov) made their first contribution in [QwikDev/qwik#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 [@&#8203;mayank99](https://togithub.com/mayank99) in [QwikDev/qwik#5657
-   docs: for accessing the .env variables in serverfull architechture example in express by [@&#8203;sreeisalso](https://togithub.com/sreeisalso) in [QwikDev/qwik#5619
-   docs: change placement of {...props}  and add section by [@&#8203;Adbib](https://togithub.com/Adbib) in [QwikDev/qwik#5664
-   docs: Update build command in Static Site Generation (SSG) Overview docs by [@&#8203;lelouchB](https://togithub.com/lelouchB) in [QwikDev/qwik#5668
-   fix(starter): rename tailwind postcss.config file by [@&#8203;iamriajul](https://togithub.com/iamriajul) in [QwikDev/qwik#5669
-   fix: fixing running qwik-development-server on windows machine by [@&#8203;hassanzohdy](https://togithub.com/hassanzohdy) in [QwikDev/qwik#5593
-   fix(starter): add vite plugin type by [@&#8203;iamriajul](https://togithub.com/iamriajul) in [QwikDev/qwik#5670
-   feat(qwik-react): directive aliases for Astro and other package conflicts by [@&#8203;thejackshelton](https://togithub.com/thejackshelton) in [QwikDev/qwik#5651
-   feat: qwik-prefetch-worker by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5618
-   refactor: Clarify var naming qwikloader.ts by [@&#8203;gabrielgrant](https://togithub.com/gabrielgrant) in [QwikDev/qwik#5546
-   docs: fix entry file name by [@&#8203;AustinGil](https://togithub.com/AustinGil) in [QwikDev/qwik#5646
-   feat(labs): Support base prefix in untypedAppUrl by [@&#8203;tera-ny](https://togithub.com/tera-ny) in [QwikDev/qwik#5615
-   style(starter templates): updates to starter templates names by [@&#8203;abstractalgo](https://togithub.com/abstractalgo) in [QwikDev/qwik#5479
-   fix: Clearer error message for `resolveValue` for `head` function by [@&#8203;colelawrence](https://togithub.com/colelawrence) in [QwikDev/qwik#5624
-   refactor(starter): add alt attribute in order to improve accessibility by [@&#8203;tidiview](https://togithub.com/tidiview) in [QwikDev/qwik#5674
-   refactor(insights): remove netlify.toml causing confusion by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5676
-   feat(cookbook): add Algolia search by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#5675
-   fix(cookbook): change Algolia example by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#5677
-   fix: polymorphic component types by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5672
-   chore: add Nix build flake environment by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5594
-   fix(nix): missing .envrc by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5678
-   fix(nix): make rust and wasm builds work by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5679
-   fix: dynamic refs by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5681
-   fix(core): Make polymorphic components easy by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5682
-   chore: 1.3.3 by [@&#8203;wmertens](https://togithub.com/wmertens) in [QwikDev/qwik#5683

##### New Contributors

-   [@&#8203;mayank99](https://togithub.com/mayank99) made their first contribution in [QwikDev/qwik#5657
-   [@&#8203;lelouchB](https://togithub.com/lelouchB) made their first contribution in [QwikDev/qwik#5668
-   [@&#8203;hassanzohdy](https://togithub.com/hassanzohdy) made their first contribution in [QwikDev/qwik#5593
-   [@&#8203;AustinGil](https://togithub.com/AustinGil) made their first contribution in [QwikDev/qwik#5646
-   [@&#8203;tera-ny](https://togithub.com/tera-ny) made their first contribution in [QwikDev/qwik#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-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[🐞] 'key' attribute lost after resuming
4 participants