Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>SF Metadata ToolkitNew to Visual Studio Code? Get it now.
SF Metadata Toolkit

SF Metadata Toolkit

RamSF

|
4 installs
| (0) | Free
Browse and retrieve Salesforce org components, manage story branches, and promote changes across environments — no Git knowledge required.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

SF Metadata Toolkit

A VS Code extension for Salesforce developers that streamlines day-to-day work without leaving the editor: browse and retrieve org components, generate package.xml files from branch changes, integrate with Jira to fetch components linked to stories, manage feature/release branches, and merge an entire Jira release of story branches onto your release branch in one step.

Features

Browse & Retrieve Org Components

Query your connected Salesforce org for recently modified metadata across any metadata type. Select what you want and retrieve it into your local project — fast.

  • Supports scratch orgs, sandboxes, and production
  • Auto-detects source tracking; uses Tooling API SourceMember when available, falls back to sf org list metadata otherwise
  • Filter, sort, and search by type, name, or modified by
  • Two retrieval backends: SF CLI (stable) or Metadata API via jsforce (10–100× faster for small selections)
  • Bulk Select via paste or fetch from a Jira issue
  • All CLI/API activity logged to the SF Metadata Toolkit output channel

Bulk Select from a list

Paste a list of components (any common format — markdown table, tab-separated, vertical Jira copy, plain Type: Name) and the parser figures it out:

  • Header-aware (Type, Component Type, Name, API, Component Name)
  • Type-anchored fallback for headerless lists
  • Auto-reformats clipboard paste into a clean Type: Name view
  • Smart matching: handles missing __c/__mdt suffixes, exact + suffix + ambiguous resolution

Retrieve from Jira

Pull the component list directly from a custom field on a Jira issue, parse it, and pre-fill the Bulk Select textarea. Configure the field name once (e.g. Salesforce Components) and the extension resolves the field ID via Jira's REST API.

Generate package.xml from changes

Generate a deployment manifest from changes on the current branch — including committed changes, not just uncommitted ones.

  • Uses git log --first-parent --no-merges to capture only what was directly committed on this branch (excludes content brought in by main syncs or branch merges)
  • Adds staged, unstaged, and untracked files
  • Maps file paths to Salesforce metadata types
  • Auto-generates and shows the package.xml preview
  • Saves directly to manifest/<STORY-KEY>.xml when the current branch matches a configured Jira ticket prefix
  • Sorts type and member names with locale-aware case-insensitive collation
  • Reads sourceApiVersion from sfdx-project.json

Merge Release Stories

Merge every story branch in a Jira release / fixVersion onto your current branch.

  1. Check out (or create) the branch you want to use as the release branch
  2. Run Merge Release Stories and enter a release name (matches Jira fixVersion)
  3. The extension queries Jira (via the /rest/api/3/search/jql API) for all stories in that release and locates the matching git branch for each
  4. A confirmation table shows story key, title, status, assignee, and the matched branch — rows without a branch are highlighted and unchecked by default
  5. After you confirm, each selected story's remote branch is merged into the current branch one at a time. Per-story merge conflicts are aborted and reported, so the rest of the queue keeps going
  6. The current branch is left exactly as the merges left it. Nothing is committed beyond the merge commits, and nothing is pushed — review and push when you're ready

Sign in to Jira

A guided sign-in panel collects your Atlassian email + API token (with a link to create one), tests the credentials, and stores:

  • Settings (User scope): jiraBaseUrl, jiraEmail — synced and shareable
  • Token: in VS Code's encrypted SecretStorage — never written to settings.json, never synced

Available as SF Metadata Toolkit: Sign in to Jira and SF Metadata Toolkit: Sign out of Jira.

Branch & Promotion (optional)

For teams that follow a story → environment branch model:

  • Create New Branch / Continue Existing Branch — guided flows for starting/resuming feature work
  • Commit Changes — fast staging + commit, optionally checks for changes before saving
  • Promote — push the current branch and open a PR against a configured environment branch (e.g. dev, staging)
  • Deploy Branch to Sandbox — push the non-merge changes on this branch directly to a configured sandbox

