EdgeOne Pages Next.js Starter - Streaming
Gradually render page content to improve user experience and perceived performance.
Suitable for data-intensive pages and complex content, advantages are faster first screen display and progressive content loading, supporting large pages and complex dashboards.
🚀 True streaming rendering: Page content loads progressively, fast components display immediately, slow components load one by one!
Streaming: Streaming Rendering Demo
Fast Component (Load instantly)
Load Time: 2025-10-25T14:50:33.803Z
Fast Data: 73
Status: Loaded instantly!
Loading slow component 1 (5s)...
Loading...
Loading slow component 2 (8s)...
Loading...
Streaming Rendering Features
• Progressive Loading: Page content displays progressively by component
• Faster First Screen: Fast components display immediately without waiting for slow components
• Better User Experience: Users can see partial content immediately
• Parallel Processing: Multiple async components can load in parallel
Refresh the page to see the true streaming rendering effect - content appears progressively!
// app/streaming/page.tsx
// Force dynamic rendering - disable static optimization
export const dynamic = 'force-dynamic'
export const revalidate = 0
import { Suspense } from 'react'
export default function StreamingPage() {
return (
<div>
<h1>Streaming Rendering Demo</h1>
{/* Fast component displays immediately */}
<FastComponent />
{/* Slow components use Suspense for streaming loading */}
<Suspense fallback={<LoadingSpinner message="Loading component 1..." />}>
<SlowDataComponent />
</Suspense>
<Suspense fallback={<LoadingSpinner message="Loading component 2..." />}>
<AnotherSlowComponent />
</Suspense>
</div>
)
}
// Async server component
async function SlowDataComponent() {
// Simulate data fetching delay
await new Promise(resolve => setTimeout(resolve, 2000))
const data = await fetch('https://api.example.com/slow-data')
return <div>Streaming data: {data.value}</div>
}