ToDo Row Org
Metadata Intelligence for Salesforce: an org visualizer for dependency analysis, impact analysis, and relationship mapping, right inside VS Code.
Version 0.1.0 (pre-release) - the first public build. Every feature described below ships in this build today; nothing here is a preview of something still being written. The parts with the least real-world mileage are the ones that touch large orgs and unusual project shapes - see Known Limitations for the specifics, not a blanket disclaimer.
Marked as a pre-release on the Marketplace - install it via "Switch to Pre-Release Version" if it doesn't show up as the default install.
If you've looked at a Salesforce "visualizer" before and closed the tab after thirty seconds, this is the thirty seconds meant to change that:

Interaction Badges
A line says two things are connected. This says how.
|

VR Blueprint
A validation rule's formula, as an actual flowchart.
|

Flow Blueprint
A Flow's own logic, rendered directly - not reverse-engineered from XML.
|

Quick Load App
One click - a whole Salesforce app's metadata, on the canvas.
|
Four things, a few seconds each, no login screen in sight. Everything below is the reference for what's behind them.
Contents
New here? USER_GUIDE.md walks the whole first session - install, connect an org, load metadata, read a node - with a GIF at each stage that actually needs one. This README is the reference; the guide is the walkthrough.
Interaction Badges
The one part of this tool with no equivalent in Schema Builder or any Tooling-API visualizer.
A generic schema viewer draws a line between two objects and leaves you to work out what it means. ToDo Row Org replaces the guess with a label.
Next to every reference the dependency index finds - a SOQL query inside an Apex class, a @wire in an LWC, a field touch inside a trigger, a Flow element - it drops a small, color-coded badge naming the exact operation, with a tooltip on hover. Not "this Flow touches Account." Something closer to what you'd actually tell a teammate: this Flow reads Account, filters by Status, and updates a custom field. Twenty-eight badges cover eight categories:
| Category |
Badges |
| Core data operations |
Create, Read, Update, Delete, Upsert |
| Read context |
Filter, Project, Aggregate, Sort, Limit |
| Write context |
Assign, Bulk, Lock |
| Automation and logic |
Automation, Constraint, Validation Target |
| UI layer |
UI Binding, UI Form, UI Wire |
| Detection confidence |
Static, Dynamic, Unresolved |
| Relationships |
Relationship Path, Lookup |
| Navigation |
Owner, Jump, Composite, Nested |
The Detection Confidence row is worth pausing on. Not every reference can be resolved with equal certainty from source alone. Rather than presenting every match with the same confidence, the index marks a reference Dynamic or Unresolved when it can't be tied down as cleanly as a direct, static match - so you can see at a glance which ones are worth a second look, instead of a flat list with no sense of which references are certain.
This is free in the beta and stays free. It's the product's visual signature - the reason a screenshot of this tool doesn't look like anything else in the Salesforce tooling space.

Why this exists
Every Salesforce org that survives past its first year grows a second, invisible structure on top of the one in Setup. Somebody on the team just knows that Status__c on Opportunity is read by two Flows, written by a trigger from three years ago, and gated by a validation rule nobody wants to touch because nobody remembers why it's there. That knowledge doesn't live in a file - it lives in one person's head, until they change teams and it's gone.
Salesforce Setup ships Schema Builder, and a handful of third-party "metadata visualizer" tools exist that do roughly the same job: call the Tooling API, draw objects as boxes, draw lines for relationships. They work. They also live in a browser tab, separate from wherever you actually write code, and they can tell you THAT two things are connected - not how.
ToDo Row Org is built around two decisions that follow directly from that gap:
- It reads your local SFDX source, not a live API response. On first open it scans
force-app/main/default and builds a project-wide dependency index from literal source-file references, not from an API guess at what "should" be related. That's why canvas browsing, object exploration, and dependency lookups all work fully offline. A live org connection is required only for the handful of operations that literally touch a live org - Org Bridge, Quick Load, Retrieve, the VR active-toggle, jump-to-org links.
- It adds a layer Schema Builder has no equivalent for. The Interaction Badges above turn "are these connected" into "how" - visible at a glance instead of reconstructed from a Flow Builder trace.
Neither point is a knock on Schema Builder - it does what a Setup-hosted tool can do. ToDo Row Org just starts from a different vantage point: your editor, your files, your dependency graph.
That's the category this tool actually sits in: Metadata Intelligence for Salesforce, not a data tool and not a deploy tool. Concretely, that means turning a project's own source into a metadata map, with dependency analysis and impact paths you can trace before you touch a field, instead of finding out what broke after you ship.
Reading local source instead of a live API isn't only about working offline - it's the whole architecture. ToDo Row doesn't run a backend for Salesforce metadata, doesn't send that metadata anywhere, and doesn't hold your Salesforce credentials: authentication stays with your existing Salesforce CLI session, under the access you already have. It adds a visual and analytical layer over metadata you're already authorized to see, rather than a separate platform asking to be trusted with a copy of your org. See Privacy below for the specifics.

