Performance: Why advanced patterns solve real-world complexity
MEDIUM IMPACT
This concept impacts how efficiently complex UI and data flows load and update, affecting user interaction speed and page stability.
import { useLoaderData } from '@remix-run/react'; export async function loader() { return fetch('/api/data').then(res => res.json()); } export default function Page() { const data = useLoaderData(); return <div>{data.items.map(item => <p key={item.id}>{item.name}</p>)}</div>; }
import React from 'react'; import { useLoaderData } from '@remix-run/react'; export default function Page() { const data = useLoaderData(); const [state, setState] = React.useState(data); React.useEffect(() => { fetch('/api/data').then(res => res.json()).then(newData => setState(newData)); }, []); return <div>{state.items.map(item => <p key={item.id}>{item.name}</p>)}</div>; }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Fetching data in useEffect after load | Multiple DOM updates | Multiple reflows | High paint cost due to repeated updates | [X] Bad |
| Fetching data in Remix loader | Single DOM update | Single reflow | Low paint cost with stable UI | [OK] Good |