<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <generator uri="http://jekyllrb.com" version="3.10.0">Jekyll</generator>
  <link href="https://nodered.org/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://nodered.org/" rel="alternate" type="text/html" />
  <updated>2026-03-24T11:36:57+00:00</updated>
  <id>https://nodered.org//</id>

  
    <title type="html">Node-RED</title>
  

  
    <subtitle>Node-RED Site</subtitle>
  

  

  
  
    <entry>
      <title type="html">The path to Node-RED 5.0</title>
      <link href="https://nodered.org/blog/2025/12/03/node-red-roadmap-to-5" rel="alternate" type="text/html" title="The path to Node-RED 5.0" />
      <published>2025-12-03T00:00:00+00:00</published>
      <updated>2025-12-03T00:00:00+00:00</updated>
      <id>https://nodered.org/blog/2025/12/03/node-red-roadmap-to-5</id>
      <content type="html" xml:base="https://nodered.org">&lt;p&gt;At &lt;a href=&quot;https://www.youtube.com/watch?v=lwhHYPVgc2w&amp;amp;list=PLyNBB9VCLmo2yvFdVZOv41NUEzuw-CAZX&quot;&gt;Node-RED Con&lt;/a&gt; I spoke about the future roadmap of Node-RED, charting a course to the 5.0 release.&lt;/p&gt;

&lt;p&gt;Previous major version releases have been done with the intention of aligning with Node.JS releases; as old versions reach their end-of-life, we do a major version bump of Node-RED to drop support of those versions. We haven’t been entirely successful in keeping to that schedule, and our overall release cadence has slowed down. It’s time to do something about that.&lt;/p&gt;

&lt;p&gt;Rather than just do a 5.0 bump to update our Node.JS support, we wanted to take this opportunity to step back and reflect on what we could do to update the Node-RED user experience. The general look and feel of the editor hasn’t changed for a long time, aside from small tweaks. There are a lot of aspects of the editor that are taken for granted and often overlooked when thinking about improvements to be made.&lt;/p&gt;

&lt;p&gt;This was one of the motivations behind the recent &lt;a href=&quot;/blog/2025/12/01/modernization-survey-results&quot;&gt;community survey&lt;/a&gt; - getting feedback from the community on what’s working and what could be improved, understanding how receptive users are to change in the Node-RED experience.&lt;/p&gt;

&lt;h2 id=&quot;evolution-not-revolution&quot;&gt;Evolution not Revolution&lt;/h2&gt;

&lt;p&gt;Building on the results of the survey, as well as our own discussions, we’ve identified four areas of focus:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Node-RED UX Modernization&lt;/li&gt;
  &lt;li&gt;Node Appearance Improvements&lt;/li&gt;
  &lt;li&gt;Functional Enchancements&lt;/li&gt;
  &lt;li&gt;Project Infrastructure Updates&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;doc-callout&quot;&gt;
    If you want to follow the development work more directly, follow the &lt;a href=&quot;https://github.com/node-red/node-red/issues/5362&quot;&gt;Node-RED 5.0 issue on GitHub&lt;/a&gt;. From there you&apos;ll find links to issues for different parts of the plan - some already raised, some to follow.
&lt;/div&gt;

&lt;h3 id=&quot;node-red-ux-modernization&quot;&gt;Node-RED UX Modernization&lt;/h3&gt;

&lt;p&gt;The Node-RED UI hasn’t changed much over the years. Comparing a screenshot from the very early days of the project with today, you can see a clear visual connection between the two, with the overall structure of the editor largely unchanged.&lt;/p&gt;

&lt;p&gt;When we think about the information architecture of the of the editor however, some issues start to appear. Currently, we have the palette on the left, the flows in the middle and &lt;em&gt;everything else&lt;/em&gt; stacked up on the right-hand sidebar. The sidebar has become a catch-all space for functionality to be exposed that doesn’t fit in the main workspace.&lt;/p&gt;

&lt;p&gt;The Info sidebar provides an overview of all of your flows - a tree-view of all flows and nodes. But we still get feedback around making it easier to navigate around flows. In our Western convention of reading left to right, it would be far more natural to have this overview on the left-hand side.&lt;/p&gt;

&lt;p&gt;Another piece of feedback was around the Debug sidebar; a common desire to have it visible whilst working on other things in the editor. The current UX forces you to chose one sidebar at a time - hiding away things you want to keep an eye on.&lt;/p&gt;

&lt;p&gt;There is also the question of whether the UI makes the best use of the available space. We want to maximise the space available for working the flows.&lt;/p&gt;

&lt;p&gt;Taking all of that into account, we’ve been putting together some UI mockups to see how this &lt;em&gt;could&lt;/em&gt; look. It’s important to stress these aren’t ‘final’ designs - but are there to give a sense of direction and prompt feedback.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/nr5-mockup.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The full scope of the UX modernization covers a number of areas - some more obvious than others when looking at a static screenshot.&lt;/p&gt;

&lt;p&gt;The highlights will include:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Better information flow and navigation&lt;/li&gt;
  &lt;li&gt;More flexible sidebar arrangements; allowing the user to position them on either side of the editor, or split them vertically&lt;/li&gt;
  &lt;li&gt;Improved visual accessibility&lt;/li&gt;
  &lt;li&gt;A built-in dark theme (this one appears to generate particular excitement)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;node-appearance-improvements&quot;&gt;Node Appearance Improvements&lt;/h3&gt;

&lt;p&gt;We’ve separated out the apperance of the nodes themselves as its own area.&lt;/p&gt;

&lt;p&gt;The design of the node has changed very little since the early days of the project. Over time, various additions have been made (status text below, badges above). But there are some unsatisfied requirements we want to look at.&lt;/p&gt;

&lt;p&gt;For example, some nodes have an implicit connection to other nodes; such as the Link Call, Status or Catch nodes. But this isn’t visually represented in anyway. This makes navigating those implicit connections hard to do and breaks the developer workflow.&lt;/p&gt;

&lt;p&gt;Another area is how to better handle more custom nodes. At Node-RED Con we saw the work being &lt;a href=&quot;https://youtu.be/7Hwt4LIAFn4?si=eIv4fo5bGaC-flnD&amp;amp;t=465&quot;&gt;done at Fluidly&lt;/a&gt; to create financial workflows in their custom Node-RED application. They have created a very rich visualisation capability within the editor workspace. Whilst that’s a level of customisation quite specific to their needs, there is clearly some interesting lessons we can learn here.&lt;/p&gt;

&lt;p&gt;We already have community nodes, such as &lt;a href=&quot;https://flows.nodered.org/node/node-red-contrib-image-tools&quot;&gt;Image Tools&lt;/a&gt; that provide in-editor image previews. Currently that relies on “insider information” to inject the image into the workspace. If Node-RED were to change the internal workings of how flows are drawn, that would break the node. So we want to see how we can accommodate this type of customisation in a standard way - whilst keeping some design guidelines and control in place to ensure a good user experience.&lt;/p&gt;

&lt;h3 id=&quot;function-enhancements&quot;&gt;Function Enhancements&lt;/h3&gt;

&lt;p&gt;There are some fairly targetted functional enhancements we also want to look at. They are a bit more open ended at this stage, but will build on the changes described above.&lt;/p&gt;

&lt;p&gt;The main area here is looking at the debugging experience in the editor. The existing Debug sidebar is the backbone of figuring out what’s happening in your flows; but there is plenty of room for improvement, as evident from the many threads in the forum with questions, complaints and suggestions.&lt;/p&gt;

&lt;p&gt;We will be working on a plan for how debugging can be made much easier. What lands in Node-RED 5.0 remains to be seen, but we should see some incremental improvements coming soon.&lt;/p&gt;

&lt;p&gt;In terms of Node.js support, we’ll continue to support the current and active releases. The Node-RED 5.0 docker images we provide will be based on Node 24.&lt;/p&gt;

&lt;h3 id=&quot;project-infrastructure-updates&quot;&gt;Project Infrastructure Updates&lt;/h3&gt;

&lt;p&gt;When we talk about modernizing the Node-RED experience, this isn’t just about the end-user experience. As an Open-Source project, we rely on developers contributing their time to make all of these plans a reality. We need to make it as easy as possible for new developers to contribute. With that in mind, there are various project infrastructure updates we want to make.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Apply standard linting to the code base&lt;/li&gt;
  &lt;li&gt;Move to npm workspaces for the repository structure. When we setup the current repository structure, containing multiple npm packages, there wasn’t a good solution available to manage everything. So we created our own structure and scripts to manage it. This has worked pretty solidly, but things have moved on and we want to re-evaluate. If there’s a good standard solution for this today, we want to consider moving to it so new contributors don’t have to learn “our way” of doing things.&lt;/li&gt;
  &lt;li&gt;Replace our task runner with a modern alternative. This is the tool that manages the development environment, runs tests, creates release and many other tasks. It does its job, but it hasn’t updated for a number of years. There are many alternatives available - so we’ll be evaluating the right tool to move to.&lt;/li&gt;
  &lt;li&gt;Improve our release process; automate more things to make the releases quick to do whilst ensuring a secure and trusted process.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;next-steps&quot;&gt;Next Steps&lt;/h2&gt;

&lt;p&gt;We want to move quite quickly on this plan to get to a stable Node-RED 5.0 release early in the new year. Given the scope of changes being proposed, as with previous major releases, we’ll be publishing regular beta releases of Node-RED 5.0. That’ll start this week, with refreshes as updates are made. We really want to get community feedback along the way.&lt;/p&gt;

&lt;p&gt;With this focus on getting to Node-RED 5.0, we will consider Node-RED 4.x in maintenance mode - it will continue to receive fixes for bugs and security related updates, but any new feature will target Node-RED 5.0.&lt;/p&gt;

&lt;p&gt;If you want to follow the development work, &lt;a href=&quot;https://github.com/node-red/node-red/issues/5362&quot;&gt;this is the top-level planning item&lt;/a&gt;. From there you’ll find links to issues for different parts of the plan - some already raised, some to follow.&lt;/p&gt;

&lt;p&gt;This is an exciting step for the Node-RED project; laying the ground work and refreshing the UX for the future.&lt;/p&gt;</content>

      
      
      
      
      

      
        <author>
            <name>nick</name>
          
          
        </author>
      

      

      

      
        <summary type="html">At Node-RED Con I spoke about the future roadmap of Node-RED, charting a course to the 5.0 release.</summary>
      
    </entry>
  
  
  
    <entry>
      <title type="html">Modernization Survey Results</title>
      <link href="https://nodered.org/blog/2025/12/01/modernization-survey-results" rel="alternate" type="text/html" title="Modernization Survey Results" />
      <published>2025-12-01T00:00:00+00:00</published>
      <updated>2025-12-01T00:00:00+00:00</updated>
      <id>https://nodered.org/blog/2025/12/01/modernization-survey-results</id>
      <content type="html" xml:base="https://nodered.org">&lt;p&gt;Earlier this year, we ran &lt;a href=&quot;https://discourse.nodered.org/et/node-red-survey-shaping-the-future-of-node-reds-user-experience/98346&quot;&gt;a community survey&lt;/a&gt; with a focus on how we could modernize the Node-RED user experience. We revealed some of the results at &lt;a href=&quot;https://www.youtube.com/watch?v=lwhHYPVgc2w&amp;amp;list=PLyNBB9VCLmo2yvFdVZOv41NUEzuw-CAZX&quot;&gt;Node-RED Con&lt;/a&gt;, but now we wanted to share the full set of results with you.&lt;/p&gt;

&lt;div class=&quot;doc-callout&quot;&gt;
    If you want to go ahead and dive into the survey results completely unbiased, you can go ahead and view them on this page: &lt;a href=&quot;https://nodered.org/community-survey&quot;&gt;Node-RED Community Survey&lt;/a&gt;. We invite you to share your thoughts in this &lt;a href=&quot;https://discourse.nodered.org/t/modernization-survey-results-now-available/99830&quot;&gt;blogpost&lt;/a&gt;.
&lt;/div&gt;

&lt;h2 id=&quot;focusing-in-on-userbase-segments&quot;&gt;Focusing in on userbase segments&lt;/h2&gt;

