diff --git a/packages/svelte/src/internal/client/dom/elements/attributes.js b/packages/svelte/src/internal/client/dom/elements/attributes.js index b31bb12ac5..e3816a733f 100644 --- a/packages/svelte/src/internal/client/dom/elements/attributes.js +++ b/packages/svelte/src/internal/client/dom/elements/attributes.js @@ -16,10 +16,12 @@ import * as w from '../../warnings.js'; */ export function remove_input_attr_defaults(dom) { if (hydrating) { - const value = dom.value; + // using getAttribute instead of dome.value allow us to have + // null instead of "on" if the user didn't set a value + const value = dom.getAttribute('value'); set_attribute(dom, 'value', null); set_attribute(dom, 'checked', null); - dom.value = value; + if (value) dom.value = value; } }