diff --git a/src/compiler/compile/render_ssr/handlers/Element.ts b/src/compiler/compile/render_ssr/handlers/Element.ts index d9254a7b86..41e862345a 100644 --- a/src/compiler/compile/render_ssr/handlers/Element.ts +++ b/src/compiler/compile/render_ssr/handlers/Element.ts @@ -149,7 +149,7 @@ export default function (node: Element, renderer: Renderer, options: RenderOptio // value = name === 'textContent' ? x`@escape($$value)` : x`$$value`; } else if (binding.name === 'value' && node.name === 'textarea') { const snippet = expression.node; - node_contents = x`${snippet} || ""`; + node_contents = x`@escape(${snippet} || "")`; } else if (binding.name === 'value' && node.name === 'select') { // NOTE: do not add "value" attribute on ', + ssrHtml: '' +}; diff --git a/test/runtime/samples/attribute-escape/main.svelte b/test/runtime/samples/textarea-value-escape/main.svelte similarity index 100% rename from test/runtime/samples/attribute-escape/main.svelte rename to test/runtime/samples/textarea-value-escape/main.svelte