&lt;p&gt;For this blogpost, we want to stay relatively high level and do a kind of retrospective if you will. We will zoom in specifically on the differences between our userbase segments, meaning; everyone who responded, hobbyists, and people using Node-RED in bigger production environments (henceforth called “production-users”). The differences between those are interesting and let us know where to put focus for different use cases.&lt;/p&gt;

&lt;p&gt;To start off with, we can look at the level of programming experience and how that differs between the segments.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/What&apos;s-your-programming-experience-level.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We can see that the level of comfort with code is balanced differently for people using Node-RED in bigger production environments which is no surprise. It is important to keep in mind though going forward.&lt;/p&gt;

&lt;p&gt;In the end, the goal is to improve Node-RED together, so it can further enhance us all and make true on its potential. Whether growth comes from professional use, where Node-RED development can get a boost due to funding, or hobbyists use, where growth through community contributions means a widening of applications and usefulness. Both are important.&lt;/p&gt;

&lt;h3 id=&quot;what-is-working-well&quot;&gt;What is working well&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/What-do-you-love-most-about-Node-RED-right-now.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Node-RED is famous for its visual node based workflow, which comes as no surprise that it is the most beloved feature across all segments. Where it gets interesting is where most value is placed across segments. The general userbase and hobbyists value the ease of working with Node-RED and its versatility, where the production-users value Node-RED especially for prototyping, connectivity, efficiency, and debugging capabilities.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/What-makes-Node-RED-feel-like-&apos;Node-RED&apos;-to-you.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Moving on, we can see that the community and ecosystem, especially sharing flows is especially important for hobbyists. Meanwhile, the effectiveness of Node-RED to get from idea to production through ease of use, ease of debugging, and deployment simplicity is valued more on the production-users side. Dashboards seem to be equally valued across segments.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/What-aspects-of-Node-RED-should-ideally-never-change.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The open-source aspect is valued more by the community than the production-users segment. Not surprising, but something where I do think we are going to see a change in the years to come. Open-source will continue to become more and more important, also for companies using software. The community is ahead of the curve in this one, as is Node-RED.&lt;/p&gt;

&lt;p&gt;Production-users value the stability that Node-RED and its development methodology brings. This is something we are looking into formalising more. We expect this to become an increasingly important factor going forwards due to an increasing AI influence.&lt;/p&gt;

&lt;p&gt;Lastly, we want to highlight a more subtle data point: “resistance to change”. Which is surprisingly low across all segments, though we need to take into account all things that Node-RED does well! The Node-RED community is an especially supportive one.&lt;/p&gt;

&lt;h3 id=&quot;what-is-not-working-as-well&quot;&gt;What is not working as well&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/What-frustrates-you-most-about-Node-RED.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The most striking difference is version control and diffing; it frustrates 42% of production-users compared to just 23% of hobbyists. This makes sense when you consider teams working on the same flows and needing to track changes over time. Similarly, managing large or complex flows (32% vs 20%) and understanding performance impact (28% vs 15%) are significantly bigger pain points in production environments.&lt;/p&gt;

&lt;p&gt;On the flip side, we can see that mobile and tablet usability frustrates hobbyists more (26%) than production-users (16%), which suggests more varied device usage. The same goes for UI navigation and management where hobbyists seem more frustrated with this at 22% while production-users only at 5%. Debugging flows is the top frustration for hobbyists at 27%, while production-users seem more comfortable here at 20%, likely due to their higher programming experience levels. For hobbyists, this points at problems getting acquainted with Node-RED, both when starting out and when starting to use Node-RED for more use cases. Even for production-users it is a point of attention.&lt;/p&gt;

&lt;p&gt;One thing that stands out across all segments: the lack of UI customisation and concerns about community/custom node availability both sit around 21-24% - these are universal pain points regardless of how you use Node-RED.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/Is-there-anything-that-holds-back-production-adoption.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Moving on to what holds back production adoption. This section will naturally focus more on production-users, plus some results here, for hobbyists, must be taken with a grain of salt.&lt;/p&gt;

&lt;p&gt;We can see that version control appears again as the #1 blocker with 40% for production-users versus only 16% for hobbyists. This might also point at that Node-RED might not be informing well enough about what upgrade paths there are in the community for more advanced use cases. FlowFuse being the main one, where they extend Node-RED for enterprises, and already solve for this pain point.&lt;/p&gt;

&lt;p&gt;We continue to see a clear pattern of enterprise concerns emerging for production-users: uncertainty about third-party node quality and security (32%), lack of monitoring and management tools (28%), limited enterprise security features (25%), and compliance/auditing concerns (18%). These are areas where hobbyists show significantly less concern, which makes sense given the different stakes involved. The exception being “third-party node quality and security” which is a theme we are sure to improve upon as soon as possible.&lt;/p&gt;

&lt;p&gt;Furthermore, management skepticism about viability affects 20% of production-users. Meaning one in five face internal resistance to adopting Node-RED. The perception of Node-RED as “a hobby tool, not professional” affects 11% of production-users. Collaboration and team features are also notably more important for production-users (19%) than hobbyists (7%), highlighting the need for better multi-user workflows and an expectation of modern user workflows.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/What-would-draw-you-away-from-Node-RED.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This question reveals something important about satisfaction levels across segments. Hobbyists are considerably more satisfied - 28% said “nothing” would draw them away, compared to only 10% of production-users. This gap tells us that while Node-RED serves hobbyists better, there is more work to do, especially for production use cases.&lt;/p&gt;

&lt;p&gt;Production-users are significantly more concerned about performance and technical issues (26% vs 10%), security and safety concerns (13% vs 5%), and community/ecosystem sustainability (13% vs 8%). Meanwhile, superior alternative platforms would draw away 16% of production-users versus 13% of hobbyists - competition is felt more strongly in the enterprise space.&lt;/p&gt;

&lt;p&gt;One thing that remains consistent across all segments: licensing and pricing concerns sit at 23-27%. This reflects the strong value our community places on Node-RED’s open-source nature. It is important to note here that Node-RED is owned by the &lt;a href=&quot;https://openjsf.org/&quot;&gt;OpenJS foundation&lt;/a&gt; which protects it from a lot of pitfalls of profit driven projects or projects that can be bought out. It is a move we have seen across the industry with the &lt;a href=&quot;https://www.openhomefoundation.org/blog/announcing-the-open-home-foundation/&quot;&gt;open home foundation&lt;/a&gt; and the &lt;a href=&quot;https://openjsf.org/blog/celebrating-the-react-foundation&quot;&gt;react foundation&lt;/a&gt;. We can improve on making sure this is as apparent as possible.&lt;/p&gt;

&lt;h3 id=&quot;what-we-should-focus-on&quot;&gt;What we should focus on&lt;/h3&gt;

&lt;p&gt;Though this section can feel a bit duplicative considering the previous section, we think it is important to see how more directed questions unveil additional information or validate previous points.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/Which-missing-features-would-most-improve-your-Node-RED-experience.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Better dashboard creation tools tops the list for hobbyists and is also important for production users. This aligns with UI customisation needs. Production-users’ needs are confirmed again with version control and diffing (28%) and enhanced debugging (28%). Where it gets interesting is AI-powered assistance in-app: production-users want this at 27% compared to hobbyists at 16%. This suggests production-users see more potential for AI to help with complex flow development. To reinforce this: hobbyists put a lot of value on the documentation and help system which indicates a bigger reliance at traditional support tooling.&lt;/p&gt;

&lt;p&gt;We can see that better performance with large flows is significantly more important for production-users (26%) than hobbyists (10%), which aligns with the frustrations we saw earlier. Mobile and tablet interface improvements matter more to hobbyists (23% vs 11%), again reflecting their more varied usage contexts.&lt;/p&gt;

&lt;p&gt;One thing that stands out: improved collaboration features are twice as important for production-users (14%) compared to hobbyists (7%), reinforcing the need for better team workflows in enterprise settings.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/What&apos;s-the-single-biggest-improvement-Node-RED-needs.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;UI/UX and visual improvements clearly lead across all segments at around 40%. This is a strong signal that modernizing the interface should be a priority. AI integration and LLM support comes second at 25-28% across segments, showing the community’s interest in keeping Node-RED current with modern technology trends regardless of current biases.&lt;/p&gt;

&lt;p&gt;Performance and scalability shows a surprising pattern: hobbyists care more (11%) than production-users (7%). This might indicate that production-users have already found workarounds or are using extended solutions like FlowFuse for their scaling needs. Home users will often be more reliant on single instances, indicating also at the need for better understanding of Node-RED instance capacity-usage.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/What-aspects-of-Node-RED-must-be-changed-or-be-updated.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Dashboard enhancement shows the starkest contrast: 23% for hobbyists versus only 5% for production-users. This suggests hobbyists rely more heavily on Node-RED’s built-in dashboard capabilities, while production environments likely use external visualization tools.&lt;/p&gt;

&lt;p&gt;Configuration and settings management is notably more important for production-users (18% vs 4%), as is core architecture and language support (16% vs not in top results for hobbyists). These point toward needs for better deployment configuration and TypeScript/ESM modernization in enterprise contexts.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/If-you-could-change-one-thing-about-Node-RED-what-would-it-be.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This open-ended question brings everything together and reinforces what we have learned already. Other than that, Hobbyists are more satisfied overall: 21% said “nothing/no changes” compared to only 9% of production-users. The focus on debugging and development tools remains high across both segments (22% and 16%), suggesting this is a universal improvement area that would benefit everyone.&lt;/p&gt;

&lt;h2 id=&quot;including-the-community&quot;&gt;Including the community&lt;/h2&gt;

&lt;p&gt;We have worked hard at figuring out a comprehensive way to let you in on all the information gathered. We are curious about the interesting community takes and initiatives that might surface as a result from it.&lt;/p&gt;

&lt;p&gt;For your information:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;The results follow the same order as the survey&lt;/li&gt;
  &lt;li&gt;It has a filterable “Table of Contents” to be found in the right sidebar&lt;/li&gt;
  &lt;li&gt;Any result is filterable, even survey questions with qualitative answers&lt;/li&gt;
  &lt;li&gt;There are quick filters in the left sidebar to change segments easily&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is important to us that not only we can derive conclusions, and instead we would much rather see an active discussion pop-up from it to collectively discuss conclusions coming from a diverse set of perspectives.&lt;/p&gt;

&lt;div class=&quot;doc-callout&quot;&gt;
    Dive into the survey results on this page: &lt;a href=&quot;https://nodered.org/community-survey&quot;&gt;Node-RED Community Survey&lt;/a&gt;. We invite you to share your thoughts in this &lt;a href=&quot;https://discourse.nodered.org/t/modernization-survey-results-now-available/99830&quot;&gt;blogpost&lt;/a&gt;.
&lt;/div&gt;

&lt;h3 id=&quot;gratitude-and-staying-in-contact&quot;&gt;Gratitude and staying in contact&lt;/h3&gt;

&lt;p&gt;We want to thank everyone that contributed to the survey. We think the amount of input we have received was simply astonishing and of great value.&lt;/p&gt;

&lt;p&gt;Alongside the &lt;a href=&quot;https://discourse.nodered.org/&quot;&gt;forum&lt;/a&gt; and &lt;a href=&quot;https://github.com/node-red&quot;&gt;GitHub&lt;/a&gt;, the community survey invited participants to share their contact information so we can reach out more directly in the future when we want to gather feedback from particular groups of the community. This will be an invaluable resource for the continued development of the project.&lt;/p&gt;

