One more beta of Node-RED 5 is now available. Following some of the feedback (and bugs) with the last beta, we wanted to get one more out to make sure we've addressed everything we need to before the final release.
The changelog lists out all of the PRs in this release: node-red/CHANGELOG.md at dev · node-red/node-red · GitHub
Install-free Demo
If you have a WebKit-based browser (eg Chrome), and possibly Firefox, you can preview the release here:
Node 22 is now the minimum supported Node.js version
Node-RED now requires a minimum of Node 22.9.0 to run. It will refuse to start on anything earlier.
Node 24 is the recommended version to run with. The docker images are based on Node 24 - and the plan will be to only provide Node 24 images (adding Node 26 when it becomes available).
UX updates
There are no significant changes on the UX with this beta - mostly just fixing up the various items flagged to us with the last beta.
Improved accessibility has been a common theme in the UX work, and the Dark theme has received a number of updates. We've also started applying appropriate aria attributes across the editor; there will always be more to do around accessibility, but Google Lighthouse is much nicer about us than it was before.
Away from the editor UX, there have been a few new items in this release worth highlighting
Calling Link nodes from the Function node
It is now possible to call a Link node from the middle of a Function node and wait for a response to be sent back. For example, if you created a flow, wrapped in Link nodes, to handle queries to a database, you could call it in code with:
const { payload: data } = await node.linkcall('query-database', { query: "SELECT * FROM T1" })
The new api is exposed as node.linkcall. You pass it the name, or id, of the link in node to call and the message to pass it.
There's more to it than just that - check the PR for full details. We still need to get this added to the documentation.
See Defining utility functions for re-use in a function node by Steve-Mcl · Pull Request #5494 · node-red/node-red · GitHub for details Thanks to @Steve-Mcl for working on this.
Bundling npm as part of Node-RED
Previously, Node-RED relied on npm being installed and on the path for the palette manager to be able to do its thing.
With this release, we now include npm as an explicit dependency of Node-RED. This gives us more control on how its used and closes some potential security issues.
Updated developer setup
For contributors to the core code base, we've now migrated away from the grunt task runner tool in favour of custom npm scripts. Grunt was the right choice 13 years ago, but the world has moved on, and, finally, so have we. This allows us to drop a lot of devDependencies from the project that weren't being maintained.
We've also moved off the long-dormant jshint to eslint. At this stage, we're not applying any new linting rules, but it lays the groundwork for that in the near future.
Check the PRs for more details:
- DX: remove Grunt dependency · Issue #5668 · node-red/node-red · GitHub
- DX: replace jshint with eslint · Issue #5672 · node-red/node-red · GitHub
Installing the beta
If you want to try out the beta, you will need specify node-red@next when you use npm to update. Without the @next you'll still get 4.1.x
So on a Pi you'd do:
sudo npm install -g --unsafe-perm node-red@next
Docker images
The beta images are available under nodered/node-red-dev:v5.0.0-beta.6 - with the default image being based on Node 24.
Reporting problems
If you hit any problems, please report them either as a reply on this topic, or in the #core-dev slack channel. Please do not post new topics to the forum regarding the beta as that could confuse users who are not using the beta.
What's Next
I've said it before, but this should be the final beta release. From this point forward I'm focussed on getting the final release done by the end of May, if not sooner.





