ImpactLens — Salesforce Dependency Analyzer
Fast, intelligent search and impact analysis for Salesforce DX projects — right inside VS Code.

Features
🔍 Advanced Search Panel
Search across your entire Salesforce project with a fast, full-featured webview panel.
- 24 metadata types — Apex Classes, Triggers, LWC, Aura, Flows, Validation Rules, Workflow Rules, Custom Objects, Custom Fields, Custom Metadata, Permission Sets, Profiles, Layouts, Reports, Email Templates, Named Credentials, Platform Events, Visualforce Pages & Components, Custom Labels, Static Resources, FlexiPage
- Filter presets — one-click All, Source (Apex + LWC + Aura + Flows), Metadata (Objects + Permissions + Labels), or Clear Filters
- Exact match toggle — switch between fuzzy/smart and strict whole-word matching
- Term highlighting — matched words highlighted in file names and code previews
- Live summary pills — Total / Visible / Page range / Exact Mode indicator
- Smart tokenization — understands camelCase, PascalCase,
__c, and dot-separated API names
- Fuzzy + prefix matching — finds results even with partial names or minor typos
📄 Results Table
| Column |
Details |
| File |
Filename + relative path below |
| Type |
Metadata type badge |
| Object |
SObject API name when applicable |
| Line |
Line number + relevance score |
| Preview |
Code snippet with matched terms highlighted |
- Column sorting — click any header to sort asc/desc; indicator arrow shown
- Table filter — live narrow across all columns simultaneously
- Per-row actions — Open (jumps to exact line) and Copy Path (copies full path to clipboard)
- Pagination — numbered page buttons
‹ 1 … 4 5 6 … 20 › with First/Last and jump-to-page
- Page size — 10 / 50 / 100 results per page
- State persistence — sort, filter, page, and all toggle states survive panel hide/show cycles
⚡ Impact Analysis
Analyze the blast radius of changing a field, object, class, or any metadata element.
- Traverse the full in-memory reference graph to find all affected components
- Sidebar tree view showing the full dependency tree with click-to-navigate on every node
- Rich tooltips with file path, line number, and code snippet on hover
- Grouped by dependency depth; nodes with further dependents shown first
Two Activity Bar panels give you persistent visibility without opening the webview:
Search Results tree
- Groups results by metadata type, sorted by match count (largest group first)
- Color-coded icons per type (blue = Apex, green = LWC, orange = Triggers, purple = Flows, …)
- Rich Markdown tooltip: file, line, object, relevance score, relative path, snippet
- Friendly "Run a search to see results here" placeholder
Impact Analysis tree
- Root node → dependency chain expandable to any depth
- Type-aware icons resolved from the node's metadata type string
- Smart child sort: deeper dependency chains first, then by reference count
- Reference count + line number shown in VS Code's description field
- Worker thread indexing — file parsing runs on a background thread; UI stays responsive
- MiniSearch full-text index with custom camelCase/underscore tokenizer
- Dual-strategy search — precise reference-graph lookup merged with full-text recall, deduplicated by
filePath:line
- Persistent cache — index saved to
context.globalStorageUri/search-index.json and reloaded on restart (no re-parse on every open)
- Incremental updates — FileSystemWatcher triggers targeted re-index; mtime check prevents redundant work
- Debounced file watching — configurable delay prevents index churn during batch saves
⌨️ Keyboard Shortcuts (Search Panel)
| Key |
Action |
/ |
Focus search input |
Escape |
Clear active input |
Enter |
Run search / confirm jump-to-page |
Requirements
- VS Code 1.74+
- A Salesforce DX project with
sfdx-project.json in the workspace root
Getting Started
- Open a Salesforce DX project folder in VS Code
- The extension activates automatically when
sfdx-project.json is detected
- Watch the status bar — indexing runs in the background (first run may take a few seconds)
- Press
Cmd+Shift+P (macOS) / Ctrl+Shift+P (Windows/Linux) → ImpactLens: Open Search Panel
- Type any field name, class name, object API name, or keyword and press
Enter
Commands
| Command |
Shortcut |
Description |
ImpactLens: Open Search Panel |
Command Palette |
Open the full search webview |
ImpactLens: Impact Analysis |
Command Palette / Context Menu |
Analyze impact of a metadata element |
ImpactLens: Find Field Usage |
Editor context menu (requires selection) |
Search all usages of the selected field |
ImpactLens: Find Object Usage |
Editor context menu (requires selection) |
Search all usages of the selected object |
ImpactLens: Rebuild Index |
Command Palette / Results view toolbar |
Force a complete index rebuild |
Extension Settings
| Setting |
Default |
Description |
sfSearch.excludePatterns |
["**/node_modules/**", "**/.sfdx/**", "**/.sf/**"] |
Glob patterns to exclude from indexing |
sfSearch.maxFileSize |
1048576 (1 MB) |
Maximum file size to index (bytes) |
sfSearch.debounceDelay |
300 |
File-watcher debounce delay (ms) |
sfSearch.enableToolingApi |
false |
Enable Salesforce Tooling API for enriched dependency data |
sfSearch.fuzzyTolerance |
0.2 |
Fuzzy search tolerance (0 = exact, 1 = very loose) |
Architecture
src/
├── extension.ts # Activation, command registration, service wiring
├── models/
│ ├── searchResult.ts # MetadataType enum, SearchResult, ImpactReport interfaces
│ ├── dependencyNode.ts # DependencyNode, DependencyEdge, DependencyGraph types
│ └── index.ts # Re-exports
├── indexing/
│ ├── fileParser.ts # Regex + XML reference extraction per metadata type
│ ├── indexWorker.ts # Worker thread entry point
│ └── metadataIndexer.ts # Orchestrator: file discovery, parsing, MiniSearch build
├── search/
│ ├── searchEngine.ts # Dual-strategy search (reference graph + MiniSearch)
│ └── impactAnalyzer.ts # Impact analysis & dependency tree builder
├── services/
│ └── salesforceService.ts # SF CLI detection, Tooling API queries
└── ui/
├── searchPanel.ts # Webview panel (HTML/CSS/JS, ~1300 lines)
├── resultsView.ts # TreeView sidebar: search results grouped by type
└── impactView.ts # TreeView sidebar: impact dependency tree
Release Notes
See CHANGELOG.md for full version history.
1.1.0 — Major UI polish: filter presets, exact match toggle, term highlighting, numbered pagination with jump-to-page, state persistence, color-coded sidebar icons, rich Markdown tooltips, impact analysis sidebar overhaul.
1.0.0 — Initial release with full-text search, impact analysis, worker-thread indexing, and persistent cache.
License
MIT — see LICENSE for details.
| |