Slow NetSuite performance frustrates users, reduces productivity, and can even block critical business processes. The good news is that many performance issues are addressable with targeted optimizations. In our experience, organizations that systematically apply the techniques below often see 40–60% improvements in page load times, search execution, and overall system responsiveness.
1. Saved Search Optimization
Saved searches are one of the most common performance bottlenecks. Poorly designed searches can run for minutes, consume governance units, and slow down the entire account. The key is to minimize the amount of data NetSuite must scan and return.
Best Practices
- Use filters effectively: Apply filters on indexed fields (e.g., internal IDs, dates, status) rather than formula fields or joined columns. Filters reduce the result set before sorting and formatting.
- Limit columns: Only include columns you actually need. Each additional column, especially from joined records, increases query complexity.
- Avoid formula columns where possible: Formula columns are computed at runtime and can't use indexes. Prefer summary or saved search sublists for aggregations.
- Set result limits: Use "Maximum Rows" to cap results. For dashboards and portlets, 100–500 rows is usually sufficient.
Run the Search Audit (Setup > Search Audit) periodically to identify long-running searches and optimize or retire them.
2. Script Performance Tuning
SuiteScript can dramatically impact performance when not optimized. User Event scripts, Scheduled scripts, and Map/Reduce jobs all consume governance units and can cause timeouts or governance errors.
Key Techniques
- Minimize record.load() calls: Batch record operations where possible. Use search.run() with getRange() instead of loading records one by one when you only need specific fields.
- Use N/search module efficiently: Prefer search.create() with filters over loading records and iterating. Use search.Type for type-safe queries.
- Reduce governance consumption: Avoid nested loops, limit log statements in production, and use N/task for long-running work instead of extending script runtime.
- Cache where appropriate: Use N/cache for configuration or lookup data that doesn't change frequently.
Profile scripts using the Execution Log and Governance Usage to identify hotspots before deploying to production.
3. Dashboard and Portlet Optimization
Dashboards are often the first thing users see when they log in. Heavy portlets—especially saved searches, KPIs, and custom portlets—can make the entire dashboard slow to load.
Recommendations
- Limit portlets per dashboard: Aim for 4–6 portlets per tab. More portlets mean more concurrent queries on login.
- Optimize underlying searches: Ensure each portlet's saved search has tight filters and reasonable row limits.
- Use standard KPIs when possible: Custom KPIs that run complex searches add load. Evaluate whether standard KPIs meet your needs.
- Consider lazy loading: For custom portlets, defer non-critical data loading until the user interacts with the portlet.
4. Record Loading Strategies
How and when records are loaded affects both user experience and system load. Large forms with many sublists, custom fields, and related records can take several seconds to render.
Strategies
- Reduce sublist columns: Only display columns users need for daily work. Hide or remove rarely used columns.
- Limit line count on sublists: For transaction forms, set a reasonable default line count. Users can "Show All" when needed.
- Audit custom fields: Remove unused custom fields. Each field adds to form load time and storage.
- Use inline editing wisely: Inline editing on large sublists can be slow. Consider standard edit for bulk changes.
5. Scheduled Script Best Practices
Scheduled scripts run in the background and can impact system performance if not designed carefully. Poorly written scheduled scripts can cause governance spikes and affect concurrent user sessions.
Guidelines
- Schedule during off-peak hours: Run heavy batch jobs during low-usage windows (e.g., nights, weekends).
- Use Map/Reduce for large datasets: Map/Reduce scripts distribute work across multiple workers and handle governance limits better than scheduled scripts for bulk operations.
- Implement checkpointing: For long-running scripts, save progress so you can resume from the last checkpoint if the script times out.
- Monitor script duration: Use Suite Analytics and the Script Execution log to identify scripts that run too long or consume excessive governance.
6. Browser and UI Tips
Client-side factors also affect perceived performance. Browser configuration, extensions, and caching can make a noticeable difference.
Recommendations
- Use supported browsers: NetSuite optimizes for Chrome, Edge, and Firefox. Older or unsupported browsers may perform poorly.
- Clear cache periodically: Stale cached assets can cause odd behavior. Encourage users to clear cache after major releases.
- Disable unnecessary browser extensions: Extensions that inject scripts or modify pages can slow NetSuite.
- Optimize workbook preferences: For users who work primarily in lists, adjust "Rows Per Page" to a reasonable number (e.g., 50) to reduce initial load.
Performance optimization is iterative. Start with the biggest wins—saved searches and scripts—then move to dashboards and record loading. Regular monitoring and incremental improvements will keep your NetSuite environment fast and responsive.