Merged
Size
M
Change Breakdown
Refactor85%
Maintenance15%
#28393refactor(editor): Migrate Workflow class usages in Vue props and function arguments

Workflow class props migrated to narrower interface type

Vue components and utility functions across the frontend now use a restricted type that exposes only a subset of Workflow methods, laying groundwork for eventual CRDT support.

The n8n frontend is being refactored to work with a narrower interface to workflow objects. A new type called WorkflowObjectAccessors has been introduced that picks only the methods and fields needed across the codebase—things like getNode, connectionsBySourceNode, and expression—rather than exposing the entire Workflow class.

This change touches 22 files across Vue components, composables, stores, and utility functions. Rather than accepting the full Workflow class, these now accept the restricted interface. The transition was done incrementally: components like and were updated to use the new type, while getGenericHints in was refactored to accept a getter function instead of direct node access.

The workflowsStore.workflowObject property has been marked as deprecated in its JSDoc comment, signaling that the full Workflow class will eventually be replaced. This is part of a larger initiative to introduce CRDT-based synchronization, where working with a limited interface rather than a full mutable class will make conflict resolution more predictable.

View Original GitHub Description

Summary

As part of the groundwork for introducing CRDT, this PR replaces Workflow class usages in Vue component props and utility function arguments with temporary WorkflowObjectAccessors and WorkflowForNodeHelpers type which exposes a subset of methods and fields of Workflow class. This allows us to finish migrating all usages of workflowsStore.workflowObject (in subsequent PRs).

Related Linear tickets, Github issues, and Community forum posts

https://linear.app/n8n/issue/CAT-2797/migrate-workflow-class-usages-in-component-props-and-function

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