ref survives destructuring and reactive does not

reactive is a Proxy over an object and reactivity lives in the property access, so pulling a property out of it produces a plain value.

const state = reactive({ count: 0 })
const { count } = state       // a number. not reactive.
state.count++                 // count is still 0

const count = ref(0)
const c = count               // the same box
count.value++                 // c.value is 1

// and the bridge, when a composable must return an object
const { a, b } = toRefs(reactive({ a: 1, b: 2 }))

The rule that settled is ref for everything and reactive only for an object always used as a whole, because mixing them produces code where some things need .value and some do not. The inconsistency costs more attention than the four characters ever did. toRefs is the escape hatch for a composable that has to return a reactive object, and needing it usually means the composable should have returned refs in the first place.