My assumption is that this is because Vue's DOM update kicks in via a microtask before the browser checks for preventDefault behavior - the browser resets the checkbox state when it sees that the event default behavior has been prevented, overwriting the DOM changes made by Vue.. Vue.js - The Progressive JavaScript Framework. Classes to apply to the wrapper when the checkbox is checked: inputWrapper: Classes for the span that wraps the checkbox: ... Vue. If the initial value of your v-model expression does not match any of the options, the