[{"data":1,"prerenderedAt":1250},["ShallowReactive",2],{"blog-\u002Fblog\u002F2026\u002F04\u002Fmodbus-polling-best-practices":3,"featureCatalog":320,"changelog-titles":715,"blog-all-for-related":1249},{"id":4,"title":5,"authors":6,"body":8,"cta":290,"date":294,"description":295,"extension":296,"features":297,"image":298,"lastUpdated":297,"meta":299,"navigation":309,"path":310,"release":297,"seo":311,"sitemap":312,"stem":313,"subtitle":314,"tags":315,"tldr":318,"video":297,"__hash__":319},"blog\u002Fblog\u002F2026\u002F04\u002Fmodbus-polling-best-practices.md","Most Modbus Polling Setups Are Wrong: Here's How to Fix Yours",[7],"sumit-shinde",{"type":9,"value":10,"toc":281},"minimark",[11,18,21,24,27,36,41,44,47,50,53,59,65,71,74,102,105,108,111,115,118,121,124,129,132,135,138,143,146,153,159,165,168,171,176,179,182,187,190,193,197,200,207,210,213,218,221,224,227,230,235,238,241,244,249,252,257,260,264,267,270,273],[12,13,14],"p",{},[15,16,17],"strong",{},"Modbus polling looks simple. It is simple. That's the problem.",[12,19,20],{},"You set a scan rate, point it at a device, start reading registers, and data flows. It works. So nobody looks at it again.",[12,22,23],{},"Except \"working\" and \"working correctly\" are different things in Modbus polling, and the gap between them is where most engineers quietly lose data, burn network bandwidth, and cause the intermittent device dropouts that get blamed on hardware.",[12,25,26],{},"The mistakes aren't exotic. They're the same ones across almost every installation: polling everything at the same rate, ignoring timeouts, stacking too many registers into single requests, or hammering slow devices with back-to-back queries they were never designed to handle. None of these are obvious from the outside because Modbus doesn't complain. It just silently drops a frame or lets the device go quiet, and your polling stack fills in the gap by returning the last successfully read value, making the problem invisible until someone notices the data has stopped changing.",[12,28,29,30,35],{},"This article isn't about the basics of how Modbus works. If you need that, start ",[31,32,34],"a",{"href":33},"\u002Fblog\u002F2026\u002F01\u002Fwhy-modbus-still-exist\u002F","here",". This is about the specific configuration decisions that separate a polling setup that stays stable for years from one that causes problems at the worst possible time. It covers the three mistakes made at commissioning. The next article covers what happens after the system is running.",[37,38,40],"h2",{"id":39},"the-myth-of-the-universal-scan-rate","The Myth of the Universal Scan Rate",[12,42,43],{},"Every Modbus polling setup has a scan rate. Most setups have one scan rate. That's where the trouble starts.",[12,45,46],{},"The default in most SCADA systems, Node-RED flows, and industrial gateways is to configure a single polling interval and apply it uniformly across every register on every device. 500ms. 1 second. 5 seconds. Pick a number, apply it everywhere, call it done. It's the configuration decision that takes thirty seconds and then gets inherited by every engineer who touches the system after you.",[12,48,49],{},"The problem isn't the interval you picked. The problem is that one interval is the wrong answer for almost every real installation.",[12,51,52],{},"Consider what's actually living in a typical Modbus device: a temperature reading that changes slowly over minutes, a motor running-hours counter that increments once per hour, an alarm status bit that can flip in under a second, and a setpoint register that only changes when an operator touches it. These are not the same kind of data. Polling all of them at the same rate means you've optimized for nothing and made tradeoffs you never consciously chose.",[12,54,55,58],{},[15,56,57],{},"Polling too fast punishes your bus and your devices."," RS-485 is a shared medium. Every query you send to one device occupies the bus for the duration of that transaction: the request frame, the device processing time, and the response frame. On a 9600 baud network with 20 devices, a 500ms scan rate across all of them isn't 500ms per device. It's a queue. If each transaction takes 50ms, your 20-device poll cycle takes a full second to complete, which means the data you're getting from device 20 is already a second stale before you even start the next cycle. Slow sensors get polled ten times before their value could possibly have changed. Fast-changing signals still get missed.",[12,60,61,64],{},[15,62,63],{},"Polling too slow loses events."," A motor fault flag that goes high for 800ms and then clears on its own will be completely invisible to a 1-second polling interval. Not occasionally invisible, reliably invisible. The bit flipped, the motor logged an internal fault, the fault self-cleared, and your polling cycle saw nothing but normal values on both sides of the event. You'll hear about that fault months later when the motor fails completely and maintenance pulls the device logs.",[12,66,67,68],{},"The fix isn't complicated, but it requires making a deliberate decision you've probably been deferring: ",[15,69,70],{},"categorize your data by how fast it actually changes, then assign poll rates to match.",[12,72,73],{},"A practical starting framework for most industrial installations:",[75,76,77,84,90,96],"ul",{},[78,79,80,83],"li",{},[15,81,82],{},"Fast (100 to 500ms):"," Alarm and fault status bits, safety interlocks, process variables driving closed-loop control. These are registers where a missed state change has operational or safety consequences.",[78,85,86,89],{},[15,87,88],{},"Normal (1 to 5 seconds):"," Running process values such as flow rates, pressures, temperatures, and current draws. These change continuously but not instantaneously. A 2-second poll captures meaningful trends without hammering the bus.",[78,91,92,95],{},[15,93,94],{},"Slow (30 seconds to 5 minutes):"," Accumulated counters, runtime hours, setpoints, device configuration registers. These either change by operator action only or accumulate so slowly that polling them fast is pure waste.",[78,97,98,101],{},[15,99,100],{},"On-demand only:"," Nameplate data, firmware versions, serial numbers, calibration constants. Poll once at startup and cache. Never poll again during normal operation.",[12,103,104],{},"This tiered approach does something important beyond just reducing bus load: it aligns your polling architecture with the operational reality of the process you're monitoring. An engineer reading your configuration can look at the scan rates and immediately understand which signals the system treats as critical and which it treats as background. That's information that doesn't exist in a flat 1-second-everything setup.",[12,106,107],{},"The pushback you'll hear is that tiered polling is harder to configure and harder to document. That's true. A single scan rate is simple to explain and simple to hand off. But simple to configure and correct are different things, and a polling architecture that silently misses events or saturates a serial bus isn't simple. It's a problem that hasn't surfaced yet.",[12,109,110],{},"One more thing worth stating plainly: your scan rate has to account for the device's actual response capability, not just the rate you want data. Some field devices, including older PLCs, low-cost sensors, and anything running on an 8-bit microcontroller with slow UART handling, need 50 to 150ms just to process a request and formulate a response. If your fast-tier scan rate is 100ms and your device needs 120ms to respond, you're not getting 100ms data. You're getting collisions, timeouts, and a maintenance headache. Measure actual device response times before setting your fast-tier interval. The device datasheet will give you a starting point; a protocol analyzer will give you the truth.",[37,112,114],{"id":113},"how-timeout-misconfiguration-kills-stability","How Timeout Misconfiguration Kills Stability",[12,116,117],{},"Timeouts are the most quietly destructive configuration parameter in a Modbus polling setup. Set them wrong and your system doesn't fail loudly. It just becomes unreliable in ways that are genuinely difficult to trace back to the source.",[12,119,120],{},"Here's what actually happens when a Modbus master sends a request: it waits. There's no explicit acknowledgment mechanism beyond the response itself, no \"I got your request, give me a moment.\" The master sends the frame and sits in silence until either a valid response arrives or the timeout expires. What happens after that expiry, whether retry, skip, error, or log, is entirely up to whatever stack you're using. Modbus itself has no opinion.",[12,122,123],{},"That silence is where most setups go wrong.",[12,125,126],{},[15,127,128],{},"The too-tight timeout problem",[12,130,131],{},"The instinct when configuring timeouts is to set them aggressively short. Short timeouts mean fast failure detection. Fast failure detection means the polling cycle doesn't stall when a device goes quiet. That logic is correct in theory and damaging in practice.",[12,133,134],{},"The issue is that \"device response time\" isn't a fixed number. It varies. A device that normally responds in 40ms might take 90ms when its processor is busy handling an internal alarm condition. It might take 130ms during a firmware-driven self-diagnostic that runs every few hours. It will almost certainly take longer under electrical noise conditions where the first frame gets corrupted and the device is waiting for a valid request that never arrives cleanly.",[12,136,137],{},"If your timeout is 100ms and your device occasionally needs 130ms, you get a spurious timeout. The master marks the request as failed and moves on to the next poll. The device, meanwhile, finishes processing and transmits a perfectly valid response, but the master has already abandoned that transaction. Those late bytes now sit in the master's receive buffer. When the next legitimate response arrives, those orphaned bytes are still there, and the master's parser reads a combined stream of garbage from both, corrupting the next response and producing another error. On RS-485 networks this compounds faster than on TCP because there's no underlying transport layer to absorb or sequence the damage. One misconfigured timeout on one device can introduce intermittent errors across the entire bus segment.",[12,139,140],{},[15,141,142],{},"Calculating a timeout that actually makes sense",[12,144,145],{},"Timeout values aren't arbitrary. They have a floor set by physics and firmware, and your configured value needs to sit above that floor with enough margin to absorb real-world variation. The floor has three components:",[12,147,148,152],{},[149,150,151],"em",{},"Transmission time"," is how long it takes to physically clock the request frame onto the wire. At 9600 baud, each bit takes roughly 104 microseconds. A typical Modbus RTU request runs 8 bytes, which at 11 bits per byte (1 start bit, 8 data bits, 1 stop bit, plus parity) comes to roughly 88 bits, so about 9ms just to transmit at 9600 baud. At 19200 baud it halves. At 115200 baud it becomes negligible.",[12,154,155,158],{},[149,156,157],{},"Device processing time"," is how long the device takes to receive the complete request, validate the CRC, look up the register values, and build the response. Budget 20 to 50ms for most industrial devices, 50 to 100ms for older PLCs and slower microcontrollers, and up to 150ms for devices known to have slow UART handling.",[12,160,161,164],{},[149,162,163],{},"Response transmission time"," is the time to clock the response frame back. A read response for 10 registers runs about 25 bytes, roughly 25ms at 9600 baud.",[12,166,167],{},"Add those up for a 9600 baud network reading 10 registers from a moderately slow device: 8ms transmit + 75ms processing + 25ms response = 108ms minimum. A 100ms timeout fails this transaction every time. A 150ms timeout passes it usually but fails it when the device is under load. A 250ms timeout gives you real margin.",[12,169,170],{},"The general rule: calculate your floor, then multiply by 1.5 to 2 as a stability margin. That margin isn't wasted time. It's the difference between a system that runs cleanly for years and one that produces unexplained errors every few days. For Modbus TCP the math changes but the principle doesn't. TCP eliminates the baud rate component, but device processing time still dominates, and now you've added network latency and TCP stack overhead on both ends. A 500ms timeout is reasonable for most TCP deployments. Anything under 200ms can lead to intermittent failures depending on device response time and network conditions.",[12,172,173],{},[15,174,175],{},"The too-loose timeout problem",[12,177,178],{},"The other failure mode gets less attention because it doesn't cause errors. It causes slowness, which is easier to ignore.",[12,180,181],{},"A timeout set at 5 seconds on a serial network means every unresponsive device costs you 5 seconds of dead time per poll cycle. If you have 3 offline devices on a 20-device bus, you're burning 15 seconds per cycle waiting for responses that will never come. This is particularly common in systems that were built to poll 20 devices and are now down to 12 because equipment was removed without anyone updating the polling configuration. The device list grows stale, the timeouts fire on phantom addresses, and the cycle time balloons silently.",[12,183,184],{},[15,185,186],{},"Retries: the configuration that multiplies your problems",[12,188,189],{},"Most Modbus stacks let you configure a retry count. The default in many tools is 3. That sounds conservative. It isn't.",[12,191,192],{},"Three retries at a 250ms timeout means a single unresponsive device costs you 1 full second per poll cycle before the master gives up and moves on. On a fast-tier signal you're trying to poll at 500ms, one bad device makes your entire fast-tier effectively useless. The right retry count for most industrial installations is 1, sometimes 2. A single retry catches genuine transient errors. Multiple retries on a serial bus create the congestion that causes the errors you're trying to catch. Set your timeout correctly and you need fewer retries. Set your timeout too tight and no retry count will save you.",[37,194,196],{"id":195},"register-batching-do-it-right-or-dont-do-it","Register Batching: Do It Right or Don't Do It",[12,198,199],{},"Register batching is the Modbus optimization that every engineer knows about and most engineers get half right. The concept is simple: instead of sending ten separate read requests for ten individual registers, send one request that reads a contiguous block covering all ten. One transaction instead of ten. One round-trip instead of ten. The bus thanks you.",[12,201,202,203,206],{},"What gets left out of that explanation is the word ",[149,204,205],{},"contiguous",", and that omission is where batching goes from optimization to problem.",[12,208,209],{},"Every Modbus transaction carries fixed overhead regardless of how many registers you're reading. On a 9600 baud RS-485 network, a single-register read transaction takes roughly 10ms in transmission time alone. Reading 50 registers one at a time: potentially 500ms or more in wire time. Reading those same 50 registers in one batched request: one transaction, maybe 30ms. The efficiency difference isn't marginal. It's an order of magnitude.",[12,211,212],{},"The advice to batch your reads is correct. The problem is what happens when engineers apply it without reading the register map first.",[12,214,215],{},[15,216,217],{},"The contiguous register requirement",[12,219,220],{},"Modbus function code 03 reads a starting address plus a quantity, that block, sequentially, with no gaps. If you want registers 40001, 40050, and 40099, you cannot batch those in one request. You need three separate requests, or you read the entire range from 40001 to 40099 and discard the 96 registers you don't need.",[12,222,223],{},"That second option is where the mistake happens. Engineers conclude that reading a larger block is always better than reading a smaller one. So they batch aggressively: read registers 40001 through 40200 in one shot and parse out the handful of values they actually need.",[12,225,226],{},"This works fine until you hit a gap in the register map containing a reserved or unimplemented register. Modbus devices are not required to return valid data for registers that aren't defined in their implementation. Many return zero. A significant number return an exception response, Modbus error code 02 (illegal data address), which terminates the entire read request and returns nothing. Your aggressive batch that was supposed to read 50 useful values returns an exception because register 40047 isn't implemented on this firmware version, and now you have no data from any of those 50 registers until the next poll cycle.",[12,228,229],{},"This is one of the most common sources of intermittent data gaps in Modbus installations. The polling works fine during commissioning on a bench setup, then produces sporadic errors in the field when devices from a different firmware revision have slightly different register implementations.",[12,231,232],{},[15,233,234],{},"How to batch correctly",[12,236,237],{},"Start with the device register map from the vendor documentation. Read it to understand the layout, not just to find the registers you want. Where are the gaps? Which registers are reserved? Which are only valid in certain operating modes?",[12,239,240],{},"Then group registers into contiguous or near-contiguous clusters where the gap between any two consecutive needed registers is small, using 10 registers or fewer as a starting heuristic. Each cluster becomes one batch request. Clusters separated by larger gaps become separate requests.",[12,242,243],{},"For a device where you need registers 40001–40010, 40015–40020, and 40100–40110: the first two clusters are close enough that one request covering 40001 to 40020, reading 20 registers and wasting 5, is acceptable. The third cluster at 40100 is 80 registers away. That's a separate request.",[12,245,246],{},[15,247,248],{},"Batching and your poll rate tiers",[12,250,251],{},"If your fast-tier registers are scattered through the same address space as your slow-tier registers, batching them together means polling slow registers at your fast rate, which defeats the tiering entirely. Design your batches per tier. Fast-tier batch: only fast-tier registers, polled at your fast interval. Slow-tier batch: only slow-tier registers, polled at your slow interval. If registers from different tiers happen to be contiguous in the address map, resist the temptation to merge them. A slightly less efficient batch that preserves your polling architecture is better than an efficient batch that collapses your scan rate strategy.",[12,253,254],{},[15,255,256],{},"A note on writes",[12,258,259],{},"Function code 16 allows batching writes the same way FC03 batches reads. But write batching carries a risk read batching doesn't: a single malformed batch can corrupt multiple independent settings simultaneously. For writes, err toward smaller, focused transactions even at the cost of bus efficiency. When you're writing to a live device controlling an active process, the reliability argument outweighs the performance argument.",[37,261,263],{"id":262},"where-this-leaves-you","Where This Leaves You",[12,265,266],{},"The three problems this article covers, scan rate uniformity, timeout miscalculation, and aggressive batching, share a common trait: none of them produce an immediate, obvious failure. They produce a system that works, mostly, until it doesn't. The errors they cause get blamed on hardware, on electrical noise, on the device vendor. The actual cause sits in a configuration file that nobody has looked at since commissioning.",[12,268,269],{},"The fix for all three is the same kind of work: deliberate, once, documented. Tier your scan rates to match how fast your data actually changes. Calculate your timeouts from the physics of your network rather than accepting defaults. Read the register map before you batch. None of this takes long. None of it requires downtime. It just requires treating these as decisions rather than defaults.",[12,271,272],{},"If you've made these changes and your installation is still misbehaving, the problem is in the operational layer: how your polling architecture handles the network and devices once they're running. The next article covers that: serial versus TCP failure modes, unresponsive device handling, live diagnostics, and how to fix what you find without taking production down.",[12,274,275,276,280],{},"For a complete guide to connecting Modbus PLCs, alongside OPC UA, EtherNet\u002FIP, and Siemens S7, to MQTT, cloud, and enterprise systems, see the ",[31,277,279],{"href":278},"\u002Flanding\u002Fplc\u002F","FlowFuse PLC integration overview",".",{"title":282,"searchDepth":283,"depth":283,"links":284},"",4,[285,287,288,289],{"id":39,"depth":286,"text":40},2,{"id":113,"depth":286,"text":114},{"id":195,"depth":286,"text":196},{"id":262,"depth":286,"text":263},{"type":291,"title":292,"description":293},"contact","Need help fixing your Modbus setup?","If your system is still dropping data or behaving unpredictably, reach out. We can help review your polling configuration and identify what is actually causing the instability.","2026-04-03","Most Modbus polling problems aren't hardware failures. They're three configuration mistakes made at commissioning and never revisited. Here's how to fix them.","md",null,"\u002Fblog\u002F2026\u002F04\u002Fimages\u002Fmodbus-polling-best-practices.jpg",{"keywords":300,"excerpt":301},"Modbus polling, Modbus configuration, Modbus troubleshooting, Modbus scan rate, Modbus timeout, RS-485 communication, Modbus batching, industrial automation, Node-RED Modbus",{"type":9,"value":302},[303,307],[12,304,305],{},[15,306,17],{},[12,308,20],{},true,"\u002Fblog\u002F2026\u002F04\u002Fmodbus-polling-best-practices",{"title":5,"description":295},{"loc":310},"blog\u002F2026\u002F04\u002Fmodbus-polling-best-practices","The configuration decisions made at setup time that cause problems you'll blame on hardware",[316,317],"flowfuse","modbus","Most Modbus polling problems aren't hardware failures they're three configuration mistakes made at commissioning: polling all registers at a single scan rate instead of tiering by how fast data changes, setting timeouts based on intuition instead of measured device response times, and batching registers aggressively across gaps in the register map. Each mistake produces silent failures that trace back to configuration decisions that are straightforward to fix once identified.","R_3O64iMyBgjLftMX8mAFrcflzYrtzeCnD8PqkBOOHk",{"id":321,"extension":322,"meta":323,"sections":324,"stem":713,"__hash__":714},"featureCatalog\u002Ffeature-catalog.yml","yml",{},[325,376,477,539,616,695],{"id":326,"title":327,"features":328},"ai-automation","AI & Automation",[329,339,349,359,365,371],{"id":330,"title":331,"description":332,"docsLink":333,"changelog":334,"tiers":338},"flowfuse-expert-ai","FlowFuse Expert AI","Build industrial apps with agents, and query the state of the factory with an agent. Adapt your current hardware and machines so agentic work can be done against them, without ripping and replacing what's already on the plant floor.","\u002Fdocs\u002Fuser\u002Fexpert\u002F",[335],{"url":336,"release":337},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-update-banner\u002F","2.28",{"edge":309,"hub":309,"fleet":309},{"id":340,"title":341,"description":342,"docsLink":343,"changelog":344,"subfeature":309,"showOnPricing":347,"tiers":348},"flowfuse-expert-support-mode","Support Mode","Chat-based assistance for FlowFuse and Node-RED, including Node-RED instance management through natural language.","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat\u002F#support-mode",[345],{"url":346,"release":337},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-debug-log-context\u002F",false,{"edge":309,"hub":309,"fleet":309},{"id":350,"title":351,"description":352,"docsLink":353,"changelog":354,"subfeature":309,"showOnPricing":347,"tiers":358},"flowfuse-expert-application-building","Application Building","Describe what you want to build and FlowFuse Expert assembles it on your workspace, adding tabs, wiring nodes, and configuring properties.","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat\u002F",[355],{"url":356,"release":357},"\u002Fchangelog\u002F2026\u002F05\u002Fexpert-application-building\u002F","2.30",{"edge":309,"hub":309,"fleet":309},{"id":360,"title":361,"description":362,"docsLink":363,"subfeature":309,"beta":309,"showOnPricing":347,"tiers":364},"flowfuse-expert-insights-mode","Insights Mode","Connects FlowFuse Expert to MCP servers in your Node-RED instances, enabling real-time data queries and actions through a single chat interface.","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat\u002F#insights-mode",{"edge":309,"hub":309,"fleet":309},{"id":366,"title":367,"description":368,"docsLink":369,"tiers":370},"mcp-servers","Agentic Operations","Expose your Node-RED flows as tools an AI agent can call directly, so agents can query the state of the factory or trigger actions without custom integration work.","\u002Fnode-red\u002Fflowfuse\u002Fmcp\u002F",{"edge":309,"hub":309,"fleet":309},{"id":372,"title":373,"description":374,"tiers":375},"onnx-integration","ONNX Integration","Run trained machine learning models directly in your flows, including on edge hardware, without sending data out to an external inference service.",{"edge":309,"hub":309,"fleet":309},{"id":377,"title":378,"features":379},"build","Build",[380,386,392,402,408,414,418,424,430,438,444,448,452,461,469],{"id":381,"title":382,"description":383,"docsLink":384,"tiers":385},"edge-development","Edge Development","Develop and test Node-RED flows directly on edge devices with a remote editor proxy.","\u002Fdocs\u002Fdevice-agent\u002Fquickstart\u002F",{"edge":309,"hub":347,"fleet":309},{"id":387,"title":388,"description":389,"docsLink":390,"tiers":391},"private-npm-registry","Custom Node-RED Nodes","Create and manage your own private npm registry for Node-RED nodes, so you can share custom nodes across your team and devices without publishing them publicly.","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages\u002F",{"edge":309,"hub":309,"fleet":309},{"id":393,"title":394,"description":395,"docsLink":396,"changelog":397,"tiers":401},"flowfuse-tables","FlowFuse Tables","A managed PostgreSQL database for every application, so you can store and query structured data without standing up and maintaining your own database.","\u002Fdocs\u002Fuser\u002Fff-tables\u002F",[398],{"url":399,"release":400},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-tables-automation\u002F","2.33",{"edge":309,"hub":309,"fleet":309},{"id":403,"title":404,"description":405,"docsLink":406,"tiers":407},"persistent-files","File Storage","Store and retrieve files from your Node-RED flows, with automatic replication and backup across your devices and hosted instances.","\u002Fdocs\u002Finstall\u002Ffile-storage\u002F",{"edge":309,"hub":309,"fleet":309},{"id":409,"title":410,"description":411,"docsLink":412,"showOnPricing":347,"tiers":413},"persistent-context","Persistent Context","In-memory values defined in a Node-RED flow persist across project restarts and upgrades.","\u002Fdocs\u002Fuser\u002Fpersistent-context\u002F",{"edge":309,"hub":309,"fleet":309},{"id":415,"title":416,"showOnPricing":347,"tiers":417},"static-assets","Static Assets",{"edge":309,"hub":309,"fleet":309},{"id":419,"title":420,"description":421,"docsLink":422,"tiers":423},"team-library","Team Library","Set up standard nodes and flows that can be shared with all team members across your organisation.","\u002Fdocs\u002Fuser\u002Fshared-library\u002F",{"edge":309,"hub":309,"fleet":309},{"id":425,"title":426,"description":427,"docsLink":428,"tiers":429},"personalised-multi-user-dashboards","Personalised Multi-User Dashboards","Build applications that provide unique data to each logged-in user using personalised multi-user dashboards.","https:\u002F\u002Fdashboard.flowfuse.com\u002Fuser\u002Fmulti-tenancy.html",{"edge":309,"hub":309,"fleet":309},{"id":431,"title":432,"description":433,"changelog":434,"subfeature":309,"showOnPricing":347,"tiers":437},"dashboards-view","Dashboards View","Browse and open every dashboard across your team from a dedicated Dashboards view, at both team and application level, without leaving FlowFuse.",[435],{"url":436,"release":400},"\u002Fchangelog\u002F2026\u002F07\u002Fteam-and-application-dashboards\u002F",{"edge":309,"hub":309,"fleet":309},{"id":439,"title":440,"description":441,"docsLink":442,"tiers":443},"blueprints-converge","Blueprints","Ready-made starting points for your apps, from cross-team Converge templates to OT and IT specific blueprints.","\u002Fdocs\u002Fuser\u002Fconcepts\u002F#blueprint",{"edge":309,"hub":309,"fleet":309},{"id":445,"title":446,"subfeature":309,"showOnPricing":347,"tiers":447},"blueprints-ot-apps","Blueprints - OT APPS",{"edge":309,"hub":347,"fleet":309},{"id":449,"title":450,"subfeature":309,"showOnPricing":347,"tiers":451},"blueprints-it-apps","Blueprints - IT APPS",{"edge":347,"hub":309,"fleet":347},{"id":453,"title":454,"description":455,"changelog":456,"showOnPricing":347,"tiers":460},"immersive-editor-snapshots","Snapshot Details in Immersive Editor","View and manage snapshot details directly inside the immersive editor without leaving your editing session.",[457],{"url":458,"release":459},"\u002Fchangelog\u002F2026\u002F03\u002Fsnapshot-detail-modal-immersive-editor\u002F","2.29",{"edge":309,"hub":309,"fleet":309},{"id":462,"title":463,"description":464,"changelog":465,"showOnPricing":347,"tiers":468},"immersive-editor-drawer","Customisable Immersive Editor Drawer","Pin, move, resize, or full-screen the immersive editor drawer. Your preferences are remembered between sessions.",[466],{"url":467,"release":357},"\u002Fchangelog\u002F2026\u002F04\u002Fimmersive-editor-drawer\u002F",{"edge":309,"hub":309,"fleet":309},{"id":470,"title":471,"description":472,"changelog":473,"showOnPricing":347,"tiers":476},"embedded-editor-tab-title","Embedded Editor Browser Tab Title","The browser tab title updates to reflect the active Node-RED canvas tab when working in the embedded editor.",[474],{"url":475,"release":459},"\u002Fchangelog\u002F2026\u002F03\u002Fembedded-editor-tab-title\u002F",{"edge":309,"hub":309,"fleet":309},{"id":478,"title":479,"features":480},"deploy","Deploy",[481,487,496,502,508,514,520,526,531],{"id":482,"title":483,"description":484,"docsLink":485,"tiers":486},"hosted-instances","Cloud Instances","Run Node-RED instances managed and hosted by FlowFuse.","\u002Fdocs\u002Fuser\u002Fintroduction\u002F#creating-a-node-red-instance",{"edge":309,"hub":309,"fleet":309},{"id":488,"title":489,"description":490,"docsLink":491,"changelog":492,"tiers":495},"edge-devices","Edge Instances","Deploy and mange your Node-RED instances on edge PLCs and gateways, with full visibility and control from the cloud.","\u002Fdocs\u002Fdevice-agent\u002Fintroduction\u002F",[493],{"url":494,"release":337},"\u002Fchangelog\u002F2026\u002F02\u002Fdevice-agent-nodejs-options\u002F",{"edge":309,"hub":347,"fleet":309},{"id":497,"title":498,"description":499,"docsLink":500,"tiers":501},"custom-hostnames","Custom Hostnames","Access your Node-RED application via your own domain name.","\u002Fdocs\u002Fuser\u002Fcustom-hostnames\u002F",{"edge":347,"hub":309,"fleet":347},{"id":503,"title":504,"description":505,"docsLink":506,"tiers":507},"mqtt-broker","MQTT Broker","Manage and create MQTT clients to transport data for efficient messaging and communication within your applications.","\u002Fdocs\u002Fuser\u002Fteambroker\u002F",{"edge":309,"hub":347,"fleet":309},{"id":509,"title":510,"description":511,"docsLink":512,"showOnPricing":347,"tiers":513},"project-nodes","Project Nodes aka seamless project comms","FlowFuse Project Nodes enable the passing of data and messages between your Node-RED projects.","\u002Fdocs\u002Fuser\u002Fprojectnodes\u002F",{"edge":309,"hub":309,"fleet":309},{"id":515,"title":516,"description":517,"docsLink":518,"tiers":519},"devops-pipelines","DevOps Pipelines","Set up different environments for development, testing, and production Node-RED instances to support a full software delivery lifecycle.","\u002Fdocs\u002Fuser\u002Fdevops-pipelines\u002F",{"edge":309,"hub":309,"fleet":309},{"id":521,"title":522,"description":523,"docsLink":524,"tiers":525},"git-integration","Git Integration","Back up your flows to a remote Git repository through a DevOps Pipeline. Supports GitHub and Azure DevOps repositories.","\u002Fdocs\u002Fuser\u002Fdevops-pipelines\u002F#git-repository-stage",{"edge":347,"hub":309,"fleet":347},{"id":527,"title":528,"description":529,"docsLink":524,"subfeature":309,"showOnPricing":347,"tiers":530},"git-integration-github","GitHub","Push and pull snapshots to GitHub repositories through DevOps Pipeline Git Stages.",{"edge":347,"hub":309,"fleet":347},{"id":532,"title":533,"description":534,"docsLink":524,"changelog":535,"subfeature":309,"showOnPricing":347,"tiers":538},"git-integration-azure","Azure DevOps","Push and pull snapshots to Azure DevOps repositories through DevOps Pipeline Git Stages.",[536],{"url":537,"release":459},"\u002Fchangelog\u002F2026\u002F03\u002Fazure-dev-ops-gitops\u002F",{"edge":347,"hub":309,"fleet":347},{"id":540,"title":541,"features":542},"operate-maintain","Operate & Maintain",[543,549,555,560,568,572,576,581,587,593,598,604,608,612],{"id":544,"title":545,"description":546,"docsLink":547,"tiers":548},"snapshots","Snapshots & Version History","Automatic snapshots on remote devices and hosted instances, plus a full version history timeline so you can roll back to any prior state.","\u002Fdocs\u002Fuser\u002Fsnapshots\u002F",{"edge":309,"hub":309,"fleet":309},{"id":550,"title":551,"description":552,"docsLink":553,"subfeature":309,"showOnPricing":347,"tiers":554},"auto-snapshot-remote","Auto Snapshot (Remote)","Automatically capture a snapshot every time a remote instance is deployed, so you always have a recoverable history of what was running on each device.","\u002Fdocs\u002Fuser\u002Fsnapshots\u002F#auto-snapshots",{"edge":309,"hub":309,"fleet":309},{"id":556,"title":557,"description":558,"docsLink":553,"subfeature":309,"showOnPricing":347,"tiers":559},"auto-snapshot-hosted","Auto Snapshot (Hosted)","Automatically capture a snapshot every time a hosted instance is deployed, so you always have a recoverable history of what was running.",{"edge":309,"hub":309,"fleet":309},{"id":561,"title":562,"description":563,"changelog":564,"subfeature":309,"showOnPricing":347,"tiers":567},"snapshot-comparison","Snapshot Comparison","Compare two snapshots side-by-side with a navigable diff view. Step through every changed, added, or deleted node and see property and code diffs.",[565],{"url":566,"release":459},"\u002Fchangelog\u002F2026\u002F04\u002Fsnapshot-diff-viewer\u002F",{"edge":309,"hub":309,"fleet":309},{"id":569,"title":570,"subfeature":309,"showOnPricing":347,"tiers":571},"version-history-timeline","Version History Timeline",{"edge":309,"hub":309,"fleet":309},{"id":573,"title":574,"tiers":575},"unlimited-workflow-executions","Unlimited Workflow Executions",{"edge":309,"hub":309,"fleet":309},{"id":577,"title":578,"description":579,"tiers":580},"device-fleet-updates","Device Fleet Updates","Connect to edge devices to quickly assess and update logic. Debug one device and roll out improvements to your fleet in minutes, securely without requiring full device access for your whole organisation.",{"edge":309,"hub":347,"fleet":309},{"id":582,"title":583,"description":584,"docsLink":585,"tiers":586},"device-group-management","Device Group Management","Logically group devices assigned to an application and integrate device groups into your DevOps Pipeline for coordinated fleet updates.","\u002Fdocs\u002Fuser\u002Fdevice-groups\u002F",{"edge":309,"hub":347,"fleet":309},{"id":588,"title":589,"description":590,"docsLink":591,"tiers":592},"high-availability","High Availability","Leverage horizontal scaling for reliable and scalable processing of your data through Node-RED.","\u002Fdocs\u002Fuser\u002Fhigh-availability\u002F",{"edge":347,"hub":309,"fleet":347},{"id":594,"title":595,"description":596,"tiers":597},"performance-monitoring","Performance Monitoring & Alerts","Track CPU, memory, and event loop performance across your instances and devices, with email alerts when something needs your attention.",{"edge":309,"hub":309,"fleet":309},{"id":599,"title":600,"description":601,"docsLink":602,"subfeature":309,"showOnPricing":347,"tiers":603},"instance-monitoring","Instance Monitoring","Enable alerts to be sent via email when your Node-RED instances encounter issues.","\u002Fdocs\u002Fuser\u002Finstance-settings\u002F#alerts",{"edge":309,"hub":309,"fleet":309},{"id":605,"title":606,"subfeature":309,"showOnPricing":347,"tiers":607},"email-alerts","Email Alerts",{"edge":309,"hub":309,"fleet":309},{"id":609,"title":610,"showOnPricing":347,"tiers":611},"api-debug-length-limit","API\u002FDebug Length Limit",{"edge":309,"hub":309,"fleet":309},{"id":613,"title":614,"tiers":615},"protected-instances","Protected Instances",{"edge":347,"hub":309,"fleet":347},{"id":617,"title":618,"features":619},"govern-secure","Govern and Secure",[620,629,635,641,646,652,658,664,672,678,684,690],{"id":621,"title":622,"description":623,"docsLink":624,"changelog":625,"tiers":628},"single-sign-on","Single Sign-On (SSO)","Configure FlowFuse to work with your own SSO provider, allowing users to access FlowFuse with a single set of login credentials.","\u002Fdocs\u002Fadmin\u002Fsso\u002F",[626],{"url":627,"release":400},"\u002Fchangelog\u002F2026\u002F07\u002Fapplication-sso-groups\u002F",{"edge":309,"hub":309,"fleet":309},{"id":630,"title":631,"description":632,"docsLink":633,"tiers":634},"two-factor-authentication","Two-Factor Authentication","Two-factor authentication adds an extra layer of security to your FlowFuse account.","\u002Fdocs\u002Fuser\u002Fuser-settings\u002F#two-factor-authentication",{"edge":309,"hub":309,"fleet":309},{"id":636,"title":637,"description":638,"docsLink":639,"tiers":640},"certified-nodes-it","Certified Nodes - IT","IT certified node bundle includes: Redis, MQTT, HTTP Request, AI nodes (Gemini, Claude, ChatGPT, Ollama), MCP Server","\u002Fblog\u002F2025\u002F07\u002Fcertified-nodes-v2\u002F",{"edge":347,"hub":309,"fleet":309},{"id":642,"title":643,"description":644,"tiers":645},"certified-nodes-ot","Certified OT Connections - OPC-UA, Modbus, etc.","OT certified node bundle includes: OPC-UA, Modbus TCP & RTU, RTSP, EtherNet\u002FIP, AI nodes (Gemini, Claude, ChatGPT, Ollama), MCP Server",{"edge":309,"hub":347,"fleet":347},{"id":647,"title":648,"description":649,"docsLink":650,"tiers":651},"audit-log","Audit Log","Keep track of everything going on in your Node-RED instances and FlowFuse. Audit Logs provide details on what actions have taken place, when they happened, and who did them.","\u002Fdocs\u002Fuser\u002Flogs\u002F#audit-log",{"edge":309,"hub":309,"fleet":309},{"id":653,"title":654,"description":655,"docsLink":656,"tiers":657},"role-based-access-control","Role-Based Access Control","Control who can do what at both the team and application level, from viewers to admins.","\u002Fdocs\u002Fuser\u002Frole-based-access-control\u002F",{"edge":309,"hub":309,"fleet":309},{"id":659,"title":660,"description":661,"docsLink":662,"subfeature":309,"showOnPricing":347,"tiers":663},"application-level-rbac","Application-Level RBAC","Fine-grained access control per application, allowing team members to have different permission levels across different applications without requiring separate teams.","\u002Fdocs\u002Fuser\u002Frole-based-access-control\u002F#application-level-rbac",{"edge":309,"hub":309,"fleet":309},{"id":665,"title":666,"description":667,"changelog":668,"subfeature":309,"showOnPricing":347,"tiers":671},"scoped-personal-access-tokens","Scoped Personal Access Tokens","Restrict a Personal Access Token to specific teams, limit it to read-only operations, or control whether it carries admin privileges.",[669],{"url":670,"release":400},"\u002Fchangelog\u002F2026\u002F07\u002Fscoped-pats\u002F",{"edge":309,"hub":309,"fleet":309},{"id":673,"title":674,"description":675,"docsLink":676,"showOnPricing":347,"tiers":677},"team-members","Team Members","Invite multiple team members to collaborate on the same Node-RED flows.","\u002Fdocs\u002Fuser\u002Fteam\u002F#teams",{"edge":309,"hub":309,"fleet":309},{"id":679,"title":680,"description":681,"docsLink":682,"showOnPricing":347,"tiers":683},"endpoint-security","Endpoint Security","Secure HTTP endpoints for hosted Node-RED instances using FlowFuse credentials.","\u002Fdocs\u002Fuser\u002Finstance-settings\u002F#security",{"edge":309,"hub":309,"fleet":309},{"id":685,"title":686,"description":687,"docsLink":688,"tiers":689},"baa-for-hipaa","BAA for HIPAA","FlowFuse can sign a Business Associate Agreement to ensure proper safeguarding of protected health information handled on your behalf.","\u002Fhandbook\u002Fsales\u002Fsubscription-agreement-1.5\u002F",{"edge":347,"hub":309,"fleet":347},{"id":691,"title":692,"description":693,"tiers":694},"sbom","Software Bill of Materials","A complete list of all software components used in your Node-RED instances and hosted applications, including version numbers and license information.",{"edge":347,"hub":309,"fleet":347},{"id":696,"title":697,"features":698},"support","Support",[699,704,708],{"id":700,"title":701,"docsLink":702,"tiers":703},"installation-support","Installation Support","\u002Fdocs\u002Finstall\u002Fintroduction\u002F#do-you-need-help-installation-service",{"edge":309,"hub":309,"fleet":309},{"id":705,"title":706,"showOnPricing":347,"tiers":707},"live-chat-support","Live Chat Support",{"edge":309,"hub":309,"fleet":309},{"id":709,"title":710,"docsLink":711,"tiers":712},"enterprise-support","Enterprise Support","\u002Fdocs\u002Fpremium-support\u002F",{"edge":309,"hub":309,"fleet":309},"feature-catalog","0AnkhTIPCECCwP9NmbTWP5HvRYx4FTSao4lG93-HaWM",[716,719,722,725,728,731,733,736,739,742,745,747,750,753,756,759,762,765,768,771,774,777,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,860,863,866,869,872,875,878,881,883,886,889,892,895,898,900,903,906,909,912,915,918,921,924,927,930,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1032,1035,1038,1041,1044,1047,1050,1053,1055,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085,1088,1091,1094,1097,1100,1103,1106,1109,1112,1115,1118,1121,1124,1127,1130,1133,1136,1139,1142,1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199,1202,1205,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246],{"path":717,"title":718},"\u002Fchangelog\u002F2023\u002F09\u002Fcustom-node-support","Custom Node Support",{"path":720,"title":721},"\u002Fchangelog\u002F2023\u002F09\u002Fdevops-actions","DevOps Pipeline with action selection",{"path":723,"title":724},"\u002Fchangelog\u002F2023\u002F09\u002Fintroduction-enterprise-tier","Introducing the Enterprise Tier",{"path":726,"title":727},"\u002Fchangelog\u002F2023\u002F09\u002Fpipeline-api","API Endpoint for DevOps Pipeline",{"path":729,"title":730},"\u002Fchangelog\u002F2023\u002F09\u002Fsnapshots-devices","Usability improvements to Device Management",{"path":732,"title":440},"\u002Fchangelog\u002F2023\u002F10\u002Fblueprints",{"path":734,"title":735},"\u002Fchangelog\u002F2023\u002F10\u002Fcertified-nodes","Certified Nodes",{"path":737,"title":738},"\u002Fchangelog\u002F2023\u002F10\u002Fdevice-snapshot-selection","Enhanced Snapshot Selection",{"path":740,"title":741},"\u002Fchangelog\u002F2023\u002F10\u002Fpath-bug-fix","Device Agent path bug fix",{"path":743,"title":744},"\u002Fchangelog\u002F2023\u002F10\u002Fresource-alerts","Resource Monitoring in Audit Log",{"path":746,"title":631},"\u002Fchangelog\u002F2023\u002F11\u002F2fa",{"path":748,"title":749},"\u002Fchangelog\u002F2023\u002F11\u002Fdefault-editor","Device Editor enabled by default",{"path":751,"title":752},"\u002Fchangelog\u002F2023\u002F11\u002Fdevices-in-pipelines","Devices in DevOps Pipelines",{"path":754,"title":755},"\u002Fchangelog\u002F2023\u002F11\u002Fproject-nodes-devices","Project Nodes for Devices",{"path":757,"title":758},"\u002Fchangelog\u002F2023\u002F12\u002Fbilling","No Credit Card required for billing",{"path":760,"title":761},"\u002Fchangelog\u002F2023\u002F12\u002Fblueprint-selection","Blueprint Selection Update",{"path":763,"title":764},"\u002Fchangelog\u002F2023\u002F12\u002Fdevice-groups","Device Groups",{"path":766,"title":767},"\u002Fchangelog\u002F2023\u002F12\u002Femail-alerting-node-red-crash","Email Alerts for Audit Log Events",{"path":769,"title":770},"\u002Fchangelog\u002F2023\u002F12\u002Fnode-red-updated","Node-RED 3.1.3 now available",{"path":772,"title":773},"\u002Fchangelog\u002F2024\u002F01\u002Fdevice-audit-log","Introducing the Device Auditlog Feature",{"path":775,"title":776},"\u002Fchangelog\u002F2024\u002F01\u002Fdevice-groups-snapshot","Device Groups - Automatic snapshot assignment",{"path":778,"title":779},"\u002Fchangelog\u002F2024\u002F01\u002Ffleet-mode","Renaming \"Default Device Mode\" to \"Fleet Mode\"",{"path":781,"title":782},"\u002Fchangelog\u002F2024\u002F01\u002Fhelm-v2","Helm Chart v2.0",{"path":784,"title":785},"\u002Fchangelog\u002F2024\u002F01\u002Fnew-blueprints","New Blueprints added",{"path":787,"title":788},"\u002Fchangelog\u002F2024\u002F01\u002Fsecurity-updates","Security Updates",{"path":790,"title":791},"\u002Fchangelog\u002F2024\u002F01\u002Fsso-team-membership","Managing Team Membership via SSO",{"path":793,"title":794},"\u002Fchangelog\u002F2024\u002F01\u002Fstreamlined-device-assignment","Streamlined Device assignment",{"path":796,"title":797},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-auto-snapshot","Device Auto Snapshots",{"path":799,"title":800},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-instance-audit-logs","Device Instance Audit Logging",{"path":802,"title":803},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-onboarding-improvements","Device Onboarding Improvements",{"path":805,"title":806},"\u002Fchangelog\u002F2024\u002F02\u002Fdevice-pricing-change","Pricing change for Devices",{"path":808,"title":809},"\u002Fchangelog\u002F2024\u002F02\u002Finstance-auto-snapshots","Instance Auto Snapshots",{"path":811,"title":812},"\u002Fchangelog\u002F2024\u002F02\u002Fpostgresql-upgrade","PostgreSQL Version update",{"path":814,"title":815},"\u002Fchangelog\u002F2024\u002F03\u002Fbearer-token-authentication","Bearer Token Authentication for Node-RED Instances",{"path":817,"title":818},"\u002Fchangelog\u002F2024\u002F03\u002Finstance-protection-mode","Instance Protection Mode",{"path":820,"title":821},"\u002Fchangelog\u002F2024\u002F03\u002Flimits-debug-payload","Configure HTTP Payload and Debug Message size",{"path":823,"title":824},"\u002Fchangelog\u002F2024\u002F03\u002Frestart-devices-remotly","Remote Device Restart",{"path":826,"title":827},"\u002Fchangelog\u002F2024\u002F04\u002Fcustom-nodes-on-devices","Custom Nodes Support on Devices",{"path":829,"title":830},"\u002Fchangelog\u002F2024\u002F04\u002Fdevice-auto-snapshot","Direct Dashboard Access",{"path":832,"title":833},"\u002Fchangelog\u002F2024\u002F04\u002Fimproving-device-groups","Improving Device Groups",{"path":835,"title":836},"\u002Fchangelog\u002F2024\u002F04\u002Fpricing-change","Pricing change Enterprise & Teams Tier",{"path":838,"title":839},"\u002Fchangelog\u002F2024\u002F04\u002Ftougher-rate-limiting","Tougher Rate Limiting on Public Routes",{"path":841,"title":842},"\u002Fchangelog\u002F2024\u002F05\u002Finstance-healthcheck","Customizing instance health-check settings",{"path":844,"title":845},"\u002Fchangelog\u002F2024\u002F05\u002Flibrary-blueprints","Blueprints added to Library",{"path":847,"title":848},"\u002Fchangelog\u002F2024\u002F05\u002Flibrary-flowviewer","Team Library - Flow Viewer",{"path":850,"title":851},"\u002Fchangelog\u002F2024\u002F05\u002Fmanaging-node-red-version-on-devices","Managing Node-RED versions on Devices",{"path":853,"title":854},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-improvements","Snapshot Improvements",{"path":856,"title":857},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-improvements-pt3","Snapshot Upload",{"path":859,"title":857},"\u002Fchangelog\u002F2024\u002F05\u002Fsnapshot-upload",{"path":861,"title":862},"\u002Fchangelog\u002F2024\u002F06\u002Fdevice-agent-proxy-support","Running the Device Agent behind an HTTP proxy",{"path":864,"title":865},"\u002Fchangelog\u002F2024\u002F06\u002Flibrary-blueprints","Custom hostnames for your instances",{"path":867,"title":868},"\u002Fchangelog\u002F2024\u002F06\u002Fmultiline-env-vars","Multi-line Environment Variables",{"path":870,"title":871},"\u002Fchangelog\u002F2024\u002F06\u002Fsnapshot-flow-compare","Compare Snapshots flows",{"path":873,"title":874},"\u002Fchangelog\u002F2024\u002F07\u002Fapplications-search","Applications Search",{"path":876,"title":877},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-group-clear-snapshot","Device Groups Snapshots",{"path":879,"title":880},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-management-bulk-delete","Managing devices",{"path":882,"title":880},"\u002Fchangelog\u002F2024\u002F07\u002Fdevice-management-bulk-move",{"path":884,"title":885},"\u002Fchangelog\u002F2024\u002F07\u002Fedit-snapshots","Edit Snapshots",{"path":887,"title":888},"\u002Fchangelog\u002F2024\u002F07\u002Fflowfuse-assistant","The FlowFuse Expert",{"path":890,"title":891},"\u002Fchangelog\u002F2024\u002F07\u002Fflowfuse-assistant-json","FlowFuse Expert Writes JSON",{"path":893,"title":894},"\u002Fchangelog\u002F2024\u002F07\u002Fimmersive-editor","Immersive Editor Experience",{"path":896,"title":897},"\u002Fchangelog\u002F2024\u002F07\u002Fnotifications-inbox","Notifications Inbox",{"path":899,"title":897},"\u002Fchangelog\u002F2024\u002F07\u002Fnotifications-update",{"path":901,"title":902},"\u002Fchangelog\u002F2024\u002F07\u002Fpersistent-storage","Persistent Storage on FlowFuse Cloud",{"path":904,"title":905},"\u002Fchangelog\u002F2024\u002F07\u002Fsso","Single Sign On Updates",{"path":907,"title":908},"\u002Fchangelog\u002F2024\u002F08\u002Fbill-of-materials","Bill of Materials",{"path":910,"title":911},"\u002Fchangelog\u002F2024\u002F08\u002Fenterprise-license-update","Enforcing Enterprise Restrictions",{"path":913,"title":914},"\u002Fchangelog\u002F2024\u002F08\u002Fldap-sso-groups","LDAP Single Sign On Updates",{"path":916,"title":917},"\u002Fchangelog\u002F2024\u002F08\u002Fstatic-file-service-navigation-visibility","Static File Service Navigation and Visibility",{"path":919,"title":920},"\u002Fchangelog\u002F2024\u002F10\u002Fdevice-group-env-vars","Environment Variables for your Device Groups",{"path":922,"title":923},"\u002Fchangelog\u002F2024\u002F10\u002Fmqtt-service","MQTT Broker Service",{"path":925,"title":926},"\u002Fchangelog\u002F2024\u002F10\u002Fnotifications-bulk-actions","Managing Notifications",{"path":928,"title":929},"\u002Fchangelog\u002F2024\u002F10\u002Fsnapshot-download-upload-options","Snapshot Upload and Download Improvements",{"path":931,"title":570},"\u002Fchangelog\u002F2024\u002F10\u002Fversion-history-timeline",{"path":933,"title":934},"\u002Fchangelog\u002F2024\u002F11\u002Faudit-log-hierarchy","Audit logs show hierarchical events",{"path":936,"title":937},"\u002Fchangelog\u002F2024\u002F11\u002Fdevice-agent-release","Device Agent 3.0 released",{"path":939,"title":940},"\u002Fchangelog\u002F2024\u002F11\u002Fmqtt-topic-hierarchy","MQTT Topic Hierarchy view",{"path":942,"title":943},"\u002Fchangelog\u002F2024\u002F11\u002Fteam-search","Team-wide search",{"path":945,"title":946},"\u002Fchangelog\u002F2024\u002F12\u002Fdashboad-iframe","Allow Dashboards to be embedded in iFrames",{"path":948,"title":949},"\u002Fchangelog\u002F2024\u002F12\u002Fdevice-editor-cache","Device Editor Access Speed Up",{"path":951,"title":952},"\u002Fchangelog\u002F2024\u002F12\u002Fteam-bom-timeline","Team BOM and Pipeline Views",{"path":954,"title":955},"\u002Fchangelog\u002F2025\u002F01\u002Ffree-tier-onboarding","New Onboarding Tour for Free Tier Users",{"path":957,"title":958},"\u002Fchangelog\u002F2025\u002F01\u002Fhidden-env-vars","Hidden Environment Variables",{"path":960,"title":961},"\u002Fchangelog\u002F2025\u002F01\u002Fimproved-diagnostics","Improved Diagnostics",{"path":963,"title":964},"\u002Fchangelog\u002F2025\u002F01\u002Fteam-level-groups","Team level view of Groups",{"path":966,"title":967},"\u002Fchangelog\u002F2025\u002F02\u002Fadditional-device-version-history-events","New Remote Instances Version History Events",{"path":969,"title":970},"\u002Fchangelog\u002F2025\u002F02\u002Fbroker-error-feedback","Improved Broker Connection Feedback",{"path":972,"title":973},"\u002Fchangelog\u002F2025\u002F02\u002Fdevice-agent-updates","FlowFuse User Authentication on Remote Instances",{"path":975,"title":570},"\u002Fchangelog\u002F2025\u002F02\u002Fdevice-version-history-timeline",{"path":977,"title":978},"\u002Fchangelog\u002F2025\u002F02\u002Fexternal-brokers","External MQTT Brokers",{"path":980,"title":981},"\u002Fchangelog\u002F2025\u002F02\u002Fmqtt-schema-suggestions","MQTT Smart Schema Suggestions",{"path":983,"title":984},"\u002Fchangelog\u002F2025\u002F02\u002Fresend-and-extend-team-invitation-expiration","Re-send Team Invitations",{"path":986,"title":987},"\u002Fchangelog\u002F2025\u002F02\u002Fschema-docs","Personalized Schema Documentation",{"path":989,"title":990},"\u002Fchangelog\u002F2025\u002F02\u002Ftopic-hierarchy-search","Search & Filter for Topic Hierarchy List",{"path":992,"title":993},"\u002Fchangelog\u002F2025\u002F03\u002Fcontainer-tags","Changes to tags for flowfuse\u002Fnode-red",{"path":995,"title":996},"\u002Fchangelog\u002F2025\u002F03\u002Fdevice-groups","Multiple Device Groups in a pipeline",{"path":998,"title":999},"\u002Fchangelog\u002F2025\u002F03\u002Fdevice-local-login","Local Login for Remote Instances",{"path":1001,"title":1002},"\u002Fchangelog\u002F2025\u002F03\u002Ffree-tier","Free Tier now more accessible to all",{"path":1004,"title":1005},"\u002Fchangelog\u002F2025\u002F03\u002Fresource-notifications","Resource Alerts",{"path":1007,"title":1008},"\u002Fchangelog\u002F2025\u002F03\u002Fsnapshot-filter","Filtering Snapshots",{"path":1010,"title":1011},"\u002Fchangelog\u002F2025\u002F03\u002Fteam-npm-registry","NPM Package Hosting",{"path":1013,"title":1014},"\u002Fchangelog\u002F2025\u002F03\u002Ftopic-deletion","MQTT Topic Management",{"path":1016,"title":1017},"\u002Fchangelog\u002F2025\u002F04\u002Fdevice-provisioning","Remote Instance Provisioning",{"path":1019,"title":1020},"\u002Fchangelog\u002F2025\u002F04\u002Fgit-integration","Git Integration with Pipelines",{"path":1022,"title":1023},"\u002Fchangelog\u002F2025\u002F04\u002Finstance-log-browsing","Better Node-RED log handling",{"path":1025,"title":1026},"\u002Fchangelog\u002F2025\u002F05\u002Fimport-node-red-flows","Import Node-RED Flows During Remote Instance Setup",{"path":1028,"title":1029},"\u002Fchangelog\u002F2025\u002F06\u002Fflowfuse-assistant","FlowFuse Expert just got smarter",{"path":1031,"title":1029},"\u002Fchangelog\u002F2025\u002F06\u002Fflowfuse-assistant-2",{"path":1033,"title":1034},"\u002Fchangelog\u002F2025\u002F06\u002Fgit-integration","Pulling snapshots from Git with Pipelines",{"path":1036,"title":1037},"\u002Fchangelog\u002F2025\u002F06\u002Finstance-performance-memory","Memory Metrics in Instance Performance View",{"path":1039,"title":1040},"\u002Fchangelog\u002F2025\u002F06\u002Fnew-home-page","Introducing the New Home Page Experience",{"path":1042,"title":1043},"\u002Fchangelog\u002F2025\u002F06\u002Fteam-performance","Team Performance Feature",{"path":1045,"title":1046},"\u002Fchangelog\u002F2025\u002F06\u002Fteam-performance-view","Instance Performance View",{"path":1048,"title":1049},"\u002Fchangelog\u002F2025\u002F06\u002Fui-refresh","Navigation UI Refresh",{"path":1051,"title":1052},"\u002Fchangelog\u002F2025\u002F07\u002Fbrowse-node-red-flows","Browse for Node-RED Flows During Remote Instance Setup",{"path":1054,"title":394},"\u002Fchangelog\u002F2025\u002F07\u002Fflowfuse-tables",{"path":1056,"title":1057},"\u002Fchangelog\u002F2025\u002F07\u002Fimport-blueprints","Import blueprints directly into your existing instances",{"path":1059,"title":1060},"\u002Fchangelog\u002F2025\u002F07\u002Fsimplified-applications-overview","Simplified Applications Page with Summary Tiles",{"path":1062,"title":1063},"\u002Fchangelog\u002F2025\u002F07\u002Fsmart-suggestions","Smart Suggestions",{"path":1065,"title":1066},"\u002Fchangelog\u002F2025\u002F07\u002Fteam-to-pro-plan-rename","Team Plan Renamed to Pro Plan",{"path":1068,"title":1069},"\u002Fchangelog\u002F2025\u002F08\u002Fai-generated-snapshot-descriptions-hosted","Generate snapshot descriptions with AI",{"path":1071,"title":1072},"\u002Fchangelog\u002F2025\u002F08\u002Fai-generated-snapshot-descriptions-remote","AI Snapshot Descriptions Now Work with Remote Instances",{"path":1074,"title":1075},"\u002Fchangelog\u002F2025\u002F08\u002Fdevice-performance","FlowFuse Remote Instance Performance Data",{"path":1077,"title":1078},"\u002Fchangelog\u002F2025\u002F08\u002Fdirect-sso","Direct SSO Login",{"path":1080,"title":1081},"\u002Fchangelog\u002F2025\u002F08\u002Fflowfuse-assistant","FlowFuse Expert documents your flows",{"path":1083,"title":1084},"\u002Fchangelog\u002F2025\u002F08\u002Fflowfuse-mqtt","FlowFuse MQTT",{"path":1086,"title":1087},"\u002Fchangelog\u002F2025\u002F08\u002Fhttp-cors","Configure HTTP CORS",{"path":1089,"title":1090},"\u002Fchangelog\u002F2025\u002F08\u002Fsubflow-export","Export SubFlow as Node-RED module",{"path":1092,"title":1093},"\u002Fchangelog\u002F2025\u002F08\u002Ftables-assistant","FlowFuse Tables with a little help from the Assistant",{"path":1095,"title":1096},"\u002Fchangelog\u002F2025\u002F09\u002Fexpose-saml-groups-to-dashboard","Allow SSO groups to be shared with the Node-RED Dashboard",{"path":1098,"title":1099},"\u002Fchangelog\u002F2025\u002F09\u002Finline-assist","FlowFuse Expert can help you write code",{"path":1101,"title":1102},"\u002Fchangelog\u002F2025\u002F09\u002Fretiring-flowforge-device-agent","No more @flowforge\u002Fflowforge-device-agent releases",{"path":1104,"title":1105},"\u002Fchangelog\u002F2025\u002F09\u002Frevised-instance-snapshot-ui","Streamlined Snapshot Management",{"path":1107,"title":1108},"\u002Fchangelog\u002F2025\u002F09\u002Fteam-broker-async-api","Capture Async API data from FlowFuse Team Broker",{"path":1110,"title":1111},"\u002Fchangelog\u002F2025\u002F10\u002Fapplication-level-rbac","Application-level access control for Enterprise teams",{"path":1113,"title":1114},"\u002Fchangelog\u002F2025\u002F10\u002Fbulk-device-group-assignment","Easier Access to Bulk Device Group Management",{"path":1116,"title":1117},"\u002Fchangelog\u002F2025\u002F10\u002Fduplicate-instances-across-applications","Duplicate Instances Across Different Applications",{"path":1119,"title":1120},"\u002Fchangelog\u002F2025\u002F10\u002Fimport-flows-on-instance-creation","Import flows during instance creation",{"path":1122,"title":1123},"\u002Fchangelog\u002F2025\u002F10\u002Fmcp-nodes","FlowFuse MCP Server Nodes",{"path":1125,"title":1126},"\u002Fchangelog\u002F2025\u002F10\u002Fonnx-nodes","FlowFuse AI Nodes",{"path":1128,"title":1129},"\u002Fchangelog\u002F2025\u002F10\u002Fsettings-page-device-group-management","Device Group Management from Settings Page",{"path":1131,"title":1132},"\u002Fchangelog\u002F2025\u002F11\u002Fff-expert-update","FlowFuse Expert Update",{"path":1134,"title":1135},"\u002Fchangelog\u002F2025\u002F11\u002Fminimum-nodejs-version","Node.js v20 Minimum Version Requirement",{"path":1137,"title":1138},"\u002Fchangelog\u002F2025\u002F11\u002Fsso-session","SSO control over Session life",{"path":1140,"title":1141},"\u002Fchangelog\u002F2025\u002F12\u002Fff-expert-mcp-insights","FlowFuse Expert: Now with MCP-Powered Insights",{"path":1143,"title":1144},"\u002Fchangelog\u002F2025\u002F12\u002Fscheduled-maintenance","Scheduled Maintenance Mode",{"path":1146,"title":1147},"\u002Fchangelog\u002F2026\u002F01\u002Fdevice-agent-containers","Device Agent Docker Containers updated",{"path":1149,"title":1150},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-manage-palette","FlowFuse Expert: Enhanced Palette Integration",{"path":1152,"title":1153},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-nr-actions","FlowFuse Expert: Integration with Node-RED",{"path":1155,"title":1156},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-palette-queries","FlowFuse Expert: Palette Queries",{"path":1158,"title":1159},"\u002Fchangelog\u002F2026\u002F01\u002Fff-expert-select-flows","FlowFuse Expert: Ask about your flows",{"path":1161,"title":1162},"\u002Fchangelog\u002F2026\u002F01\u002Fmcp-rbacs","FlowFuse Expert: MCP-Powered Insights with RBACs",{"path":1164,"title":1165},"\u002Fchangelog\u002F2026\u002F01\u002Fmcp-security","FlowFuse Expert: MCP-Powered Insights",{"path":1167,"title":1168},"\u002Fchangelog\u002F2026\u002F02\u002Fdevice-agent-nodejs-options","Set Node.js Options for Remote Instances",{"path":1170,"title":1171},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-debug-log-context","FlowFuse Expert: Helping you make sense of your debug log",{"path":1173,"title":1174},"\u002Fchangelog\u002F2026\u002F02\u002Fff-expert-update-banner","FlowFuse Expert: Never Miss an Update",{"path":1176,"title":1177},"\u002Fchangelog\u002F2026\u002F02\u002Fha-instance-rolling-restart","HA Hosted Instance Rolling Restart",{"path":1179,"title":1180},"\u002Fchangelog\u002F2026\u002F02\u002Fremote-instances-immersive-editor","Immersive Mode for Remote Instances",{"path":1182,"title":1183},"\u002Fchangelog\u002F2026\u002F02\u002Frestoring-snapshots-to-remote-instances","Restoring snapshots to developer-mode Remote Instances",{"path":1185,"title":1186},"\u002Fchangelog\u002F2026\u002F03\u002Fazure-dev-ops-gitops","Azure DevOps Pipeline support",{"path":1188,"title":1189},"\u002Fchangelog\u002F2026\u002F03\u002Fdeveloper-mode-in-immersive-editor","Developer Mode Now Accessible from the Immersive Editor",{"path":1191,"title":1192},"\u002Fchangelog\u002F2026\u002F03\u002Fembedded-editor-tab-title","Embedded Editor Now Shows Active Tab",{"path":1194,"title":1195},"\u002Fchangelog\u002F2026\u002F03\u002Fmarch-scheduled-maintenance","Updated: Upcoming Scheduled Server Maintenance on March 28th, 2026",{"path":1197,"title":1198},"\u002Fchangelog\u002F2026\u002F03\u002Fsnapshot-detail-modal-immersive-editor","View Snapshot Details in the Immersive Editor",{"path":1200,"title":1201},"\u002Fchangelog\u002F2026\u002F04\u002Fexpert-action-links","FlowFuse expert action links",{"path":1203,"title":1204},"\u002Fchangelog\u002F2026\u002F04\u002Fhosted-instance-url-env-var","Hosted Instances know their own URL",{"path":1206,"title":463},"\u002Fchangelog\u002F2026\u002F04\u002Fimmersive-editor-drawer",{"path":1208,"title":1209},"\u002Fchangelog\u002F2026\u002F04\u002Fsnapshot-diff-viewer","Richer snapshot comparison view",{"path":1211,"title":1212},"\u002Fchangelog\u002F2026\u002F05\u002Fai-opt-out","AI Feature Opt-Out for Teams",{"path":1214,"title":1215},"\u002Fchangelog\u002F2026\u002F05\u002Fexpert-application-building","FlowFuse Expert Builds Your Application",{"path":1217,"title":1218},"\u002Fchangelog\u002F2026\u002F05\u002Fsingle-sso-provider","Single SSO provider for all users",{"path":1220,"title":1221},"\u002Fchangelog\u002F2026\u002F06\u002Fdark-mode","Dark Mode",{"path":1223,"title":1224},"\u002Fchangelog\u002F2026\u002F06\u002Fdevice-agent-v4-released","Device Agent v4 released",{"path":1226,"title":1227},"\u002Fchangelog\u002F2026\u002F06\u002Fgeneric-git-server-support","Connect Pipelines to Any Git Server",{"path":1229,"title":1230},"\u002Fchangelog\u002F2026\u002F06\u002Fjuly-scheduled-maintenance","Updated: Upcoming Scheduled Server Maintenance on July 11th, 2026",{"path":1232,"title":1233},"\u002Fchangelog\u002F2026\u002F07\u002Fapplication-sso-groups","Application Roles from SSO Groups",{"path":1235,"title":1236},"\u002Fchangelog\u002F2026\u002F07\u002Fdevice-agent-onboarding","Getting started with FlowFuse straight from the terminal",{"path":1238,"title":1239},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-enhancements","FlowFuse Expert Enhancements",{"path":1241,"title":1242},"\u002Fchangelog\u002F2026\u002F07\u002Fexpert-tables-automation","FlowFuse Expert Can Now Work With Your Tables",{"path":1244,"title":1245},"\u002Fchangelog\u002F2026\u002F07\u002Fscoped-pats","Team Scoped Personal Access Tokens",{"path":1247,"title":1248},"\u002Fchangelog\u002F2026\u002F07\u002Fteam-and-application-dashboards","A Dedicated Home for Your Dashboards",[],1786105900480]