Patch Changes
-
#3271
bf09dabThanks @DylanPiercey! - Render a non-promise<await>value synchronously even when the<await>is inside a<try>. Previously the browser runtime could only render it synchronously at the top level and deferred to the next tick inside a<try>(because the await value is resolved before its content branch is created); it now renders in the same pass. -
#3269
fdb5627Thanks @DylanPiercey! - Render a<await>tag synchronously when its value is not a promise, instead of crashing withvalue.then is not a function. This matches the server runtime, which already renders non-promise values synchronously. -
#3273
47bbd04Thanks @DylanPiercey! - Collapse value signals that only forward their scope and value to another signal ((scope, value) => fn(scope, value)) down to the target signal itself, removing the redundant wrapper closure from the generated output. -
#3265
3a66e8bThanks @DylanPiercey! - Render known tag content passthroughs (<${input.x}/>with no tag variable, arguments, attributes or body) through a leaner_dynamic_tag_contentsignal instead of the general_dynamic_tag. When a known custom tag or<define>tag forwards statically known body content, the parent now calls this specialized signal, which skips renderer normalization, the native (string) tag branch, tag variables and parameter handling. Where that content branch is included in the client build (e.g. mounted inside a client-toggled<if>), this drops the heavy_dynamic_tagdependencies and roughly halves the bundled cost of that code. Server-rendered content is tree-shaken from the client as before, so those bundles and resume behavior are unchanged. -
#3278
8b34976Thanks @DylanPiercey! - Optimize text rendering: collapse text-only<if>/<else>chains in native elements to a single placeholder, escape only the dynamic parts of a placeholder (static strings are escaped at compile time), and hoist static leading/trailing text out of placeholders into static text nodes. -
#3274
d043f9cThanks @DylanPiercey! - Fix static (server only) pages not linking their client side assets. Colocated style files (egtemplate.style.css),<style>blocks, and imports matching thehydrateIncludeImportsoption are now included in a page's client entry even when nothing in its template tree is interactive, so completely static routes are no longer rendered unstyled.