These sections appear automatically in the sidebar when their dependencies are satisfied (e.g. Promote shows when promotionTargets is configured; Release shows when you're inside a git repo).

Requirements

  • Salesforce CLI (sf) installed and on your PATH
  • An authenticated Salesforce org (sf org login)
  • Git installed
  • A Salesforce DX project open in VS Code (for retrieve, package.xml, release flows)
  • Jira Cloud account + API token (for Jira features)

Quick Start

  1. Open your Salesforce DX project in VS Code
  2. The SF Metadata Toolkit sidebar appears in the activity bar
  3. Click Browse Org Components to retrieve metadata, or
  4. Run SF Metadata Toolkit: Sign in to Jira to enable Jira-backed features

Commands

Command Description
SF Metadata Toolkit: Browse Org Components Open the component browser
SF Metadata Toolkit: Generate package.xml from changes Generate a deployment manifest from branch changes
SF Metadata Toolkit: Sign in to Jira Configure Jira credentials
SF Metadata Toolkit: Sign out of Jira Clear stored credentials
SF Metadata Toolkit: Merge Release Stories Merge every story branch in a Jira release onto the current branch
SF Metadata Toolkit: Sort package.xml Sort and deduplicate the active package.xml file
SF Metadata Toolkit: Create New Branch Branch from main (when branching is enabled)
SF Metadata Toolkit: Continue Existing Branch Switch to an existing feature branch
SF Metadata Toolkit: Promote Push & open PR to an environment branch
SF Metadata Toolkit: Deploy Branch to Sandbox Deploy branch changes to a configured sandbox

Settings

Setting Default Purpose
sfMetadataToolkit.allowedManagedNamespaces [] Managed package namespaces to include in browse results (e.g. ["SBQQ"])
sfMetadataToolkit.retrieveMethod metadataApi metadataApi (default, faster — jsforce) or sfCli (fallback)
sfMetadataToolkit.mainBranch main Production / target branch
sfMetadataToolkit.jiraBaseUrl "" e.g. https://yourcompany.atlassian.net
sfMetadataToolkit.jiraEmail "" Atlassian account email (set by Sign in to Jira)
sfMetadataToolkit.jiraComponentsField "" Name or ID of the Jira field listing Salesforce components
sfMetadataToolkit.promotionTargets [] List of { branch, environment } for promote buttons
sfMetadataToolkit.codeOwnerTeams [] GitHub team slugs whose members populate the Promote reviewer picker
sfMetadataToolkit.requireLinkInPrDescription false Require a Jira ticket or Salesforce case link in PR descriptions
sfMetadataToolkit.updateExtensionUrl "" Optional direct VSIX URL for self-hosted updates

Privacy

All Jira and GitHub network requests are initiated by user actions (sign-in, fetching a story, opening a PR). The extension does not send telemetry. Credentials are stored in VS Code's encrypted SecretStorage; never logged or synced.

Known Limitations

  • The component browser returns up to 1000 most recently modified components for source-tracked orgs and 5000 for non-source-tracked queries.
  • The package.xml generator includes files tracked by git on the current branch (committed + working tree). Files brought in by merges from other branches are excluded.
  • Jira features require Jira Cloud (the new /search/jql endpoint). Server / Data Center support is not implemented.
  • Retrieve and release operations require an open Salesforce DX project folder.

Development

npm install                # one-time
npm run compile            # tsc + esbuild bundle of metadataApi
npx vsce package           # produces sf-metadata-toolkit-<version>.vsix

To run the extension locally: open this folder in VS Code and press F5 to launch an Extension Development Host. From inside the host, open a separate Salesforce DX project folder to test against.

The build runs tsc -p ./ followed by node esbuild.metadataApi.mjs. The esbuild step bundles src/metadataApi.ts together with jsforce into a single out/metadataApi.js (~1.3MB) so jsforce doesn't need to ship as a dependency in the VSIX.

License

MIT.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft