Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

How to Improve Dashboard Performance When Reports Load Slowly?

VaddiR
Tera Contributor

Hi Community,

We are experiencing slowness when loading dashboards in ServiceNow. The issue seems to occur because some reports on the dashboard take a long time to load. When such a dashboard is set as the homepage, users are unable to open other modules until the dashboard fully loads.

I have two questions:

  1. How can we optimize these reports to improve dashboard performance? Are there best practices for report design or data retrieval that can help reduce load time?

  2. Can we use cache.do to clear the cache frequently? Will this help in improving dashboard responsiveness, or is there a better approach for managing cache?

Any guidance, best practices, or alternative solutions would be greatly appreciated.

Thanks in advance!

5 REPLIES 5

MaxMixali
Tera Guru

Hi here a list of check that you can follow to optimise dashboard and reporting hope that can help.

In generally it's important that you will display data with same interval of update and do not update in automatically the reports and dashboard 

 

1)  Reduce the Number of Reports on the Dashboard
 
ServiceNow recommends:
•< 10 reports per dashboard tab
•Use tabs to split dashboards logically
e.g., In Progress | Compliance | Performance
 
This reduces simultaneous rendering.
 
 
2)  Change Reports to Use Scheduled Data Instead of Live Data
 
The most important optimization:
 
If your reports use Performance Analytics (PA):
 
Switch from Live query to Indicator score (preprocessed data).
 
How:
•Open the report
•Change data source from Table to PA Indicator / PA Breakdown
•Use scheduled data collection
 
Result:
Reports load instantly because they no longer run GlideRecord on the fly.
 
 
3)  Optimize Report Conditions (Avoid Heavy Queries)
 
Avoid:
•Wildcard searches (CONTAINS, STARTSWITH)
•Queries on long text fields
•Querying the whole table (add date filters!)
•“ORDER BY” on large datasets
•Joins on tasks via script fields
 
Do:
•Add a date range (last 30 days, last 3 months, etc.)
•Add indexed fields to the filter (explained below)
•Keep conditions simple
 
 
4)  Add Indexes to Improve Report Queries
 
Look in:
 
System Logs → Stats → Slow Query Logs
 
Find slow report queries and add an index:
 
System Definition → Indexes → New
 
Good candidates:
•sys_created_on
•sys_updated_on
•state
•active
•assignment_group
•assigned_to
 
Creating the right index often improves response from 10 seconds → < 0.5 seconds.
 
 
5)  Use Performance Analytics Widgets Instead of Standard Reports
 
PA widgets:
•Are cached
•Load faster
•Support breakdowns, targets, forecasts
•Allow prefiltered views
 
If you currently have:
•List reports
•Bar/Line/Pie reports
•Score trend reports
 
You should convert them to PA visualizations.
 
 
6)  Enable Caching for Dashboards
 
Go to:
 
Performance Analytics → Dashboard Cache
•Enable Data Cache
•Set refresh to every 5–15 minutes
•Works extremely well for static KPIs and trending reports
 
This reduces dashboard load time from seconds → milliseconds.
 
 
7)  Avoid “List” Reports With >500 Rows
 
Large list reports are the main reason dashboards freeze.
 
Replace them with:
•PA widgets
•Count / Distribution charts
•Pivot tables
•Reports with a link like “View list” instead of embedding the whole list
 
 
😎  Convert Dashboards to “Next Experience / UI Builder”
 
UI16 Dashboards render slower.
 
Next Experience Dashboards (UI Builder) provide:
•Better caching
•Faster rendering engine
•More efficient widget loading
•Lazy loading (reports only load when visible)
 
 
9)  Enable Lazy Loading for Widgets (UI Builder Feature)
 
If your dashboard is in UI Builder:
 
Turn on:
•Lazy Load
•Client-side caching
 
This prevents all widgets from loading at once.
 
 
10)  Check for Slow Scripts Embedded in Reports
 
Custom script-based report sources slow everything:
•Scripted REST sources
•Scripted report data sources
•Business rules running on query
•ACLs evaluating scripts
 
Check:
 
System Logs → All → Slow Scripts
 
Refactor or remove heavy scripts.
 
 
11)  Use Report Caching (Platform Feature)
 
ServiceNow caches report data automatically when enabled.
 
Check:
 
System Properties → glide.ui.report.chart.cache.enabled = true
 
If disabled → reports run new queries on every dashboard load.
 
 
12)  Turn Off Automatic Refresh for Reports
 
If your dashboard refreshes every minute, every report is constantly querying the database.
 
Set refresh to:
•5 minutes
•10 minutes
•Or manual refresh
 
Especially important for multi-tab dashboards.
 
 
13)  Profile the Dashboard Using ‘Diagnostics → Page Inspector’
 
Go to:
•System Diagnostics → Diagnostics Tools → Page Inspector
•Load the dashboard
 
Look for:
•slow transactions
•slow widgets
•heavy queries
•network bottlenecks
 
ServiceNow uses this internally to optimize dashboards.