# Async Components Are Suspensible by Default ## Rule Async components created with `defineAsyncComponent` are automatically treated as async dependencies of any parent `` component. When wrapped by ``, the async component's own `loadingComponent`, `errorComponent`, `delay`, and `timeout` options are ignored. ## Why This Matters This behavior causes confusion when developers configure loading and error states on their async components but these states never appear because a parent `` takes over control. The component's options are silently ignored, leading to unexpected behavior. ## Bad Code ```vue ``` ## Good Code ```vue ``` ## When to Use Each Approach **Keep suspensible (default)** when: - You want centralized loading/error handling at a layout level - The parent `` provides appropriate feedback - Multiple async components should show a unified loading state **Use `suspensible: false`** when: - You need component-specific loading indicators - The component should handle its own error states - You want fine-grained control over the UX ## Key Points 1. Check if your component tree has a `` ancestor before relying on async component options 2. Use `suspensible: false` explicitly when you need the component to manage its own states 3. The `` component's `#fallback` slot and `onErrorCaptured` take precedence over async component options ## References - [Vue.js Async Components Documentation](https://vuejs.org/guide/components/async) - [Vue.js Suspense Documentation](https://vuejs.org/guide/built-ins/suspense)