Code quality

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. 1

    Use modern node access

    Replace $node['Name'].json with $('Name').item.json for cleaner syntax.

  2. 2

    Update input access

    Use $input.item, $input.first(), $input.all() instead of legacy $item().

  3. 3

    Use $json shorthand

    Access current item data with $json instead of $item(0).json.

  4. 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.

Scan for legacy patterns

Related resources

Related code quality issues