<Suspense>
Coordinates async dependencies, showing a fallback until they resolve.
Syntax
<Suspense><template #default /><template #fallback /></Suspense> Returns
component — Renders fallback then default once async setup resolves.
Examples
<!-- AsyncUser.vue uses top-level await in setup -->
<script setup lang="ts">
const res = await fetch('/api/user');
const user = await res.json();
</script>
<template><p>{{ user.name }}</p></template>
<!-- parent -->
<template>
<Suspense>
<template #default><AsyncUser /></template>
<template #fallback><p>Loading...</p></template>
</Suspense>
</template>
Notes
<Suspense> waits for async dependencies in its default slot (components with
async setup or top-level await) and shows the fallback meanwhile. Combine
with onErrorCaptured for error states. Still marked experimental; its API may
change in future minor versions.