--- name: agentic-jumpstart-performance description: Performance optimization patterns for TanStack Start with React 19, Vite, Drizzle ORM, and TanStack Query. Use when optimizing page load times, database queries, bundle size, caching, memoization, lazy loading, or when the user mentions performance, speed, optimization, or slow. --- # Performance Optimization ## React 19 Performance Patterns ### Code Splitting with Lazy Loading ```typescript import { lazy, Suspense } from "react"; // Lazy load heavy components const HeavyEditor = lazy(() => import("./HeavyEditor")); const DataVisualization = lazy(() => import("./DataVisualization")); function Dashboard() { return ( }> ); } ``` ### Strategic Memoization ```typescript import { memo, useMemo, useCallback, useDeferredValue } from "react"; // Memoize expensive computations const expensiveResult = useMemo(() => { return processLargeDataset(data); }, [data]); // Memoize callbacks passed to children const handleClick = useCallback((id: number) => { updateItem(id); }, [updateItem]); // Defer non-critical updates const deferredSearchTerm = useDeferredValue(searchTerm); // Memoize components that receive stable props const MemoizedList = memo(function List({ items }: { items: Item[] }) { return items.map(item => ); }); ``` ### Avoid Re-renders ```typescript // BAD: Creates new object every render // GOOD: Define outside or memoize const style = { color: "red" }; // BAD: Creates new function every render