Deferred Data
Deferred Data
Deferred loading allows you to return promises from your loader. Fast data renders immediately while slower data streams in using Suspense and Await.
Instant
This data loaded instantly!
1 Second Delay
Loaded after 1 second
2.5 Second Delay
Loaded after 2.5 seconds
Example Code
import { delay } from "@std/async/delay";
import type { RouteLoaderArgs } from "@udibo/juniper";
export function loader(args: RouteLoaderArgs) {
return {
fastData: "Instant!",
slowData: delay(1000).then(() => "Delayed")
};
}
// In component:
<Suspense fallback={<Loading />}>
<Await resolve={loaderData.slowData}>
{(data) => <div>{data}</div>}
</Await>
</Suspense>