# Suspense Only Reverts to Pending on Root Node Replacement ## Rule Once resolved, `` only reverts to a pending state if the root node of the `#default` slot is replaced. New async dependencies nested deeper in the tree will NOT cause `` to revert to a pending state. ## Why This Matters This is a common source of confusion. Developers expect Suspense to show the fallback whenever any async component in the tree starts loading, but it only triggers for root-level changes. Nested async updates complete silently without showing any loading indicator. ## Bad Code ```vue ``` ## Good Code ### Solution 1: Use :key to Force Root Replacement ```vue ``` ### Solution 2: Nested Suspense with suspensible Prop (Vue 3.3+) ```vue ``` ### Solution 3: Manual Loading State for Nested Content ```vue ``` ## Key Points 1. Suspense tracks the root node identity, not the entire subtree 2. Use `:key` to force root node replacement when you need Suspense to re-trigger 3. For Vue 3.3+, nested `` with `suspensible` prop handles deeply nested async components 4. Consider manual loading states for fine-grained control over nested content 5. Without the `suspensible` prop, inner Suspense is treated as sync and causes multiple patching cycles ## References - [Vue.js Suspense Documentation](https://vuejs.org/guide/built-ins/suspense#nested-suspense)