Legacy Nodes
Some node types still run, but are no longer offered in the node toolbox. You will only meet them when opening a flow saved by an older build.
This page exists so that a node you cannot find in the toolbox is never a mystery.
Purpose
Explain what each retired node did, what replaced it, and what to do when you find one.
When you need this page
- You opened an older flow and see a node type that is not in the toolbox.
- A flow validates and runs, but you cannot add another node like one it already contains.
- You are modernising an older flow.
The retired node types
| Legacy node | Status | Replacement |
|---|---|---|
Loop (classic) — logic.loop | Runs; not in the toolbox | Loop + Loop End region markers |
Parallel — control.parallelStart | Runs as a pass-through | Monitor Scope |
Parallel End — control.parallelEnd | Runs as a pass-through | Monitor Scope |
Parallel Block — control.parallel | Runs; not in the toolbox | Monitor Scope |
Loop End — control.loopEnd | Not retired — created automatically with a Loop | — |
control.loopEnd is absent from the toolbox because it is created for you when you add a Loop. Every Loop needs its paired Loop End, and the editor manages the pair. It is a normal, current part of the product.
Loop (classic)
The original loop node, which exposed its iteration routing as real ports — enter, exit, limitExceeded — that you wired yourself.
It was replaced by the Loop / Loop End region model, where you draw a plain chain of body nodes and the compiler generates the enter, repeat and exit routing. That change removed the most common authoring mistake in the product: mis-wired back-edges.
If you have one
It still runs. To modernise, replace it with a Loop region:
- Add a Loop node and set the same mode, max iterations, condition and counter variable.
- Wire the body chain from Loop to Loop End.
- Wire what followed
exitto the node after Loop End. - Delete the classic node.
Parallel, Parallel End, Parallel Block
The Parallel family ran several leaf branches against one shared screenshot and merged the results.
It was removed in the Observer Scope redesign, and Monitor Scope is its replacement for the case it was actually used for: watching for something while other work proceeds.
What happens at load time
Canonical Parallel regions are unwrapped automatically on every load path — the markers are removed and the interior chain is spliced through, so the flow keeps working with the interior running sequentially.
A region that cannot be migrated keeps validating and runs the markers as inert pass-throughs, with the interior executing sequentially. That is the same behaviour the migration produces, so the outcome is consistent either way.
Even when it was current, a session executed one node at a time. True concurrency comes from running a flow on multiple instances, or from the Flow Queue — not from a node.
If you inherited a flow using Parallel and expected it to be faster than sequential, it was not.
Branch constraints it carried
For reference, only single-step leaf node types could ever be a parallel branch — the detection nodes, and Click, Swipe, Zoom, Key Press, Input Text and Wait. Control, logic, loop and parallel nodes were excluded because they need multiple runtime steps.
A region was capped at 16 branches.
Deprecated settings
Individual settings are also retired without retiring their node:
| Setting | Node | Status |
|---|---|---|
Wait after click (waitAfterMs) | Click | Ignored by the runtime; removed from the editor. Chain a Wait |
Strength (px) (strengthPx) | Zoom | Accepted only from older flows. New flows use the resolution-independent Zoom factor |
| Start / end points | Swipe | Legacy model; resolution-dependent. Prefer direction + distance, or region mode |
Fixed point (point) | Click | Legacy; the editor migrates it to a Click Region |
| Scope / matched-item variables | Memory Match | Tolerated and ignored; vanish on the next save |
These are all tolerated so an older flow keeps validating and running. None of them should appear in new work.
Best practices
- Do not deliberately author legacy nodes, even where a payload would still validate.
- Modernise when you are already editing. Converting a classic Loop while you are in the flow anyway costs minutes; a dedicated migration project costs days.
- Re-save older flows after opening them — several deprecated settings disappear on save.
- Do not expect Parallel to be fast. Concurrency comes from instances, not nodes.
- Test after modernising. Use Test Flow before putting a converted flow back into a schedule.
Performance notes
- Legacy Parallel markers run as inert pass-throughs — near-zero cost, but they also provide no benefit.
- A classic Loop performs identically to a Loop region; the difference is authoring safety, not speed.
- Deprecated settings that are ignored cost nothing at run time.
Memory notes
- Unwrapping a Parallel region happens at load, on the in-memory graph. Your saved flow is unchanged until you save it.
- Ignored parameters occupy space in the saved flow until the next save removes them.
Common mistakes
| Mistake | What happens | Fix |
|---|---|---|
| Searching the toolbox for Loop End | It is created automatically | Add a Loop |
| Expecting Parallel to run things concurrently | It never did | Use multiple instances or the Queue |
Relying on waitAfterMs | Ignored | Add a Wait node |
| Assuming a legacy flow is broken | It still runs | Modernise when convenient |
| Copying a legacy pattern into a new flow | Carries forward retired concepts | Use the current node |
Troubleshooting
A node in my flow is not in the toolbox. Find it in the table above. It is either retired, or auto-created like Loop End.
My old flow with Parallel runs differently than it used to. The region is unwrapped and the interior runs sequentially — which is what it effectively did before.
A setting I remember is gone from the Properties panel. Check the deprecated-settings table. It is tolerated in storage but no longer shown.
Validation fails on an old flow after an update. Check the run log for the specific error. Most legacy shapes are tolerated deliberately; a genuine failure usually points at a missing asset or an unsupported node type rather than a legacy setting.
FAQ
Will legacy nodes stop working? Removal of the Parallel marker types is a planned cleanup. Modernise when convenient rather than urgently.
Does the app rewrite my flow automatically? Parallel regions are unwrapped in memory on load. Your stored flow changes only when you save.
Is Loop End legacy? No. It is created automatically with a Loop.
Can I still add a Parallel node? Not from the toolbox.
Related pages
- Node Reference — the current node set
- Loop — the current loop model
- Monitor Scope — what replaced Parallel
- Execution Model — why one session runs one node at a time