Performance: Dynamic routes with [param]
MEDIUM IMPACT
This affects page load speed and rendering performance by controlling how pages are generated and served based on URL parameters.
export async function getStaticPaths() { return { paths: [{ params: { param: 'a' } }, { params: { param: 'b' } }], fallback: false }; } export async function getStaticProps({ params }) { const data = await fetchData(params.param); return { props: { data } }; } export default function Page({ data }) { return <div>{data.content}</div>; }
export default function Page({ params }) { const [data, setData] = React.useState(null); React.useEffect(() => { fetch(`/api/data?param=${params.param}`) .then(res => res.json()) .then(data => setData(data)); }, [params.param]); if (!data) return <div>Loading...</div>; return <div>{data.content}</div>; } // No getStaticPaths or getServerSideProps used
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Client-side data fetch in dynamic route | Minimal DOM nodes | 1 reflow after data loads | High paint cost due to delayed content | [X] Bad |
| Static generation with getStaticProps and getStaticPaths | Minimal DOM nodes | Single reflow on initial paint | Low paint cost, fast content display | [OK] Good |