Patch Changes
-
#4423
e126a4eThanks @DylanPiercey! - Stop adding a template to the page's client bundle only because it registers a function the server writes while its input changes. The caller changing that input already bundles it, so a page whose input never changes on the client no longer ships it. -
#4437
52d280bThanks @DylanPiercey! - Typeclass=andstyle=values to accept0, which the runtime already skips like any falsy value, soclass=["a", count && "has-items"],style=[count && { color: "red" }]andclass={ active: count }type-check whencountis a number. -
#4426
23a9b8cThanks @DylanPiercey! - A form reset now also updates the bound value of a controlled field that was rendered outside the document (such as inside a hidden<show>) and joined the form later, and aresetevent dispatched from an element that is not a form no longer throws. -
#4435
330986aThanks @DylanPiercey! - Fix an embedded render ($global.renderId) throwing on the client when a<try>body streams behind its@placeholder: the render was treated as removed while its body was held back, so the next streamed chunk found no runtime. -
#4428
880e4aaThanks @DylanPiercey! - Escape</script,<scriptand<!--in server-rendered<html-script>text as\u003C, so JSON script types (application/ld+json,importmap,speculationrules) whose data contains them stay valid JSON. -
#4434
f97eb7fThanks @DylanPiercey! - Server output now creates one subscriber set for a content body that several sibling branches hoist tag variables through, instead of one per branch, all but the last of which were never written. -
#4423
e126a4eThanks @DylanPiercey! - Keep an imported template in the client bundle when the server writes it to the resume data, as a<let>or<const>holding it, an attribute a child stores, or a tag variable a child returns it as. A resumed page no longer removes the content of a dynamic tag rendering such a template when it updates. -
#4422
6500318Thanks @DylanPiercey! - A tag variable on a lazily loaded tag is now a compile error, and a debug build throws when a dynamic tag with a tag variable renders a lazily loaded template. Such a variable wasundefinedwhen rendered on the server, and a function it held could not resume. -
#4429
366c03eThanks @DylanPiercey! - In development, report a controlled<select multiple>whose bound value holds any value without a matching<option>, not only one where none match. A bound select or checkbox group value holds only values a rendered option or checkbox has, since resume rebuilds it from the page. -
#4425
664e12bThanks @DylanPiercey! - Resume a template imported withloadwhen the server writes it to the resume data, such as a<let>holding it. The server no longer fails to serialize it, and an optimized page no longer removes the content of a dynamic tag rendering it when it updates. -
#4420
5330ad4Thanks @DylanPiercey! - A tag variable on a custom tag without a<return>is now a compile error, and a debug build throws when a dynamic tag with a tag variable renders content without one. A dynamic tag whose name is falsy now leaves its tag variableundefinedin the browser, as on the server, including on its first render, instead of keeping the previous tag's value, and no longer takes its body's<return>. -
#4436
74c5df2Thanks @DylanPiercey! - Write the HTML that lazy asset scripts insert (a lazy module's stylesheets copied into the head, a load trigger's module scripts) as a template literal instead of a double-quoted string, so its attribute quotes no longer need escaping and the page is a few bytes smaller per asset. -
Updated dependencies [
5f2dbee,a163005]:- @marko/compiler@5.42.11