github marko-js/marko @marko/runtime-tags@6.2.1

latest release: @marko/runtime-tags@6.2.2
6 hours ago

Patch Changes

  • #3323 33f21ae Thanks @DylanPiercey! - Skip importing and calling a child template's setup export when compile time analysis proves it is a noop. This compounds: a component whose setup only called such children now exports a noop setup itself, letting its own parents skip the call too.

  • #3320 281f3b8 Thanks @DylanPiercey! - Mark _hoist calls in compiled DOM output as @__PURE__ so unused hoisted tag variable getters can be removed by bundlers.

  • #3322 35ec01b Thanks @DylanPiercey! - Fix a resume crash (Cannot read properties of undefined (reading 'nodeType') in setConditionalRenderer) when a <script> effect flushed before an in-order <await> resolved triggered a state update targeting content rendered after the pending <await>. Effects are now held on the blocked chunk and flush once its async content completes, so state updates only run against markers that exist in the document.

  • #3317 f07a3dc Thanks @DylanPiercey! - Reads inside functions whose value can never be observed - native event handlers (including via spread attributes) and inputs a child template only ever invokes - no longer subscribe the expression, which previously re-created and re-attached/re-passed the function on every change. The function reads current values from the scope when invoked.

  • #3320 a031ac5 Thanks @DylanPiercey! - Avoid serializing <let> change handlers when the tag variable is never assigned.

  • #3323 62c17be Thanks @DylanPiercey! - Fix analysis of related controllable attributes merging an expression's references into itself, which duplicated its tracked reads.

  • #3320 303d3de Thanks @DylanPiercey! - Avoid serializing the owner scope reference for state driven <if> and <for> branches; the resume runtime now links branch owners from the markers it already processes.

  • #3320 4b12581 Thanks @DylanPiercey! - Encode static serialize reason groups as a numeric bitmask instead of an object literal, avoiding an allocation per custom tag instance during SSR.

  • #3324 eea2ffb Thanks @DylanPiercey! - Fix a placeholder at the edge of a <show> body merging with the text adjacent to the <show> tag. Because <show> inlines its body into the parent, a template like <strong>+ <show=cond>${value}</show></strong> serialized the static + prefix and the placeholder value as a single text node with no <!> separator, so the first client-side update overwrote the whole node and deleted the static text. Sibling-text analysis now looks through <show> body boundaries in both directions.

  • #3325 2329b2c Thanks @DylanPiercey! - Shrink and speed up the dynamic <style> runtime: ; and { in interpolated values are now hex escaped in a single pass (so a raw ; always ends a declaration and a raw { is always the rule opener, letting the client-side updater splice with indexOf instead of an escape-aware scan), the shell selector drops its whitespace, the shell helper applies the nonce itself instead of a separate generated statement, and unchanged rule text no longer rewrites the style element.

Don't miss a new marko release

NewReleases is sending notifications on new releases.