How does Vue’s reactivity system handle complex nested objects, and what are its limitations?

Vue 2’s reactivity system relies on Object.defineProperty, which can’t detect property additions/deletions in nested objects or arrays. Vue 3 overcomes this by using proxies, which allow full reactivity for deeply nested objects.