Hi Team,
While profiling the Node-RED editor (workflow builder) using Chrome DevTools Performance Recorder, I noticed that several minified JavaScript files (min.js) are being loaded in a render-blocking manner. This significantly delays the editor from becoming interactive.
I want to understand whether this is expected behavior or if there are recommended optimization paths for reducing render-blocking scripts in the Node-RED editor.
Summary of the Issue
- During page load, multiple JavaScript bundles appear in red in the network waterfall, indicating they are render-blocking.
- These scripts must fully download, parse, and execute before the UI can render.
- As a result, the Largest Contentful Paint (LCP) is delayed.
- Estimated render-blocking impact (from DevTools): ~3.5 seconds.
Files Observed as Render-Blocking
Examples of files flagged by the performance trace:
vendor.jsred-debug.min.jsmain.min.jsdynamic.min.jsmermaid.min.js- Additional Node-RED editor JS bundles (jsonata, infotips, node definitions, etc.)
The waterfall shows all of these downloading and executing before the editor renders.
Evidence
The screenshot attached shows:
- All red-colored network requests are considered render-blocking.
- DevTools recommendations show an estimated render-blocking savings of 3.56s.
- Font loading (e.g., NunitoSans.ttf) also contributes additional blocking time.
What I Want to Understand
- Is it expected that so many editor scripts load synchronously?
Does Node-RED rely on blocking script execution order to initialize the editor? - Is there an existing recommendation for optimizing script loading?
For example:
- using
deferinstead of synchronous<script>tags - splitting larger bundles
- lazy-loading editor modules
- reducing up-front JS parsing cost
- Has this been discussed or optimized in recent versions?
Are there any active efforts or guidance for minimizing render-blocking on editor startup?
Request for Guidance
Any insights on:
- why Node-RED ships these JS bundles in a render-blocking manner,
- whether this is necessary for correct editor initialization, and
- whether there are optimizations I can contribute or configure,
would be very helpful.
I can also share the full performance trace if needed.
