Merged
Size
XL
Change Breakdown
Refactor90%
Maintenance10%
#28327refactor(editor): Migrate remaining workflow object usages

Workflow object migration completed across editor

The editor codebase has been refactored to use a new reactive pattern for workflow operations, removing the old class-based approach from dozens of composables and components.

The n8n editor's workflow handling has been modernized. Throughout the codebase, methods like getNode(), getParentNodes(), and getChildNodes() previously relied on a class-based workflowObject. This pattern has been replaced with a reactive workflowDocumentStore that provides the same capabilities through WorkflowObjectAccessors.

Node operations across the editor — including canvas rendering, workflow execution, pinned data handling, and expression resolution — now flow through the same centralized store. This replaces scattered direct accesses to workflowsStore.workflowObject with a consistent API that integrates better with Vue's reactivity system.

The migration touches 27 files across composables, components, and utilities. Type definitions were updated to include an id field in the accessors interface, ensuring workflow IDs are available through the new pattern. Test files were updated accordingly to reflect the changed mock structures.

In the frontend package, files like and received the most changes, while smaller touches went to , , and various panel components.

View Original GitHub Description

Summary

<!-- Describe what the PR does and how to test. Photos and videos are recommended. -->

Related Linear tickets, Github issues, and Community forum posts

<!-- Include links to **Linear ticket** or Github issue or Community forum post. Important in order to close *automatically* and provide context to reviewers. https://linear.app/n8n/issue/[TICKET-ID] --> <!-- Use "closes #<issue-number>", "fixes #<issue-number>", or "resolves #<issue-number>" to automatically close issues when the PR is merged. -->

Review / Merge checklist

  • I have seen this code, I have run this code, and I take responsibility for this code.
  • PR title and summary are descriptive. (conventions) <!-- **Remember, the title automatically goes into the changelog. Use `(no-changelog)` otherwise.** -->
  • Docs updated or follow-up ticket created.
  • Tests included. <!-- A bug is not considered fixed, unless a test is added to prevent it from happening again. A feature is not complete without tests. -->
  • PR Labeled with Backport to Beta, Backport to Stable, or Backport to v1 (if the PR is an urgent fix that needs to be backported)
© 2026 · via Gitpulse