The canvas
The canvas is the org's metadata map: every object you've loaded, drawn as a node, with dependency graphs connecting the ones that actually reference each other.
- Infinite pan/zoom canvas with grid and axes overlays, both togglable.
- Viewport commands: Fit to content, Center origin, Reset zoom.
- Drag objects to position them; layout persists to
.vscode/tdrorg-layout.json in your workspace, across sessions.
- Connections between related objects (Lookup / Master-Detail) draw as smooth curves with interactive endpoints. Click an endpoint to pull a related-but-not-yet-shown object onto the canvas next to its source, instead of hunting for it separately.
- Self-referencing relationships - an object that looks up to itself - draw as a side loop rather than overlapping the node.
- Auto-Arrange (drawer menu → Layout) lays out every visible object in one pass: objects that relate to each other, however indirectly, cluster together with their own flow-direction layout; objects with no relationship to anything currently on screen are pulled out into a separate grid below the clusters instead of being packed into the same graph with no visual reason why. A single flat layout reads as "random" once more than a few objects are on screen - this reads as arranged.
- A top-bar toggle injects the standard
Owner, CreatedBy, and LastModifiedBy fields onto every node, for the times you want them visible without permanently counting them among an object's own fields. A free-text search box in the same top bar hands off to Object Explorer (below) with your query pre-filled.
Object nodes
Every object lands on the canvas as its own object blueprint: fields, tabs, and every relationship, in one place.
- Each node has a header band colored per object, a per-field lock state, and inline Lookup/Master-Detail connector icons.
- Bottom tabs per node - Fields, SOQL, LWC, Apex Classes, Triggers, Flows, Validation Rules - are populated from the project-wide dependency index built by scanning the actual SFDX source. Not a live API guess: if a class shows up under an object, it's because the index found the literal reference in your codebase.
- The Validation Rules tab is a card list: formula preview, a detail dialog, a per-rule Active toggle that deploys the change via the Salesforce CLI, a "Jump to org" action that opens the rule directly in Salesforce Setup, and a Schema icon that opens VR Blueprint.
- The Flows tab is the same kind of card list, one per Flow that touches the object - each card has its own Schema icon that opens Flow Blueprint.
- The header's Reverse Relationships icon opens a popup listing objects that reference into the current one - the direction a connector line alone doesn't show, since a line only appears once the referencing object is already on the canvas. This is the object's impact path in the other direction: not "what does this depend on" but "what depends on this, and breaks if I change it." From there, Load Related from Org… queries the connected org's live schema for child relationships your local source scan can't see on its own (managed-package objects, anything outside scan scope), filtered down to genuine custom relationships - plain
__c/__mdt/__e/__x objects, not Salesforce's own internal change-tracking and system objects - so the list stays signal, not noise.
VR Blueprint
A validation rule's formula, parsed into an actual syntax tree - not just re-flowed onto a nicer canvas.
- Click the Schema icon on any Validation Rule card to open a modal flowchart of that rule's formula.
- The formula text is parsed into an abstract syntax tree first, and the tree is what gets laid out as a graph: Event to Conditions to Junctions to Actions.
- AND/OR junctions are explicit nodes in that graph, not implied by indentation or bracket-nesting. True/False paths are color-coded so you can trace exactly which branch fires without doing the boolean algebra by eye.
- Smooth cubic Bezier edges, automatic top-to-bottom layout, cursor-anchored zoom with Ctrl+scroll.
- View-only in this beta. The editable version - drag a condition onto the canvas, save it back to the org - is a Pro-tier feature (see below).

