Ambos exibem condicionalmente um elemento, mas fazem isso de maneiras diferentes — v-if adiciona/remove o elemento do DOM; v-show mantém-o no DOM e alterna o CSS display.
vue
<template>
<p v-if="isVisible">Rendered only when true (removed from DOM when false)</p>
<p v-show="isVisible">Always in the DOM; just display:none when false</p>
</template>
