diff --git a/packages/compiler-ssr/src/transforms/ssrTransformElement.ts b/packages/compiler-ssr/src/transforms/ssrTransformElement.ts index 6a028953ed6..8a60a58d992 100644 --- a/packages/compiler-ssr/src/transforms/ssrTransformElement.ts +++ b/packages/compiler-ssr/src/transforms/ssrTransformElement.ts @@ -130,7 +130,9 @@ export const ssrTransformElement: NodeTransform = (node, context) => { createSimpleExpression(`"value" in ${tempId}`, false), createSimpleExpression(`${tempId}.value`, false), createSimpleExpression( - existingText ? existingText.content : ``, + existingText + ? `${existingText.content[0] === '\n' ? '\n' : ''}${existingText.content}` + : ``, true, ), false, diff --git a/packages/runtime-core/__tests__/hydration.spec.ts b/packages/runtime-core/__tests__/hydration.spec.ts index bf07c9773b3..f653d52c316 100644 --- a/packages/runtime-core/__tests__/hydration.spec.ts +++ b/packages/runtime-core/__tests__/hydration.spec.ts @@ -1908,6 +1908,14 @@ describe('SSR hydration', () => { expect(`Hydration attribute mismatch`).toHaveBeenWarned() }) + test('' }), + ) + mountWithHydration(html, () => h('textarea', null, '\n')) + expect(`Hydration text content mismatch`).not.toHaveBeenWarned() + }) + test('boolean attr handling', () => { mountWithHydration(``, () => h('input', { readonly: false })) expect(`Hydration attribute mismatch`).not.toHaveBeenWarned()