Why is my dashboard slow?
Last checked 31 Aug 2026
Short answer
Dashboards are usually slow because they run several unoptimised queries at once, re-render on every state change, or load large charts and images without lazy loading.
Common causes
Dashboards combine everything that tends to make a page slow: multiple data sources, charts, tables, and frequent re-renders from filters or date pickers.
- Too many queries firing at once. Each widget doing its own unfiltered fetch on mount adds up quickly. See /questions/how-do-i-reduce-unnecessary-database-calls.
- Missing indexes. A dashboard summarising thousands of rows without a database index on the filtered/sorted column will get slower as data grows.
- Heavy client-side aggregation. Summing or grouping rows in JavaScript after fetching everything is much slower than doing it in a Postgres query or view.
- Unnecessary re-renders. A shared filter state stored too high in the component tree can re-render the whole dashboard on every keystroke.
- Unoptimised charts/images. Large chart libraries or uncompressed images loaded eagerly slow the first paint.
Steps to diagnose
- Open your browser's dev tools Network tab and reload the dashboard — look for slow or duplicate requests.
- Ask Lovable:
Look at the dashboard page and list every database query it runs on load, and whether any could be combined or filtered earlier.
- Check whether summary numbers could be computed by a Postgres view or function instead of in the browser.
- Add loading skeletons so the page feels responsive while data streams in — this doesn't fix the root cause but helps perceived performance.
What usually goes wrong
People add more widgets to a dashboard over time without revisiting the original queries, so the count of round trips grows silently. Periodically re-run the audit above. For a systematic pass across the whole project, see /questions/how-do-i-audit-a-lovable-project-s-performance.
Sources
Was this answer helpful?
Related questions
- AnswerWhy is my database making so many requests?Usually a component is re-fetching data on every render, a page is running the same query multiple times, or you're fetching entire tables instead of what's actually needed — ask Lovable to audit data-fetching patterns.
- AnswerHow do I improve Core Web Vitals?Focus on the three metrics Google measures — LCP (loading), INP (interactivity), and CLS (visual stability) — and fix the specific one flagged as poor, usually starting with images for LCP.
- AnswerHow do I lazy-load images?Ask Lovable to add native lazy-loading to images below the fold while keeping the hero/first-visible image loading eagerly, so visitors aren't downloading offscreen images before they're needed.
- AnswerHow do I remove unused code?Ask Lovable to search for unused components, imports and dependencies, or run a tool like ts-prune/depcheck via the terminal, then remove what's confirmed unused and re-test.