&lt;div class=&quot;doc-callout&quot;&gt;
    If you&apos;d like to join this group, you can join the over-200 people who have already signed up [here](https://tally.so/r/7RXl0L).
&lt;/div&gt;

&lt;p&gt;You can see here how the user segments signed up originally with the survey:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/12/Contact-&amp;amp;-Follow-up-Preferences.jpeg&quot; style=&quot;margin-left:-1.5%;&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Thank you for your support and engagement. We are looking forward to improving Node-RED together.&lt;/p&gt;</content>

      
      
      
      
      

      
        <author>
            <name>Dimitrie Hoekstra</name>
          
          
        </author>
      

      

      

      
        <summary type="html">Earlier this year, we ran a community survey with a focus on how we could modernize the Node-RED user experience. We revealed some of the results at Node-RED Con, but now we wanted to share the full set of results with you.</summary>
      
    </entry>
  
  
  
    <entry>
      <title type="html">Node-RED Con 2025 is coming!</title>
      <link href="https://nodered.org/blog/2025/10/28/node-red-con" rel="alternate" type="text/html" title="Node-RED Con 2025 is coming!" />
      <published>2025-10-28T00:00:00+00:00</published>
      <updated>2025-10-28T00:00:00+00:00</updated>
      <id>https://nodered.org/blog/2025/10/28/node-red-con</id>
      <content type="html" xml:base="https://nodered.org">&lt;p&gt;Node-RED Con 2025 is just a week away! This year’s online conference will showcase how Node-RED is driving innovation across industries — from factory floors and utilities to finance and smart homes.&lt;/p&gt;

&lt;p&gt;We’ve put together a full schedule of talks from across the community and it’s promising to be a great event.&lt;/p&gt;

&lt;p&gt;I’ll be giving the opening keynote on the current state of the project and where we’re headed. This includes unveiling the results of our recent community survey and what plans we have for modernizing the Node-RED user experience.&lt;/p&gt;

&lt;p&gt;I’m really looking forward to the event and I hope you’ll join the 1000+ people who have already registered to attend.&lt;/p&gt;

&lt;p&gt;Be sure not to miss out and get registered &lt;a href=&quot;https://events.zoom.us/ev/AqhqiQ8mTK2lnAoOEH8c8TA1a_9MzVhZq_T7d1-kMHlHDt2_Qh_0~ArONnIcxMjLKoD3Stc16u8yBa38mn0RO4y2nOMx4AZqewgJ1dZm6TAmYyyVgBk3jzn2T5FyGxH2VdIpi_Oe6V7CxaA&quot;&gt;here&lt;/a&gt;!&lt;/p&gt;</content>

      
      
      
      
      

      
        <author>
            <name>nick</name>
          
          
        </author>
      

      

      

      
        <summary type="html">Node-RED Con 2025 is just a week away! This year’s online conference will showcase how Node-RED is driving innovation across industries — from factory floors and utilities to finance and smart homes.</summary>
      
    </entry>
  
  
  
    <entry>
      <title type="html">Version 4.1 released</title>
      <link href="https://nodered.org/blog/2025/07/29/version-4-1-released" rel="alternate" type="text/html" title="Version 4.1 released" />
      <published>2025-07-29T00:00:00+00:00</published>
      <updated>2025-07-29T00:00:00+00:00</updated>
      <id>https://nodered.org/blog/2025/07/29/version-4-1-released</id>
      <content type="html" xml:base="https://nodered.org">&lt;p&gt;Node-RED 4.1 is now available to &lt;a href=&quot;https://npmjs.org/package/node-red&quot;&gt;install&lt;/a&gt;. If upgrading, please read the &lt;a href=&quot;http://nodered.org/docs/getting-started/upgrading.html&quot;&gt;upgrade instructions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/node-red/node-red/releases/tag/4.1.0&quot;&gt;Change Log&lt;/a&gt; has the full list of changes in
this release.&lt;/p&gt;

&lt;p&gt;Whilst we have your attention, we’re already thinking about what comes next - and we’re running a community survey over the next couple of weeks to help shape our future roadmap. Please give us 10 minutes of your time and share your thoughts. You can &lt;a href=&quot;https://survey.nodered.org&quot;&gt;take the survey here&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#update-notifications&quot;&gt;Update Notifications&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#node-documentation-icon&quot;&gt;Node Documentation icon&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#managing-flow-dependencies&quot;&gt;Managing flow dependencies&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#palette-manager-updates&quot;&gt;Palette Manager Updates&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#deprecated-modules&quot;&gt;Deprecated modules&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#sorting-nodes-by-downloads&quot;&gt;Sorting nodes by downloads&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#links-to-node-docs&quot;&gt;Links to node docs&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#better-support-for-plugins&quot;&gt;Better support for Plugins&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#event-log-widget&quot;&gt;Event log widget&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#other-updates&quot;&gt;Other updates&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#node-updates&quot;&gt;Node Updates&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#full-changelog&quot;&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#community&quot;&gt;Community&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;update-notifications&quot;&gt;Update Notifications&lt;/h3&gt;

&lt;p&gt;One of the first things you’ll see when you start 4.1 is a request to enable update notifications. This enables a notification in the editor when there is a new version of Node-RED available. This ensures you can keep up to date with the latest fixes and features. In return, Node-RED sends back anonymous usage information to the project, covering information on what version of NR is being used and type of OS. No information about your users or flows is shared. More information on what is gathered, why and how it’ll be used is available in the &lt;a href=&quot;https://nodered.org/docs/telemetry/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Separately, it will also notify you when there are updates available for any of the nodes in your palette. This part of the notification is handled by the Palette Manager based on the node catalogues it downloads; as such, it is enabled by default.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/07/update-notification.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;node-documentation-icon&quot;&gt;Node Documentation icon&lt;/h3&gt;

&lt;p&gt;An often requested feature has finally made the cut; any node with documentation added in its ‘Description’ field of the edit dialog will now show the Info icon. Clicking on the icon will open up the edit dialog.&lt;/p&gt;

&lt;p&gt;As before, when a node is selected, any content in its Description is shown in the Info sidebar&lt;/p&gt;

&lt;p&gt;If you aren’t a fan of the icon, you can turn it off in the Editor Settings dialog.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/07/node-docs.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;managing-flow-dependencies&quot;&gt;Managing flow dependencies&lt;/h3&gt;

&lt;p&gt;Whilst Node-RED makes it super simple to share flows via its import/export dialog, a common challenge has been not knowing what additional modules need to be installed for the flow to work.&lt;/p&gt;

&lt;p&gt;With this release, when you export a flow, it now includes meta-data of which additional modules are used by the flow.&lt;/p&gt;

&lt;p&gt;When importing the flow, if any of the node types aren’t recognised, the editor can now use this information to let you know what needs to be installed.&lt;/p&gt;

&lt;p&gt;Note: we chose not to automatically install the modules as it felt important that the user should be able to make that choice and not have things get installed without their knowledge.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/07/missing-modules.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This additional meta-data is held in a global-config node within the export. This is a node type that was introduced in Node-RED 4.0 - so you will still be able to import flows from 4.1 back to 4.0.&lt;/p&gt;

&lt;h3 id=&quot;palette-manager-updates&quot;&gt;Palette Manager Updates&lt;/h3&gt;

&lt;p&gt;The Palette Manager has had a number of small but powerful updates.&lt;/p&gt;

&lt;h4 id=&quot;deprecated-modules&quot;&gt;Deprecated modules&lt;/h4&gt;

&lt;p&gt;If a node module has been deprecated by its author on npm, or flagged as such on the flow library, it will now show a deprecated badge. This will be a sign to avoid the module unless you have a very specific need to use it.&lt;/p&gt;

&lt;p&gt;The Flow Library has been updated to also show this information on the nodes page.&lt;/p&gt;

&lt;h4 id=&quot;sorting-nodes-by-downloads&quot;&gt;Sorting nodes by downloads&lt;/h4&gt;

&lt;p&gt;By default the list of nodes available to install are now sorted by download count. That helps to prioritise the more widely used and popular nodes.&lt;/p&gt;

&lt;h4 id=&quot;links-to-node-docs&quot;&gt;Links to node docs&lt;/h4&gt;

&lt;p&gt;We’ve added links to a node’s documentation on the Nodes tab (previously this was only on the Install tab)&lt;/p&gt;

&lt;h4 id=&quot;better-support-for-plugins&quot;&gt;Better support for Plugins&lt;/h4&gt;

&lt;p&gt;The list of installed modules now handles plugins better - particular those modules that contain a mix of plugins and nodes&lt;/p&gt;

&lt;h4 id=&quot;event-log-widget&quot;&gt;Event log widget&lt;/h4&gt;

&lt;p&gt;When installing a node from the palette manager, it can sometimes take a while depending on where Node-RED is running and the size of the module being installed. If you close the palette manager, you then lose any feedback of the install still running.&lt;/p&gt;

&lt;p&gt;We’ve had the Event Log view since the early days of Node-RED (menu -&amp;gt; view -&amp;gt; Event log) but I bet its something most users are unaware of.&lt;/p&gt;

&lt;p&gt;With this release, if there is an install running in the background, a progress widget is shown in the editor footer. Clicking on it will open up the event log. Once the install completes, the widget will hide itself.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2025/07/event-widget.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;other-updates&quot;&gt;Other updates&lt;/h3&gt;

&lt;p&gt;There’s a lot of other smaller items in the changelog, a few more to highlight:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Deploying when you have a badly configured node has alway asked for confirmation. The logic behind that will now ignore nodes that are disabled - as they won’t impact the deployed flow.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;A new action is available that will trigger the buttons of any selected nodes. This action (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;core:trigger-selected-nodes-action&lt;/code&gt;) can be found in the Action Menu (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ctrl-Shift-P&lt;/code&gt;), and can be bound to whatever keyboard shortcut you want.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Clicking outside of a Node’s edit dialog will no longer close the dialog.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;node-updates&quot;&gt;Node Updates&lt;/h3&gt;

&lt;p&gt;Here’s a list of the various updates made to the individual core nodes.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Complete/Status: Fix complete node to not feedback immediately connected nodes (#5114)&lt;/li&gt;
  &lt;li&gt;Function: Add URL/URLSearchParams to Function sandbox (#5159)&lt;/li&gt;
  &lt;li&gt;Function: Add support for node: prefixed modules in function node (#5067)&lt;/li&gt;
  &lt;li&gt;Function: Add globalFunction timeout (#4985) @vasuvanka&lt;/li&gt;
  &lt;li&gt;Exec: Make encoding handling consistent between stdout and err (#5158)&lt;/li&gt;
  &lt;li&gt;Split: Let split node send original msg to complete node (#5113)&lt;/li&gt;
  &lt;li&gt;Split: Rename Split The field (#5130)&lt;/li&gt;
  &lt;li&gt;MQTT: Ensure generated mqtt clientId uses only valid chars (#5156)&lt;/li&gt;
  &lt;li&gt;HTTP In: provide access to request body as Buffer&lt;/li&gt;
  &lt;li&gt;HTTP Request: Fix the capitisation for ALPN settings in http-request (#5105)&lt;/li&gt;
  &lt;li&gt;HTTP Request: (docs) Recommend HTTPS over HTTP (#5141)&lt;/li&gt;
  &lt;li&gt;HTTP Request: Include URL query params in HTTP Digest (#5166)&lt;/li&gt;
  &lt;li&gt;Catch: Add code to error object sent by Catch node (#5081)&lt;/li&gt;
  &lt;li&gt;Debug: Improve debug display of error objects (#5079)&lt;/li&gt;
  &lt;li&gt;Debug: Improve display of loooooong message properties&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;full-changelog&quot;&gt;Full Changelog&lt;/h2&gt;

&lt;p&gt;The full set of changes in this release can be found in the &lt;a href=&quot;https://github.com/node-red/node-red/releases/tag/4.1.0&quot;&gt;changelog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you to everyone who contributed to this release - we wouldn’t be able to do it without you!&lt;/p&gt;

&lt;h2 id=&quot;community&quot;&gt;Community&lt;/h2&gt;

&lt;p&gt;As an open-source project we are reliant on the contribution of the community.
We have a strong and vibrant user community, well demonstrated by the activity on the
&lt;a href=&quot;https://discourse.nodered.org&quot;&gt;forums&lt;/a&gt;. It’s great to see the support the community
provides each other.&lt;/p&gt;

&lt;p&gt;If you’re interested in contributing to Node-RED, now is a good time to come over
and chat with us in either the &lt;a href=&quot;https://discourse.nodered.org&quot;&gt;forum&lt;/a&gt; or &lt;a href=&quot;https://nodered.org/slack&quot;&gt;slack&lt;/a&gt;.&lt;/p&gt;</content>

      
      
      
      
      

      
        <author>
            <name>nick</name>
          
          
        </author>
      

      

      

      
        <summary type="html">Node-RED 4.1 is now available to install. If upgrading, please read the upgrade instructions.</summary>
      
    </entry>
  
  
  
    <entry>
      <title type="html">Version 4.0 released</title>
      <link href="https://nodered.org/blog/2024/06/20/version-4-0-released" rel="alternate" type="text/html" title="Version 4.0 released" />
      <published>2024-06-20T00:00:00+00:00</published>
      <updated>2024-06-20T00:00:00+00:00</updated>
      <id>https://nodered.org/blog/2024/06/20/version-4-0-released</id>
      <content type="html" xml:base="https://nodered.org">&lt;p&gt;Node-RED 4.0 is now available to &lt;a href=&quot;https://npmjs.org/package/node-red&quot;&gt;install&lt;/a&gt;. If upgrading, please read the &lt;a href=&quot;http://nodered.org/docs/getting-started/upgrading.html&quot;&gt;upgrade instructions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We’ve highlighted some of the main highlights of the release below. There have also been 
a large number of community contributions ranging from bug fixes, features, documentation and translations.
We wouldn’t be able to do what we do without these contributions - a big thank you to everyone involved.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/node-red/node-red/releases/tag/4.0.0&quot;&gt;Change Log&lt;/a&gt; has the full list of changes in
this release.&lt;/p&gt;

&lt;hr /&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#nodejs-18-or-later&quot;&gt;Node.js 18 or later&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#editor-updates&quot;&gt;Editor Updates&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#auto-complete-for-flowglobal-and-env-inputs&quot;&gt;Auto-complete for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;flow&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;global&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;env&lt;/code&gt; inputs&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#customising-config-nodes-in-subflows&quot;&gt;Customising config nodes in Subflows&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#timestamp-formatting&quot;&gt;Timestamp formatting&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#multiplayer-mode&quot;&gt;Multiplayer Mode&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#better-background-deploy-handling&quot;&gt;Better background deploy handling&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#improved-diff-view-for-moved-nodes&quot;&gt;Improved Diff view for moved nodes&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#better-feedback-for-read-only-users&quot;&gt;Better feedback for read-only users&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#new-config-node-selection-ui&quot;&gt;New Config Node selection UI&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#other-updates&quot;&gt;Other updates&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#runtime&quot;&gt;Runtime&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#faster-deploys-for-large-flows&quot;&gt;Faster deploys for &lt;em&gt;large&lt;/em&gt; flows&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#updated-jsonata&quot;&gt;Updated JSONata&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#other-updates-1&quot;&gt;Other updates&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#node-updates&quot;&gt;Node Updates&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#a-better-csv-node&quot;&gt;A better CSV node&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#updated-proxy-handling&quot;&gt;Updated Proxy Handling&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#other-updates-2&quot;&gt;Other updates&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#full-changelog&quot;&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#community&quot;&gt;Community&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;nodejs-18-or-later&quot;&gt;Node.js 18 or later&lt;/h2&gt;

&lt;p&gt;Node-RED 4.0 requires at least Node.js 18. At the time of release, we recommend
using Node 20 as the active LTS release that will continue receiving updates until
April 2026.&lt;/p&gt;

&lt;h2 id=&quot;editor-updates&quot;&gt;Editor Updates&lt;/h2&gt;

&lt;h3 id=&quot;auto-complete-for-flowglobal-and-env-inputs&quot;&gt;Auto-complete for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;flow&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;global&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;env&lt;/code&gt; inputs&lt;/h3&gt;

&lt;p&gt;Node-RED already has simple auto-complete on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;msg&lt;/code&gt; fields in the editor. We’ve now extended that to also work with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;flow&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;global&lt;/code&gt; context inputs as well as the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;env&lt;/code&gt; type for accessing environment variables.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2024/06/auto-complete.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This makes it so much easier to work with these types of properties - being sure you’re using something that exists rather than having to switch between different views in the editor to get the names right.&lt;/p&gt;

&lt;p&gt;In the case of env vars, it also shows you where the value was set - useful when you have nested groups and subflows which might be overriding a particular value.&lt;/p&gt;

&lt;h3 id=&quot;customising-config-nodes-in-subflows&quot;&gt;Customising config nodes in Subflows&lt;/h3&gt;

&lt;p&gt;This one needs a bit of explaining. Subflows are a way Node-RED lets you create a flow and add multiple reusable instances of it within your flows. For example, a subflow may connect to an MQTT broker and do some standard processing on the messages it received before sending them on. The Subflow can then expose a set of properties that can be customised for each instance. In our example, that could be the topic the MQTT node subscribes to.&lt;/p&gt;

&lt;p&gt;However, in that example, the MQTT node’s broker configuration would be locked to the same broker config node in every instance - and that’s something we’re solving in Node-RED 4.0.&lt;/p&gt;

&lt;p&gt;We’re making it possible to expose the choice of a configuration node in the Subflow properties - so each instance can be customised even further.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2024/06/subflow-config.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Another common use for this will be with Node-RED Dashboard - which uses config nodes to set the location of a widget. With Node-RED today, you cannot really use dashboard nodes inside subflows as you end up with multiple copies of the widgets all packed into the same group. With this update, you’ll be able to configure the subflow instance with exactly what dashboard group to place its contents into.&lt;/p&gt;

&lt;h3 id=&quot;timestamp-formatting&quot;&gt;Timestamp formatting&lt;/h3&gt;

&lt;p&gt;The Inject node has provided the ability to inject a timestamp since the very early days of Node-RED. The value it actually sets is the number of milliseconds since epoch (aka January 1st, 1970). If you’re used to working with JavaScript, then this is a perfectly normal way to pass times around. However, it isn’t always what is needed and flows end up using a Function node to reformat it in some way.&lt;/p&gt;

&lt;p&gt;With 4.0 we’ve added options to pick what format the timestamp is generated in at the start. Now, formatting times and dates can be a big can of worms of options. So, for this initial release, we’ve kept it simple by offering three options:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2024/06/timestamp-formats.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;em&gt;milliseconds since epoch&lt;/em&gt; - the existing option, just more explicitly labelled for what it is&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;YYYY-MM-DDTHH:mm:ss.sssZ&lt;/em&gt; - also known as ISO 8601&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;JavaScript Date Object&lt;/em&gt; - the standard Date object&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is scope to allow custom format strings to be set in the node - but we’ll see what the feedback is on these new options first.&lt;/p&gt;

&lt;h3 id=&quot;multiplayer-mode&quot;&gt;Multiplayer Mode&lt;/h3&gt;

&lt;p&gt;We’ve made a number of changes to improve the user experience when multiple people have the editor open at the same time.&lt;/p&gt;

&lt;p&gt;When enabled via the settings file, the new Multiplayer Mode lets you see when other users have the editor open and where they are - which tab they have open and whether they are editing a node.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2024/06/multiplayer.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It’s a small step forward towards a longer-term goal of having a live view of the changes other users are making.&lt;/p&gt;

&lt;p&gt;This new mode is not enabled by default. To turn it on, you need to set &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;editorTheme.multiplayer.enabled&lt;/code&gt; property to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;true&lt;/code&gt; in your settings file. We’ve added a placeholder in the default settings file, but for an existing install, you’ll need to add it yourself. You can see how/what it should look like &lt;a href=&quot;https://github.com/node-red/node-red/blob/3075b82792be6f9668376e66fe6cf3fc137902ff/packages/node_modules/node-red/settings.js#L440-L443&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;better-background-deploy-handling&quot;&gt;Better background deploy handling&lt;/h3&gt;

&lt;p&gt;In the same theme as the new Multiplayer Mode, we’ve also made some improvements to the existing ‘background deploy’ handling in the editor. This is where someone deploys new flows whilst you are busy working in the editor.&lt;/p&gt;

&lt;p&gt;Previously, you would get a notification that you couldn’t ignore and would have to interrupt what you were doing to deal with. If your colleague was being particularly productive and deploying frequently, you’d get a new interruption every time.&lt;/p&gt;

&lt;p&gt;With this release, we’ve made the notification less intrusive. It’s no longer modal, so you can carry on what you were doing without having to take any action. We’ve made it slim line so it doesn’t get in the way, and it will self-close after a short period. As with similar runtime notifications, we now also show a warning icon in the header if there has been a background deploy - as it &lt;em&gt;will&lt;/em&gt; need dealing with eventually - clicking on that icon shows the notification so you can take action when you choose to.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2024/06/background-deploy.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;improved-diff-view-for-moved-nodes&quot;&gt;Improved Diff view for moved nodes&lt;/h3&gt;

&lt;p&gt;When reviewing changes in the flows, either as a result of a background deploy, or as part of the Projects feature, we now highlight nodes that have only been moved separately to those that have had configuration changes.&lt;/p&gt;

&lt;p&gt;When faced with a long list of changes, this will make it easier to spot changes that you care about.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2024/06/diff-view.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;better-feedback-for-read-only-users&quot;&gt;Better feedback for read-only users&lt;/h3&gt;

&lt;p&gt;Previously if a user had read-only access to the editor, they could make changes and click the deploy button - only to be told at that point they cannot make changes.&lt;/p&gt;

&lt;p&gt;With this release, the Deploy button now shows a lock icon if the current user doesn’t have permission to deploy changes. They can still make changes in the workspace, but the deploy button won’t become enabled.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2024/06/locked-deploy.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;new-config-node-selection-ui&quot;&gt;New Config Node selection UI&lt;/h3&gt;

&lt;p&gt;We’ve updated the UI around config node selection to simplify the task of adding a new config node.&lt;/p&gt;

&lt;p&gt;Feedback from new users showed some confusion on how to add a &lt;em&gt;second&lt;/em&gt; config node when there was one
already selected in the list. There is now a dedicated add button alongside the selection of existing nodes&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2024/06/add-config-node.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;other-updates&quot;&gt;Other updates&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;The Palette Manager now lists plugins you have installed alongside nodes.&lt;/li&gt;
  &lt;li&gt;The Palette sidebar now remembers how you have expanded or collapsed the different categories&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;runtime&quot;&gt;Runtime&lt;/h2&gt;

&lt;h3 id=&quot;faster-deploys-for-large-flows&quot;&gt;Faster deploys for &lt;em&gt;large&lt;/em&gt; flows&lt;/h3&gt;

&lt;p&gt;We’ve swapped the library we use to clone flow configurations in the runtime. The new library is faster and uses less memory.&lt;/p&gt;

&lt;p&gt;The gains are less noticeable in ‘typical’ flows, but for those of you with &lt;em&gt;large&lt;/em&gt; flows, there should be an improvement.&lt;/p&gt;

&lt;p&gt;In my testing, a config with a few hundred tabs with a few hundred nodes on each, plus some subflows went from 8 seconds to deploy down to just over 1 second.&lt;/p&gt;

&lt;h3 id=&quot;updated-jsonata&quot;&gt;Updated JSONata&lt;/h3&gt;

&lt;p&gt;The JSONata library is used to provide the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;expression&lt;/code&gt; types in Node-RED - a really powerful way of working with JSON objects. With this release we’ve updated to the new major release of JSONata that comes with a bunch of performance improvements.&lt;/p&gt;

&lt;p&gt;But it also comes with a breaking change with how it gets invoked under the covers. We prepared for this in 3.1 by adding a large warning to the log if we ever spotted a node accessing it incorrectly. With this release, that warning becomes an error.&lt;/p&gt;

&lt;p&gt;Given we didn’t hear a lot of complaints in the 3.1 release about this, either the warning went unnoticed, or it isn’t a wide-spread issue. However, this will be something to keep an eye on as you upgrade.&lt;/p&gt;

&lt;h3 id=&quot;other-updates-1&quot;&gt;Other updates&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;The following configuration options have been added to the default settings file:
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;httpAdminCookieOptions&lt;/code&gt; can be used to customise the options set on cookies as part of the authentication system.&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;httpStaticCors&lt;/code&gt; can be used to set custom cross-origin resource sharing rules for the content served up via the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;httpStatic&lt;/code&gt; option&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node-red --version&lt;/code&gt; now reports the Node-RED, node.js and os information without starting Node-RED.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;node-updates&quot;&gt;Node Updates&lt;/h2&gt;

&lt;h3 id=&quot;a-better-csv-node&quot;&gt;A better CSV node&lt;/h3&gt;

&lt;p&gt;The CSV node has had a big overhaul to make it more standards compliant. It turns out CSV has a whole bunch of tricky edge cases that most users don’t hit - but if you did hit them you would be stuck.&lt;/p&gt;

&lt;p&gt;The new node follows the &lt;a href=&quot;https://www.ietf.org/rfc/rfc4180.txt&quot;&gt;RFC4180&lt;/a&gt; standard and is also faster - wins all around.&lt;/p&gt;

&lt;p&gt;Existing flows using the CSV node will stay in ‘legacy’ mode until they are modified to use the new parser.&lt;/p&gt;

&lt;h3 id=&quot;updated-proxy-handling&quot;&gt;Updated Proxy Handling&lt;/h3&gt;

&lt;p&gt;The HTTP Request node’s handling of proxies has been updated to address a number of issues and to bring better support for the various standard environment variables used to configure proxies.&lt;/p&gt;

&lt;p&gt;Details are in the &lt;a href=&quot;https://github.com/node-red/node-red/issues/3904&quot;&gt;original issue&lt;/a&gt; and the &lt;a href=&quot;https://github.com/node-red/node-red/pull/4616&quot;&gt;pull request&lt;/a&gt; that fixed it.&lt;/p&gt;

&lt;h3 id=&quot;other-updates-2&quot;&gt;Other updates&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;TCP node - when resetting, if no payload, stay disconnected @dceejay&lt;/li&gt;
  &lt;li&gt;HTML node: add option for collecting attributes and content (&lt;a href=&quot;https://github.com/node-red/node-red/pull/4513&quot;&gt;#4513&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;let split node specify property to split on, and join auto join correctly (&lt;a href=&quot;https://github.com/node-red/node-red/pull/4386&quot;&gt;#4386&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Fix change node to return boolean if asked (&lt;a href=&quot;https://github.com/node-red/node-red/pull/4525&quot;&gt;#4525&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Let msg.reset reset Tcp request node connection when in stay connected mode (&lt;a href=&quot;https://github.com/node-red/node-red/pull/4406&quot;&gt;#4406&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Let debug node status msg length be settable via settings (&lt;a href=&quot;https://github.com/node-red/node-red/pull/4402&quot;&gt;#4402&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Feat: Add ability to set headers for WebSocket client (&lt;a href=&quot;https://github.com/node-red/node-red/pull/4436&quot;&gt;#4436&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;full-changelog&quot;&gt;Full Changelog&lt;/h2&gt;

&lt;p&gt;The full set of changes in this release can be found in the &lt;a href=&quot;https://github.com/node-red/node-red/releases/tag/4.0.0&quot;&gt;changelog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you to everyone who contributed to this release - we wouldn’t be able to do it without you!&lt;/p&gt;

&lt;h2 id=&quot;community&quot;&gt;Community&lt;/h2&gt;

&lt;p&gt;As an open-source project we are reliant on the contribution of the community.
We have a strong and vibrant user community, well demonstrated by the activity on the
&lt;a href=&quot;https://discourse.nodered.org&quot;&gt;forums&lt;/a&gt;. It’s great to see the support the community
provides each other.&lt;/p&gt;

&lt;p&gt;If you’re interested in contributing to Node-RED, now is a good time to come over
and chat with us in either the &lt;a href=&quot;https://discourse.nodered.org&quot;&gt;forum&lt;/a&gt; or &lt;a href=&quot;https://nodered.org/slack&quot;&gt;slack&lt;/a&gt;.&lt;/p&gt;</content>

      
      
      
      
      

      
        <author>
            <name>nick</name>
          
          
        </author>
      

      

      

      
        <summary type="html">Node-RED 4.0 is now available to install. If upgrading, please read the upgrade instructions.</summary>
      
    </entry>
  
  
  
    <entry>
      <title type="html">Version 3.1 released</title>
      <link href="https://nodered.org/blog/2023/09/06/version-3-1-released" rel="alternate" type="text/html" title="Version 3.1 released" />
      <published>2023-09-06T00:00:00+00:00</published>
      <updated>2023-09-06T00:00:00+00:00</updated>
      <id>https://nodered.org/blog/2023/09/06/version-3-1-released</id>
      <content type="html" xml:base="https://nodered.org">&lt;p&gt;Node-RED 3.1 is now available to &lt;a href=&quot;https://npmjs.org/package/node-red&quot;&gt;install&lt;/a&gt;. If upgrading, please read the &lt;a href=&quot;http://nodered.org/docs/getting-started/upgrading.html&quot;&gt;upgrade instructions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This release is a little overdue to say the least. We released the first beta
back in February - thinking it would be the only one we did. But one thing lead
to another and, four beta releases later, here we are finally with the full
release for everyone to enjoy.&lt;/p&gt;

&lt;p&gt;These delays have had a knock-on effect to our &lt;a href=&quot;https://nodered.org/about/releases/&quot;&gt;release plan&lt;/a&gt;.
We’re going to shift things around a bit, but still plan to have Node-RED 4.0 released
in the near future to keep up to date with Node.js versions reaching their end-of-life.&lt;/p&gt;

&lt;p&gt;We’ll also get back to more regular maintenance releases to keep things moving.&lt;/p&gt;

&lt;p&gt;With all that said, and without our usual accompanying video, lets dig into what
3.1 has to offer. As ever, the &lt;a href=&quot;https://github.com/node-red/node-red/releases/tag/3.1.0&quot;&gt;Change Log&lt;/a&gt; has the full list of changes in
this release.&lt;/p&gt;

&lt;hr /&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#editor-updates&quot;&gt;Editor Updates&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#change-notifications-on-tabs&quot;&gt;Change notifications on tabs&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#a-bigger-workspace&quot;&gt;A bigger workspace&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#locking-flows&quot;&gt;Locking Flows&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#hiding-flows&quot;&gt;Hiding Flows&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#new-group-user-experience&quot;&gt;New Group User Experience&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#group-level-scope-for-the-catchstatus&quot;&gt;Group-level scope for the Catch/Status&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#updated-context-menu&quot;&gt;Updated Context Menu&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#adding-images-to-nodeflow-descriptions&quot;&gt;Adding images to node/flow descriptions&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#mermaid-diagrams&quot;&gt;Mermaid Diagrams&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#global-environment-variables&quot;&gt;Global Environment Variables&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#new-subflow-environment-variables&quot;&gt;New subflow environment variables&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#changes-to-how-environment-variables-are-evaluated&quot;&gt;Changes to how Environment Variables are evaluated&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#linking-to-node-help&quot;&gt;Linking to Node Help&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#deprecating-synchronous-access-to-jsonata&quot;&gt;Deprecating synchronous access to JSONata&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#improved-wiring-for-horizontally-aligned-nodes&quot;&gt;Improved wiring for horizontally aligned nodes&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#runtime-updates&quot;&gt;Runtime Updates&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#individual-http-middleware-for-httpstatic-routes&quot;&gt;Individual http middleware for httpStatic routes&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#whats-next&quot;&gt;What’s next?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;editor-updates&quot;&gt;Editor Updates&lt;/h2&gt;

&lt;h3 id=&quot;change-notifications-on-tabs&quot;&gt;Change notifications on tabs&lt;/h3&gt;

&lt;p&gt;The tab bar now shows a change icon for any tabs that contain changes. This makes it much easier to find where things have changed in your flows.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2023/09/tab-changes.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;a-bigger-workspace&quot;&gt;A bigger workspace&lt;/h3&gt;

&lt;p&gt;We have occasionally had requests to make the tab canvas bigger. There was even a discussion around making it infinitely large - allowing a flow to be as large as it needs to be. Whilst that’s a nice idea, for this release we’ve simply increased the size of each tab from 5000x5000 to 8000x8000.&lt;/p&gt;

&lt;p&gt;We’d still recommend using tools like Subflows and Link nodes to help organise your flows, but at least this quick change will give you plenty more space to use if you need it.&lt;/p&gt;

&lt;h3 id=&quot;locking-flows&quot;&gt;Locking Flows&lt;/h3&gt;

&lt;p&gt;You can now lock a flow (tab in the editor) to prevent it from being modified. Whilst locked you cannot edit the nodes, add new nodes, modify the wiring… anything.&lt;/p&gt;

&lt;p&gt;Why is that useful? You may have a ‘mission critical’ flow that you want to be super careful not to change by accident. You may want to collaborate on some flows with others, but mark some of them as ‘off limits’.&lt;/p&gt;

&lt;p&gt;With this release anyone is able to lock and unlock flows, but it lays the ground work for a possible future where particular users may not have permission to unlock flows - allowing them to only edit the flows they are allowed to.&lt;/p&gt;

&lt;p&gt;The options to lock/unlock flows are available in the right-click context menu - as well as a new padlock button in the Info sidebar explorer.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2023/09/locking-flows-01.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2023/09/locking-flows-02.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;To make this work, we’ve modified how ‘nodes’ are managed inside the editor to prevent them being modified on locked flows. No apis have changed, but it does mean certain calls might fail if they are attempted on a locked flow. This has had a fair amount of testing across all of the core features of the editor, but 3rd party node authors are a creative bunch and it is possible someone is doing something &lt;del&gt;sneaky&lt;/del&gt; unexpected with their node implementation that gets tripped up by this. So if you see any odd/inconsistent behaviour with this feature, please do let us know (and definitely have ready any error messages from the browser’s JavaScript console).&lt;/p&gt;

&lt;h3 id=&quot;hiding-flows&quot;&gt;Hiding Flows&lt;/h3&gt;

&lt;p&gt;We added the ability to hide flows a couple releases ago. This was done use the ‘eye’ icon that appeared when you hovered over the tab.&lt;/p&gt;

&lt;p&gt;We got plenty of feedback, including our own experience, that it was way too easy to accidentally click that button and make things disappear without realising it.&lt;/p&gt;

&lt;p&gt;So for this release we’ve gotten rid of that button on the tab. Flows can still be hidden, but you do so via the context menu option when you right-click on the tab bar. You can still use the eye button in the Info sidebar explorer.&lt;/p&gt;

&lt;h3 id=&quot;new-group-user-experience&quot;&gt;New Group User Experience&lt;/h3&gt;

&lt;p&gt;Following feedback from the community on what it was like to work with the groups feature in the editor, they have been given a big overhaul in this release.&lt;/p&gt;

&lt;p&gt;You can now click on any node, inside or outside of a group, and interact with it directly. No more clicking multiple times to get to a node.&lt;/p&gt;

&lt;p&gt;Because of that change, you now move a group by clicking on its border and dragging it. But what if you’ve made the border invisible? It now highlights whenever you mouse over it.&lt;/p&gt;

&lt;p&gt;We’ve also made it possible to drag multiple nodes into a group in one go - previously we only supported dragging one node in at a time.&lt;/p&gt;

&lt;p&gt;And in response to a particular piece of feedback, if you hold down &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;alt&lt;/code&gt; whilst dragging a selection of nodes inside a group, you can drag them &lt;strong&gt;out&lt;/strong&gt; of the group.&lt;/p&gt;

&lt;p&gt;Overall, this should make for a much for intuitive user experience.&lt;/p&gt;

&lt;h3 id=&quot;group-level-scope-for-the-catchstatus&quot;&gt;Group-level scope for the Catch/Status&lt;/h3&gt;

&lt;p&gt;The Catch/Status nodes could already be configured to handle specific nodes within a flow. They can now also be configured to handle just the nodes in the same group as them (or any nested groups).&lt;/p&gt;

&lt;p&gt;This gives you more options for organising your flows and their error handling.&lt;/p&gt;

&lt;h3 id=&quot;updated-context-menu&quot;&gt;Updated Context Menu&lt;/h3&gt;

&lt;p&gt;We’ve expanded the usefulness of the Context Menu added in the last release. There are now lots more commonly used options available in the menu, which also provides better options related to what you clicked on to open the menu. This includes right-clicking on the tab bar at the top of the workspace to get flow-specific options.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2023/09/context-menu-01.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;adding-images-to-nodeflow-descriptions&quot;&gt;Adding images to node/flow descriptions&lt;/h3&gt;

&lt;p&gt;All nodes and flows have a Description tab in their edit dialog. This lets you write docs (using markdown) that gets displayed in the Info sidebar when the thing is selected.&lt;/p&gt;

&lt;p&gt;With this release you can now drag images directly into the markdown editor and they will get inlined. This is done by base64 url encoding the image directly into the description property.&lt;/p&gt;

&lt;h3 id=&quot;mermaid-diagrams&quot;&gt;Mermaid Diagrams&lt;/h3&gt;

&lt;p&gt;We’ve also added support for &lt;a href=&quot;https://github.com/mermaid-js/mermaid&quot;&gt;Mermaid&lt;/a&gt; diagrams. These are diagrams that can be defined directly in the markdown and then rendered out as images when displaying in the sidebar. GitHub recently added support for them, and I’ve found them to be super-useful when documenting things when plain text isn’t quite enough.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2023/09/mermaid.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;global-environment-variables&quot;&gt;Global Environment Variables&lt;/h3&gt;

&lt;p&gt;We’ve supported defining environment variables scoped to individual flows, subflows or groups for a while. But the only way to define an environment variable available to all flows was to do it via your settings file. That wasn’t very accessible or portable.&lt;/p&gt;

&lt;p&gt;So with this release you can now define global env vars via the User Settings dialog:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2023/09/global-env-vars.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Under the covers these get added to your flow as a new core configuration node type. That will mean importing a flow from 3.1 with global env vars into an earlier version of Node-RED will lead to an unrecognised node warning - something to be aware of.&lt;/p&gt;

&lt;h3 id=&quot;new-subflow-environment-variables&quot;&gt;New subflow environment variables&lt;/h3&gt;

&lt;p&gt;Within a subflow, you can now use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_SUBFLOW_NAME&lt;/code&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_SUBFLOW_ID&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_SUBFLOW_PATH&lt;/code&gt; to access those properties of the subflow instance node.&lt;/p&gt;

&lt;p&gt;These join the existing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_NODE_*&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_FLOW_*&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_GROUP_*&lt;/code&gt; equivalents.&lt;/p&gt;

&lt;h3 id=&quot;changes-to-how-environment-variables-are-evaluated&quot;&gt;Changes to how Environment Variables are evaluated&lt;/h3&gt;

&lt;p&gt;Environment variables are statically defined values that cannot be changed whilst the flow is running. There were some edge cases to this, such as using a JSONata expression of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$now()&lt;/code&gt; that would get re-evaluated every time it was referenced.&lt;/p&gt;

&lt;p&gt;Because of the need to make JSONata fully asynchronous in the future, we’ve changed how the env var evaluation is done - their values are now all generated when the flows start and not re-evaluated again.&lt;/p&gt;

&lt;p&gt;This should not cause any changes in behaviour, unless you were relying on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$now()&lt;/code&gt; trick that was not an intentional behaviour.&lt;/p&gt;

&lt;p&gt;As nodes can depend on env var values, we’ve also updated the logic around the ‘modified nodes’ and ‘modified flows’ types of deploys. Changing an env var at the flow level will now cause all of the nodes on that flow to be considered modified. This is a bit of a blunt solution for this release and we may refine it to be more selective to only the nodes that reference the changed env var - but that’s for another day.&lt;/p&gt;

&lt;h3 id=&quot;linking-to-node-help&quot;&gt;Linking to Node Help&lt;/h3&gt;

&lt;p&gt;Every node dialog now has a help button in its footer. This will open the Help sidebar and display the… you guessed it… help for the node.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2023/09/node-help-link.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;deprecating-synchronous-access-to-jsonata&quot;&gt;Deprecating synchronous access to JSONata&lt;/h3&gt;

&lt;p&gt;This is one for node authors rather than end users.&lt;/p&gt;

&lt;p&gt;JSONata 2.0 was recently published and promises a lot of significant performance improvements. However it brings a major breaking change - you can no longer evaluate expressions synchronously. So we can’t upgrade to it quite yet, but we can lay some ground work for it.&lt;/p&gt;

&lt;p&gt;Since we introduced JSONata into Node-RED, we’ve provided a set of standard APIs for nodes to use. Notably:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RED.util.evaluateNodeProperty&lt;/code&gt; - used to evaluate all sorts of standard types of property&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RED.util.evaluateJSONataExpression&lt;/code&gt; - used to evaluate a prepared JSONata expression&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both of these functions accept an optional callback parameter which allows them to evaluate asynchronously - however they both also allow synchronous behaviour.&lt;/p&gt;

&lt;p&gt;With this release we have &lt;em&gt;deprecated&lt;/em&gt; calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;evaluateJSONataExpression&lt;/code&gt; without a callback argument. By extension, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;evaluateNodeProperty&lt;/code&gt; will require a callback &lt;em&gt;if&lt;/em&gt; being used with JSONata.&lt;/p&gt;

&lt;p&gt;Using these APIs without a callback will trigger a warning in the log, along with a full stacktrace that will hopefully help identify the node that caused it.&lt;/p&gt;

&lt;p&gt;Our intention is to update to JSONata 2.0 in Node-RED 4.0 this summer - so we want to flush out any nodes that need updating.&lt;/p&gt;

&lt;h3 id=&quot;improved-wiring-for-horizontally-aligned-nodes&quot;&gt;Improved wiring for horizontally aligned nodes&lt;/h3&gt;

&lt;p&gt;Following &lt;a href=&quot;https://discourse.nodered.org/t/feature-request-little-tweak-on-wires/79336&quot;&gt;this&lt;/a&gt; discussion on the forum, we’ve made some modifications to the wiring layout logic to improve cases where wires loop back on horizontally laid out nodes.&lt;/p&gt;

&lt;p&gt;Here is a before/after pair of screenshots:&lt;/p&gt;

&lt;p&gt;
  &lt;img width=&quot;40%&quot; src=&quot;/blog/content/images/2023/09/node-wiring-01.png&quot; alt=&quot;&quot; /&gt;
  &lt;img width=&quot;40%&quot; src=&quot;/blog/content/images/2023/09/node-wiring-02.png&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;

&lt;h2 id=&quot;runtime-updates&quot;&gt;Runtime Updates&lt;/h2&gt;

&lt;h3 id=&quot;individual-http-middleware-for-httpstatic-routes&quot;&gt;Individual http middleware for httpStatic routes&lt;/h3&gt;

&lt;p&gt;It is now possible to configure separate middleware functions for different &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;httpStatic&lt;/code&gt; configured routes.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;https://github.com/node-red/node-red/pull/4229&quot;&gt;#4229&lt;/a&gt; for the details.&lt;/p&gt;

&lt;h2 id=&quot;whats-next&quot;&gt;What’s next?&lt;/h2&gt;

&lt;p&gt;As I mentioned at the start, this release is overdue and has pushed back the existing
release plan.&lt;/p&gt;

&lt;p&gt;With Node.js 16.x reaching its end-of-life &lt;em&gt;next week&lt;/em&gt;, we’ll be moving forward with
Node-RED 4.0 in the near future. As it stands, we strongly recommend users to be
using Node 18 or 20 by now.&lt;/p&gt;

&lt;p&gt;As an open-source project we are reliant on the contribution of the community.
We have a strong and vibrant user community, well demonstrated by the activity on the
&lt;a href=&quot;https://discourse.nodered.org&quot;&gt;forums&lt;/a&gt;. It’s great to see the support the community
provides each other.&lt;/p&gt;

&lt;p&gt;If you’re interested in contributing to Node-RED, now is a good time to come over
and chat with us in either the &lt;a href=&quot;https://discourse.nodered.org&quot;&gt;forum&lt;/a&gt; or &lt;a href=&quot;https://nodered.org/slack&quot;&gt;slack&lt;/a&gt;.&lt;/p&gt;</content>

      
      
      
      
      

      
        <author>
            <name>nick</name>
          
          
        </author>
      

      

      

      
        <summary type="html">Node-RED 3.1 is now available to install. If upgrading, please read the upgrade instructions.</summary>
      
    </entry>
  
  
  
    <entry>
      <title type="html">2023 Community Survey</title>
      <link href="https://nodered.org/blog/2023/02/23/community-survey" rel="alternate" type="text/html" title="2023 Community Survey" />
      <published>2023-02-23T00:00:00+00:00</published>
      <updated>2023-02-23T00:00:00+00:00</updated>
      <id>https://nodered.org/blog/2023/02/23/community-survey</id>
      <content type="html" xml:base="https://nodered.org">&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; the results are now available &lt;a href=&quot;/about/community/survey/2023/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Back in 2019 we published the results of the 2019 Node-RED community survey. The results 
painted an interesting picture of the Node-RED community. We think it is time to refresh
these results so we are running the survey again.&lt;/p&gt;

&lt;p&gt;The 2023 survey is similar to the 2019. We’ve made a few tweaks, removed some
questions and added some new ones. The goal is to get a better picture of who
our uses are, what they do with Node-RED and to make sure we keep the project
pointed in the right direction.&lt;/p&gt;

&lt;p&gt;The survey will be open until March 31. Of course we would like to get as many respondents
as possible. In 2019, we have over 800 individuals respond so hopefully we can meet this number
again this year.&lt;/p&gt;

&lt;p&gt;Once the survey has been completed, we will publish the results for the entire community to see.&lt;/p&gt;

&lt;p&gt;The survey should take less than 10 minutes to complete. Thank you in advance for your feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; The survey is now closed.&lt;/p&gt;</content>

      
      
      
      
      

      
        <author>
            <name>nick</name>
          
          
        </author>
      

      

      

      
        <summary type="html">Update: the results are now available here.</summary>
      
    </entry>
  
  
  
    <entry>
      <title type="html">Version 3.0 released</title>
      <link href="https://nodered.org/blog/2022/07/14/version-3-0-released" rel="alternate" type="text/html" title="Version 3.0 released" />
      <published>2022-07-14T00:00:00+00:00</published>
      <updated>2022-07-14T00:00:00+00:00</updated>
      <id>https://nodered.org/blog/2022/07/14/version-3-0-released</id>
      <content type="html" xml:base="https://nodered.org">&lt;p&gt;Node-RED 3.0 is now available to &lt;a href=&quot;https://npmjs.org/package/node-red&quot;&gt;install&lt;/a&gt;. If upgrading, please read the &lt;a href=&quot;http://nodered.org/docs/getting-started/upgrading.html&quot;&gt;upgrade instructions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/node-red/node-red/blob/1b94cc3ac027bfc38a300867a0b0fd635bf273b8/CHANGELOG.md&quot;&gt;Change Log&lt;/a&gt; has the full list of changes in this release, but here are the highlights.&lt;/p&gt;

&lt;hr /&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/R9bV2MytHr0&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;hr /&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#migrating-from-node-red-2x&quot;&gt;Migrating from Node-RED 2.x&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#editor-features&quot;&gt;Editor Features&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#context-menu&quot;&gt;Context Menu&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#junctions&quot;&gt;Junctions&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#debug-path-tooltip&quot;&gt;Debug Path Tooltip&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#continuous-search&quot;&gt;Continuous Search&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#default-node-names&quot;&gt;Default node names&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#monaco-text-editor&quot;&gt;Monaco Text Editor&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#remembering-cursor-position&quot;&gt;Remembering cursor position&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#accessing-previous-welcome-tours&quot;&gt;Accessing previous welcome tours&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#runtime-features&quot;&gt;Runtime Features&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#editing-stopped-flows&quot;&gt;Editing stopped flows&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#diagnostic-report&quot;&gt;Diagnostic Report&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#multiple-static-folders&quot;&gt;Multiple static folders&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#node-updates&quot;&gt;Node updates&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#dynamic-link-call-node&quot;&gt;Dynamic Link Call node&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#environment-variables-in-the-template-node&quot;&gt;Environment Variables in the Template node&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#debug-node-message-count&quot;&gt;Debug node message count&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#predefined-http-request-headers&quot;&gt;Predefined HTTP Request headers&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#whats-next&quot;&gt;What’s next?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;migrating-from-node-red-2x&quot;&gt;Migrating from Node-RED 2.x&lt;/h2&gt;

&lt;p&gt;Here are the key points you need to know when migrating to Node-RED 3.x.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Node.js 14.x or later required&lt;/li&gt;
  &lt;li&gt;Internet Explorer no longer supported&lt;/li&gt;
  &lt;li&gt;Choose if you want to enable the &lt;a href=&quot;#editing-stopped-flows&quot;&gt;Stopping Flows&lt;/a&gt; feature&lt;/li&gt;
  &lt;li&gt;Choose if you want to &lt;em&gt;disable&lt;/em&gt; the &lt;a href=&quot;#diagnostic-report&quot;&gt;Runtime Diagnostics&lt;/a&gt; feature&lt;/li&gt;
  &lt;li&gt;Choose if you want to switch to the &lt;a href=&quot;#monaco-text-editor&quot;&gt;Monaco editor&lt;/a&gt; (if you haven’t already).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;editor-features&quot;&gt;Editor Features&lt;/h2&gt;

&lt;h3 id=&quot;context-menu&quot;&gt;Context Menu&lt;/h3&gt;

&lt;p&gt;We have (finally) added a right-click context menu in the workspace. This gives
you quick access to a lot of built-in actions in the editor and should help users
discover more of the features available.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/07/context.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Picking what options should be in the menu hasn’t been a simple task. There are
a lot of things that could have been included - so we had to get the right balance
between having the right options there and making it too long and hard to find.&lt;/p&gt;

&lt;h3 id=&quot;junctions&quot;&gt;Junctions&lt;/h3&gt;

&lt;p&gt;We have introduced a new special node type called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;junction&lt;/code&gt; that can make it
easier to route the wires in a flow.&lt;/p&gt;

&lt;p&gt;Unlike the various ‘no-op’ nodes that have been published to the community to help
achieve similar results, the Junctions are far more compact and less obtrusive
in the flow.&lt;/p&gt;

&lt;p&gt;When you hover over a Junction, it expands to show input and output ports. You can
move the junction by dragging its body, or add a wire by click/dragging on one of
its ports - just as you do with nodes.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/07/junctions.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Junctions do not appear as regular nodes in the palette or flow outline, but can be
added through the quick-add dialog (Ctrl-click in the workspace) or the new Context Menu.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/07/jucntion-quick-add.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can also insert a Junction into an existing wire by slicing through it with the
mouse by holding &lt;kbd&gt;alt-shift&lt;/kbd&gt; when dragging across the wire. Note that some OS might
use that same combination to move the active window, so this won’t work there. We
don’t yet have a way to allow the mouse actions to be customised, so users affected
by that would have to use the other methods to add Junctions.&lt;/p&gt;

&lt;h3 id=&quot;debug-path-tooltip&quot;&gt;Debug Path Tooltip&lt;/h3&gt;

&lt;p&gt;When hovering over a node name in the Debug sidebar, a new tooltip shows the full
location of the node. This is useful when working with subflows, making it much
easier to identify exactly which node generated the message.&lt;/p&gt;

&lt;p&gt;Clicking on any item in the list will reveal it in the workspace.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/07/debug-tooltip.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;continuous-search&quot;&gt;Continuous Search&lt;/h3&gt;

&lt;p&gt;When searching for things in the editor, a new toolbar in the workspace provides
options to quickly jump between the search results.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/07/search.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We’ve added a pair of new actions to help navigate the results:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;core:search-next&lt;/code&gt; - shortcut: &lt;kbd&gt;f&lt;/kbd&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;core:search-previous&lt;/code&gt; - shortcut: &lt;kbd&gt;shift-f&lt;/kbd&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ve also added some more predefined searches, including the ability to restrict
the search to the current flow.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/07/search-options.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;default-node-names&quot;&gt;Default node names&lt;/h3&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Debug&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Function&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Link&lt;/code&gt; nodes are now given unique default names when
they are added to the workspace.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/07/node-names.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This capability could be added to any node, including contrib nodes, via their
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;onadd&lt;/code&gt; function. We chose just this initial set as they were the ones that would
most benefit from having a name applied.&lt;/p&gt;

&lt;p&gt;A new action has also been added that will apply an appropriate default name to
any selected nodes that don’t currently have a name:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;core:generate-node-names&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;monaco-text-editor&quot;&gt;Monaco Text Editor&lt;/h3&gt;

&lt;p&gt;We added the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;monaco&lt;/code&gt; editor component as an alternative to the default &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ace&lt;/code&gt;
editor a year ago in the 2.x release. It has proven to be very stable and provides
a much richer user experience.&lt;/p&gt;

&lt;p&gt;With 3.0, we have switched over to monaco as the default editor. New installs of
Node-RED will pickup the change - existing installs will need to update (or remove) the
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;codeEditor&lt;/code&gt; entry in their settings file.&lt;/p&gt;

&lt;p&gt;The ultimate goal will be to remove &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ace&lt;/code&gt; entirely in the 4.0 release next year.&lt;/p&gt;

&lt;h3 id=&quot;remembering-cursor-position&quot;&gt;Remembering cursor position&lt;/h3&gt;

&lt;p&gt;The editor now tries to restore your cursor position when you reopen a node’s
edit dialog. This is super handy with the Function node, amongst others, where
you don’t want to have to scroll back to where you were working each time you
open the edit dialog.&lt;/p&gt;

&lt;h3 id=&quot;accessing-previous-welcome-tours&quot;&gt;Accessing previous welcome tours&lt;/h3&gt;

&lt;p&gt;We introduced the Welcome Tour back in 2.1.0 and it has been updated for each
release. With this release, we’ve added a way to access the tours of the previous
releases in the Help sidebar:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/07/tours.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;runtime-features&quot;&gt;Runtime Features&lt;/h2&gt;

&lt;h3 id=&quot;editing-stopped-flows&quot;&gt;Editing stopped flows&lt;/h3&gt;

&lt;p&gt;We’ve introduced the &lt;strong&gt;optional&lt;/strong&gt; ability to run Node-RED without the flows
themselves running. We already had Safe Mode that achieved a similar result, but
with this new feature, you can stop and start the flows directly from the editor.
The runtime will remember the state of the flows so when Node-RED starts up, the
flows will stay in the same started/stopped state.&lt;/p&gt;

&lt;p&gt;This feature is &lt;strong&gt;not enabled by default&lt;/strong&gt;. To enable it, you need to add the
following to your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;settings.js&lt;/code&gt; file:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;runtimeState: {
   enabled: true,
   ui: true
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;With that set, you get a new option in the Deploy menu:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/07/deploy-stop.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Clicking that option will stop the flows running, but you can continue editing
them and deploy changes. Whilst stopped, the Inject/Debug node buttons will be
disabled.&lt;/p&gt;

&lt;p&gt;When the flows are stopped, the menu shows a start option instead:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/07/deploy-start.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;diagnostic-report&quot;&gt;Diagnostic Report&lt;/h3&gt;

&lt;p&gt;We’ve added a new admin endpoint that returns information about the runtime and
the system its running on. This can be used to quickly gather information when
reporting an issue.&lt;/p&gt;

&lt;p&gt;Within the editor you can see the information it returns by running the ‘Show System Info’
action.&lt;/p&gt;

&lt;p&gt;We have taken care to ensure this does not return anything sensitive. In some cases
it will indicate if a particular setting is set, but not what value it has been
set to.&lt;/p&gt;

&lt;p&gt;We realise that not everyone will want to have this exposed depending on how
they use Node-RED. For that reason, the endpoint can be disabled by adding the
following to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;settings.js&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;diagnostics: {
    enabled: false
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;multiple-static-folders&quot;&gt;Multiple static folders&lt;/h3&gt;

&lt;p&gt;The runtime has long-supported the ability to serve a folder of static content
as part of its HTTP handling. Useful for providing static resources to webpages
and the like.&lt;/p&gt;

&lt;p&gt;With this release you can now specify multiple folders to serve from and, more
importantly, to specify the http path each folder should be served from.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;https://github.com/node-red/node-red/pull/3542&quot;&gt;#3542&lt;/a&gt; for details on how it
can be used.&lt;/p&gt;

&lt;h2 id=&quot;node-updates&quot;&gt;Node updates&lt;/h2&gt;

&lt;h3 id=&quot;dynamic-link-call-node&quot;&gt;Dynamic Link Call node&lt;/h3&gt;

&lt;p&gt;We added the Link Call node in Node-RED 2.1. It lets you create a flow that calls
out to a Link In node and get a response back. The main limitation was you had
to hardcode what Link In node you wanted it to call.&lt;/p&gt;

&lt;p&gt;With this release you can now use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;msg.target&lt;/code&gt; to set the name of the Link In node
it should call.&lt;/p&gt;

&lt;h3 id=&quot;environment-variables-in-the-template-node&quot;&gt;Environment Variables in the Template node&lt;/h3&gt;

&lt;p&gt;The Template node can now access environment variables using the syntax:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;My favourite colour is {{env.COLOUR}}.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;debug-node-message-count&quot;&gt;Debug node message count&lt;/h3&gt;

&lt;p&gt;The Debug node has a new option to report how many messages it has received in its
status output.&lt;/p&gt;

&lt;h3 id=&quot;predefined-http-request-headers&quot;&gt;Predefined HTTP Request headers&lt;/h3&gt;

&lt;p&gt;The HTTP Request node now allows you to set request headers in the node’s edit
dialog - rather than having to always pass them in as message properties.&lt;/p&gt;

&lt;h2 id=&quot;whats-next&quot;&gt;What’s next?&lt;/h2&gt;

&lt;p&gt;As happened with 2.0, we’ve overrun our plan for getting 3.0 released in April. But
the series of beta releases we have been doing have really helped improve the overall
quality of this release.&lt;/p&gt;

&lt;p&gt;The main challenge has always been getting enough time and attention dedicated
to keep the release cadence going.&lt;/p&gt;

&lt;p&gt;Our next scheduled main release will be 3.1 in late October/November. As ever,
we have a healthy backlog of items to keep us busy - but ultimately it depends
very much on the feedback from the community.&lt;/p&gt;

&lt;p&gt;If you’re interested in contributing to Node-RED, now is a good time to come over
and chat with us in either the &lt;a href=&quot;https://discourse.nodered.org&quot;&gt;forum&lt;/a&gt; or &lt;a href=&quot;https://nodered.org/slack&quot;&gt;slack&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Node-RED 2.x is now in maintenance mode - we won’t be added any new features to it,
but we will do maintenance releases with fixes as needed. In fact, we’ll have a
long overdue 2.2.3 release in the next couple of weeks.&lt;/p&gt;</content>

      
      
      
      
      

      
        <author>
            <name>nick</name>
          
          
        </author>
      

      

      

      
        <summary type="html">Node-RED 3.0 is now available to install. If upgrading, please read the upgrade instructions.</summary>
      
    </entry>
  
  
  
    <entry>
      <title type="html">Introducing the Node Scorecard</title>
      <link href="https://nodered.org/blog/2022/01/31/introducing-scorecard" rel="alternate" type="text/html" title="Introducing the Node Scorecard" />
      <published>2022-01-31T00:00:00+00:00</published>
      <updated>2022-01-31T00:00:00+00:00</updated>
      <id>https://nodered.org/blog/2022/01/31/introducing-scorecard</id>
      <content type="html" xml:base="https://nodered.org">&lt;p&gt;Last year we asked the community what frustrations they were experiencing as both
users and creators of 3rd party nodes. One of the common themes was that it was
hard to judge the quality of a node just from looking at its page on the &lt;a href=&quot;https://flows.nodered.org&quot;&gt;Flow Library&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Based on that feedback, we’re now introducing Node Scorecards.&lt;/p&gt;

&lt;p&gt;The scorecard provides a summary of a Node across a range of things such as whether
it follows our naming guidelines, does it have a valid license applied and does it
clash with other packages in the library.&lt;/p&gt;

&lt;p&gt;When we first introduced the Flow Library, we chose not to act as gatekeepers to
what can be shared, beyond some very basic checks on the nodes. The scorecard
doesn’t change that, but it does help start to highlight where a node may need some additional work to meet the recommended best practices.&lt;/p&gt;

&lt;p&gt;We’ve been running the tool against new submissions to the Flow Library for a
couple months now so there are scorecards for many of the recently updated nodes.
You’ll now see a link to ‘View scorecard’ in the sidebar of a node’s page on the
library, along with a summary of the scorecard.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/01/node-page.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Click through gives you a more detailed view of the scorecard - listing out all
of the checks made. You can find out more about the purpose of each check by clicking
on the i link on the right hand side.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/01/node-scorecard.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;changing-our-recommended-naming-convention&quot;&gt;Changing our recommended naming convention&lt;/h3&gt;

&lt;p&gt;As part of the work to improve the overall quality of the Flow Library, we’re making
a change to our &lt;a href=&quot;/docs/creating-nodes/packaging#naming&quot;&gt;naming guidelines for node modules&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Previously, we asked that if a module’s name started with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node-red-&lt;/code&gt;, that it
use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node-red-contrib-&lt;/code&gt; to distinguish it from modules maintained by the core project.&lt;/p&gt;

&lt;p&gt;We now recommend that &lt;em&gt;newly published&lt;/em&gt; modules use a &lt;a href=&quot;https://docs.npmjs.com/cli/v8/using-npm/scope&quot;&gt;scoped name&lt;/a&gt; - such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@myScope/node-red-sample&lt;/code&gt;. That can be your own user scope, or an organisation scope.&lt;/p&gt;

&lt;p&gt;If you use a scoped name, there are no further requirements on the name. You could
use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@myScope/node-red-sample&lt;/code&gt; or just &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@myScope/sample&lt;/code&gt; - although having &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node-red&lt;/code&gt;
in the name does help to associate the module with the project.&lt;/p&gt;

&lt;p&gt;If you are forking an existing package to provide a fix, you can keep the same name but
released under your own scope. But please keep in mind, forking should always be a
last resort if the original maintainer is not responsive to your contributions.&lt;/p&gt;

&lt;p&gt;We won’t be asking anyone to republish their existing modules under this new
naming convention, but the scorecard will flag up any newly added modules
that don’t follow this new convention from today.&lt;/p&gt;

&lt;h3 id=&quot;node-developers&quot;&gt;Node Developers&lt;/h3&gt;

&lt;p&gt;The tool underlying the scorecard is &lt;a href=&quot;https://www.npmjs.com/package/node-red-dev&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node-red-dev&lt;/code&gt;&lt;/a&gt; - a new command-line tool that
developers can run locally against their own code to check for any possible issues
before publishing to npm. Many of the checks are quick and easy to fix - much better
to do so before sharing with the community.&lt;/p&gt;

&lt;p&gt;You can run the tool either against a path on your local machine or against a package already published to npm using the appropriate flags, and you’ll get the results in the console&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/01/node-red-dev.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-future&quot;&gt;The Future&lt;/h3&gt;

&lt;p&gt;This is the first step in improving the quality of our node ecosystem, over time
we will add more checks to the scorecard. It doesn’t currently examine the code
of a node, but that is certainly something that could be explored.&lt;/p&gt;

&lt;p&gt;There’s also a lot more that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node-red-dev&lt;/code&gt; could do for Node Developers beyond
the scorecard check. For example, using it to bootstrap development of a new
node module, with all of the best practices pre-applied.&lt;/p&gt;

&lt;p&gt;If that’s something you’re interested in contributing to, please do come talk to
us in the &lt;a href=&quot;https://discourse.nodered.org&quot;&gt;forum&lt;/a&gt;.&lt;/p&gt;</content>

      
      
      
      
      

      
        <author>
            <name>nick</name>
          
          
        </author>
      

      

      

      
        <summary type="html">Last year we asked the community what frustrations they were experiencing as both users and creators of 3rd party nodes. One of the common themes was that it was hard to judge the quality of a node just from looking at its page on the Flow Library.</summary>
      
    </entry>
  
  
  
    <entry>
      <title type="html">Version 2.2 released</title>
      <link href="https://nodered.org/blog/2022/01/27/version-2-2-released" rel="alternate" type="text/html" title="Version 2.2 released" />
      <published>2022-01-27T00:00:00+00:00</published>
      <updated>2022-01-27T00:00:00+00:00</updated>
      <id>https://nodered.org/blog/2022/01/27/version-2-2-released</id>
      <content type="html" xml:base="https://nodered.org">&lt;p&gt;Node-RED 2.2 is now available to &lt;a href=&quot;https://npmjs.org/package/node-red&quot;&gt;install&lt;/a&gt;. If upgrading, please read the &lt;a href=&quot;http://nodered.org/docs/getting-started/upgrading.html&quot;&gt;upgrade instructions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/node-red/node-red/blob/3a69af9034a6f3a59f35c17aa16e018807a38e93/CHANGELOG.md&quot;&gt;Change Log&lt;/a&gt; has the full list of changes in this release, but here are the highlights.&lt;/p&gt;

&lt;hr /&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/vAS3gK2Wans&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;hr /&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#highlights&quot;&gt;Highlights&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#search-history&quot;&gt;Search History&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#remembering-zoom-position&quot;&gt;Remembering zoom/position&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#aligning-nodes&quot;&gt;Aligning nodes&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#detaching-nodes&quot;&gt;Detaching nodes&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#selecting-multiple-wires&quot;&gt;Selecting multiple wires&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#slicing-wires&quot;&gt;Slicing wires&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#subflow-output-labels&quot;&gt;Subflow Output labels&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#predefined-environment-variables&quot;&gt;Predefined Environment Variables&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#node-paths&quot;&gt;Node Paths&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#node-updates&quot;&gt;Node Updates&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#whats-next&quot;&gt;What’s next?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;highlights&quot;&gt;Highlights&lt;/h2&gt;

&lt;h3 id=&quot;search-history&quot;&gt;Search History&lt;/h3&gt;

&lt;p&gt;The main search dialog now keeps a history of your searches. This makes it easy
to repeatedly search for the same thing.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/01/search-history.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;remembering-zoomposition&quot;&gt;Remembering zoom/position&lt;/h3&gt;

&lt;p&gt;Under the View section of the main settings dialog, there are a pair of options
to get the editor to remember the zoom level of the workspace, as well as the
scroll position of individual tabs.&lt;/p&gt;

&lt;p&gt;This is helpful if you prefer to have the workspace zoomed in - you don’t have
to reset it every time you reload the editor.&lt;/p&gt;

&lt;h3 id=&quot;aligning-nodes&quot;&gt;Aligning nodes&lt;/h3&gt;

&lt;p&gt;With snap-to-grid enabled, nodes with hidden labels (for example, link nodes) can
now be aligned on either their left or right edge. This will make it easier to
get everything to line up in the workspace&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/01/align-nodes.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;detaching-nodes&quot;&gt;Detaching nodes&lt;/h3&gt;

&lt;p&gt;You can now delete a node from the middle of a flow and have the wiring automatically
repair itself in the background.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/01/delete-reconnect.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This is done by holding the Ctrl (or Cmd) key when you press delete.&lt;/p&gt;

&lt;p&gt;You can also detach a node from the flow &lt;em&gt;without&lt;/em&gt; deleting it:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/01/detach-node.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We haven’t assigned a default shortcut for that, but you can assign one yourself
in the Keyboard pane of the Settings dialog. The action is called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;core:detach-selected-nodes&lt;/code&gt;.&lt;/p&gt;

&lt;h3 id=&quot;selecting-multiple-wires&quot;&gt;Selecting multiple wires&lt;/h3&gt;

&lt;p&gt;You can also select multiple wires by ctrl-clicking on them.&lt;/p&gt;

&lt;p&gt;When you select multiple nodes, we also highlight any wires between them. This can make it easier to follow a flow once you have selected it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/01/select-wires.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;slicing-wires&quot;&gt;Slicing wires&lt;/h3&gt;

&lt;p&gt;We’ve added the ability to remove wires by slicing through them. You do this by holding the ctrl (or cmd) key, then dragging the mouse with the right-hand button pressed:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/01/slice-wires.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;subflow-output-labels&quot;&gt;Subflow Output labels&lt;/h3&gt;

&lt;p&gt;If you have set output labels for a subflow template (via the Appearance tab of its
edit dialog), the editor will now display those labels whilst you are editing
the subflow template.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/content/images/2022/01/subflow-labels.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;predefined-environment-variables&quot;&gt;Predefined Environment Variables&lt;/h3&gt;

&lt;p&gt;We have added a number of predefined Environment Variables that provide access to
information about the node, group and flow at the point they are evaluated.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_NODE_ID&lt;/code&gt; - the ID of the node&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_NODE_NAME&lt;/code&gt; - the Name of the node&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_NODE_PATH&lt;/code&gt; - the Path of the node - this is a new concept that we’ll explain below.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_GROUP_ID&lt;/code&gt; - the ID of the containing group&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_GROUP_NAME&lt;/code&gt; - the Name of the containing group&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_FLOW_ID&lt;/code&gt; - the ID of the flow the node is on&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_FLOW_NAME&lt;/code&gt; - the Name of the flow the node is on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The guide for using Environment Variables in your flow is available &lt;a href=&quot;https://nodered.org/docs/user-guide/environment-variables&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For example, in a Function node, you can do:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;const functionName = env.get(&quot;NR_NODE_NAME&quot;)
const flowName = env.get(&quot;NR_FLOW_NAME&quot;)
msg.payload = `I was sent by Function &apos;${functionName}&apos;, on flow &apos;${flowName}&apos;`
return msg
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;node-paths&quot;&gt;Node Paths&lt;/h3&gt;

&lt;p&gt;This is a new internal property of Nodes we’ve added that helps identify where
exactly any node is within the overall flows.&lt;/p&gt;

&lt;p&gt;The following may sound a bit abstract, and it’s something most users can skip over.
But it can be useful when creating your own subflow modules with custom logging
messages inside.&lt;/p&gt;

&lt;p&gt;If a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NodeA&lt;/code&gt; is on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Flow1&lt;/code&gt;, it will have a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;path&lt;/code&gt; of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Flow1/NodeA&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That isn’t very interesting, but it gets more interesting when dealing with subflows
and, in particular, nested subflows.&lt;/p&gt;

&lt;p&gt;When we create an instance of a subflow, all of the nodes in the subflow are given
randonly generated ids. If that node logs an error, you see the generated ID, not the
‘true’ id as appears in the editor. It gets harder when you have nested subflows
because you need to be able to identify which instance of the node, in which instance
of the subflow to go looking for.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;path&lt;/code&gt; property can solve that by providing the ids of the top-level flow and
each subflow instance to identify exactly where the node is.&lt;/p&gt;

&lt;p&gt;This property is exposed in the following ways:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;For node authors, it is available as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;this._path&lt;/code&gt; on the node object.&lt;/li&gt;
  &lt;li&gt;Inside the Function node, it is exposed as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node.path&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;It is also available as the environment variable &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NR_NODE_PATH&lt;/code&gt; when evaluated
by a node.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;node-updates&quot;&gt;Node Updates&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;The JSON node will now attempt to parse Buffer objects if they contain a valid string&lt;/li&gt;
  &lt;li&gt;The TCP Client nodes support TLS connections&lt;/li&gt;
  &lt;li&gt;The WebSocket client node now lets you specify a sub-protocol to connect with&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;whats-next&quot;&gt;What’s next?&lt;/h2&gt;

&lt;p&gt;Next on the &lt;a href=&quot;/about/releases/&quot;&gt;release plan&lt;/a&gt; is Node-RED 3.0, scheduled for the end of April.&lt;/p&gt;

&lt;p&gt;This coincides with Node.js 12 reaching its end of life.&lt;/p&gt;

&lt;p&gt;As ever, if there are any particular features you’re interested in, now is a great time to jump into the &lt;a href=&quot;https://discourse.nodered.org&quot;&gt;forum&lt;/a&gt; to share your feedback.&lt;/p&gt;</content>

      
      
      
      
      

      
        <author>
            <name>nick</name>
          
          
        </author>
      

      

      

      
        <summary type="html">Node-RED 2.2 is now available to install. If upgrading, please read the upgrade instructions.</summary>
      
    </entry>
  
  
</feed>