Flow Blueprint
A Flow's own element graph, rendered directly - not reverse-engineered from raw XML.
- Click the Schema icon on any Flow card (on an object's Flows tab) to open a modal flowchart of that Flow's elements and connectors.
- Salesforce's Flow metadata is already graph-shaped - elements plus connector references - so this is a direct rendering of that structure, not a reconstruction. Every Decision and Wait branch, loop, fault path, and scheduled path draws as its own labeled connector, color-coded by kind, instead of a flat list of steps.
- Click any element for details in the inspector: condition summaries on a Decision branch, the object a record operation targets, which Flow a subflow calls, what a Wait element is actually waiting for - plus a "Jump to org" action.
- An element type this beta doesn't model in depth (Salesforce keeps adding new ones) still renders as a plain, correctly-connected block instead of breaking the diagram.
- Read-only, same boundary as VR Blueprint - for understanding a Flow at a glance, not editing it. Flow Builder remains the place to build one.

Quick Load and Quick Load App
- Quick Load: a tabbed dialog covering six metadata types - Custom Object, Standard Object, Lightning Web Component, Apex Class, Trigger, Flow. Each tab has its own search, sort, and multi-select. "Load Selected" pulls only the checked items; "Load All" fetches everything of that type.
- Quick Load App: pick one or more Salesforce CustomApplications, and it loads everything that App (or the objects it owns) declares - the App's own XML, every CustomObject referenced in its tabs (with fields and validation rules), every CustomTab, and every Apex Trigger bound to those objects. One click, the App's whole footprint on the canvas. A "Show all on canvas" toggle follows.
- The resolution from an App's declared tabs to CustomObjects is heuristic, not a guaranteed metadata read - see Known Limitations.

Org Bridge
- Connect via Browser, with separate flows for Production and Sandbox. Login happens in your default browser; the Salesforce CLI manages the session token - this extension never sees or stores your credentials directly.
- Locked Org Mode: once a project is bound to one org, it stays bound for the life of that project session. Switching to a different org requires an explicit Disconnect. This exists to close one specific failure mode: a dialog silently pointing at the wrong org, and a deploy or pull happening against it instead of the org you actually meant.
- Auto-detects the already-active org from the Salesforce CLI's own config the first time you open a project, so most users never see an org picker at all.
- Detects a stale or expired authentication and offers an in-dialog way to remove that org entry.
Setup Guide
Metadata governance for the parts of a Salesforce org that a dependency index can't reach.
- A large amount of Salesforce configuration - sharing rules, company settings, user management, SSO, business hours, and more - has no file representation. It lives only in Setup, which means it never shows up in a diff, a pull request, or a dependency index.
- The Setup Guide is a 34-item checklist across 7 categories that gives that configuration a place to live inside the editor. Each item links straight to the right Setup page; a handful can be verified automatically against the connected org.
- Aimed as much at someone new to an org, trying to figure out what's actually configured, as at an experienced admin who wants a checklist.

Object Explorer
A searchable list of every object the extension has scanned: a multi-letter filter, a "locked fields only" filter, per-object show/hide, and a "Go to" action that centers the canvas viewport on that object.
A dialog wrapping the Salesforce CLI's metadata retrieve command: nine category filters plus live search, so pulling a specific slice of metadata doesn't require memorizing CLI flags.

Install
From the VS Code Extensions panel: Ctrl/Cmd+Shift+X, search "ToDo Row Org", Install.
Or from a terminal:
code --install-extension ToDoRow.todo-row-org
Quick start
- Open a folder containing an SFDX project - a
sfdx-project.json file at the root. The extension auto-detects it and scans force-app/main/default.
- Open the workspace: click the ToDo Row Org icon in the VS Code Activity Bar (the left-hand icon strip) to open the Quick Actions panel, then choose "Open Workspace." Or run "ToDo Row Org: Open Workspace" from the Command Palette (
Ctrl/Cmd+Shift+P).
- Connect an org: click the org indicator in the canvas's top bar, or "Connect Org..." from Quick Actions, then choose Production or Sandbox under "Connect via Browser."
- Run "Quick Load App" from the drawer menu. It's the fastest path to a populated canvas.
For the same four steps with a GIF at each one, see USER_GUIDE.md.
Commands
All commands below are reachable from both the Command Palette (prefixed "ToDo Row Org:") and the Activity Bar's Quick Actions panel. They're the entry points for a cold start - the canvas itself carries many more commands through its own drawer menu and per-node header icons.
| Command |
What it does |
| ToDo Row Org: Open Workspace |
Opens the canvas. Scans the project on first run; reveals the existing panel on later calls. |
| ToDo Row Org: Connect Org... |
Opens the Org Bridge dialog. |
| ToDo Row Org: Quick Load Metadata... |
Opens the six-type tabbed Quick Load dialog. |
| ToDo Row Org: Quick Load App... |
Opens the App-cascade loader. |
| ToDo Row Org: Open Object Explorer |
Opens the searchable object list. |
| ToDo Row Org: Fit Content to View |
Centers and scales the viewport to fit every visible node. |
| ToDo Row Org: Reset Layout |
Hides every node and resets positions. Asks for confirmation first. |
Requirements
- VS Code 1.106 or newer.
- Salesforce CLI (
sf, v2.x) installed and on PATH. Every org-facing operation shells out to it.
- An SFDX project - a
sfdx-project.json file at the workspace root.
- A connected Salesforce org for the online features: Org Bridge, Quick Load, Retrieve, the VR active-toggle, jump-to-org links.
- Canvas browsing, object exploration, and the dependency index all work fully offline. Only the operations that literally touch a live org need one.
Known limitations
Stated plainly, not as a hedge:
- LWC schema-import scanning is best-effort. Renamed components or dynamic imports may be missed.
- Quick Load App resolves a CustomApplication's declared tabs to CustomObjects heuristically. Renamed Visualforce or Lightning Component tabs come through as CustomTab metadata, but the underlying page or component itself is not pulled.
- Trigger discovery via the Salesforce Tooling API is a single round-trip, no chunking. Comfortable for roughly 10-30 objects per App; would need chunking to scale past roughly 200.
- VR Blueprint and Flow Blueprint are both view-only in this beta. Editable/interactive versions are a Pro-tier feature (see below).
- Flow Blueprint models the common Flow element types in depth (Start, Screen, Decision, Assignment, Loop, record operations, Subflow, Action, Wait, Custom Error); anything rarer renders as a plain connected block rather than being misrepresented.
- Anything currently in flight beyond this list is tracked on the issue tracker: https://github.com/ShamansIT/todo-row-org-issues/issues
Pro tier
Not included in this build - hidden from the beta menu. Everything above this line works today, for free.
- Pre-Flight Validation: a Docker-based static-analysis gate, via the Salesforce Code Analyzer (
sf scanner), that runs before a deploy.
- Auto-Validation Manager: an always-on / off / custom-routed pipeline that validates and deploys automatically as files change, with an operations log and automatic backups.
- Quick Load App's full multi-type cascade - adding ApexClass, Flow, LWC, and PermissionSet to what the free cascade already pulls.
- VR Blueprint Edit Mode: a drag-and-drop palette to build or modify a validation rule's logic visually, a Save-back-to-org action, a local Test Rule evaluator, and a linter-style Validation Log.
- Flow Test Mode: supply sample input values directly in Flow Blueprint and see which Decision/Wait branch actually fires, highlighted on the diagram - no org round-trip, evaluated locally against the parsed Flow structure.
- Global Refresh from Org, Validate Project, Detect Org Drift, Generate Documentation, Export Blueprint, and a Diagnostics section.
- Rename Field: double-click a field to rename its Label and/or API Name. Runs an impact analysis first, blocks unsafe renames (system fields, managed-package fields), backs up before deploying, and rolls back automatically if the Salesforce SOAP
renameMetadata call succeeds on the org side but the local file sync fails.
Issues and contributing
File bugs, scanning gaps, and feature requests at the issue tracker: https://github.com/ShamansIT/todo-row-org-issues/issues. This is early beta - feedback from real SFDX projects is the most useful input right now, more than any particular format for reporting it.
Privacy
ToDo Row adds visibility, not a new security boundary. It has no telemetry and no backend of its own - there is no ToDo Row server that your metadata, source code, or usage data is sent to, because none exists. If you never connect an org, ToDo Row never makes a network call at all. If you do, the only network communication is between your machine and Salesforce itself, through the Salesforce CLI, using your own Salesforce session - the CLI manages that session; ToDo Row never sees or stores your credentials directly. Full detail: PRIVACY.md.
License and author
Proprietary. ToDo Row is source-closed software - installing and using the extension is subject to the ToDo Row Software License Agreement. See LICENSE for the full text, and THIRD-PARTY-NOTICES.md for the open-source components bundled with it.
Author: Serhii Spitsyn (https://www.linkedin.com/in/serhii-spitsyn/)
Issues: https://github.com/ShamansIT/todo-row-org-issues/issues
| |