Legacy node access in n8n
Why deprecated $node, $item, and other legacy patterns should be updated
What is this issue?
n8n has evolved its expression syntax over time. Old patterns like $node['NodeName'].json, $item().$node, and other legacy accessors still work but are deprecated and may be removed in future versions.
Deprecated patterns:
•$node['NodeName'].json instead of $('NodeName').item.json•$item().json instead of $input.item.json•$items() instead of $input.all()•Legacy binary data access patterns
Why is this a problem?
Future incompatibility
Legacy patterns may stop working in future n8n versions.
Inconsistent behavior
New expressions handle edge cases better than legacy ones.
Harder debugging
Documentation and community help focus on modern patterns.
Mixed codebase
Having both old and new patterns creates confusion.
How to fix it
- 1
Use modern node access
Replace $node['Name'].json with $('Name').item.json for cleaner syntax.
- 2
Update input access
Use $input.item, $input.first(), $input.all() instead of legacy $item().
- 3
Use $json shorthand
Access current item data with $json instead of $item(0).json.
- 4
Check migration docs
Review n8n's migration guide for a complete list of deprecated patterns.
Scan your workflow now
Upload your n8n workflow JSON and detect deprecated node access patterns.