Overview
The dedicated language server that powers code intelligence for SFCC server-side scripts - JavaScript, TypeScript, and Digital Script
Intellij SFCC ships a dedicated Language Server (LSP) built specifically for Salesforce B2C Commerce. The Scripting LSP is the part that handles server-side code - it turns VS Code into a full-featured SFCC IDE with autocomplete for the dw.* API, cartridge-aware require() resolution, go-to-definition across the cartridge overlay, real-time diagnostics, hover docs, signature help, and symbol search.
It is always on and requires zero configuration. There is no tsconfig.json, jsconfig.json, npm install, or type package to set up - open an SFCC project and everything works.
Looking for ISML templates? See the ISML LSP section. The two share one language server, so scripting intelligence even reaches inside ${ } expressions and <isscript> blocks.
What It Covers
The Scripting LSP understands every server-side script and the project files that drive intelligence for them:
| Language ID | Files | What you get |
|---|---|---|
sfcc-javascript | **/cartridge/**/*.js | Full type-aware completion, navigation, and diagnostics |
sfcc-typescript | **/cartridge/**/*.ts | The same, written in TypeScript |
digitalscript | *.ds (Digital Script) | First-class support - treated like a script file, no config |
isml | **/cartridge/templates/**/*.isml | Full script intelligence inside ${ } and <isscript> - see ISML LSP |
json | hooks.json steptypes.json caches.json api.json | Schema validation plus key/name completion and navigation |
properties | *.properties | Resource bundle key indexing for Resource.msg() |
yaml | Custom API / SCAPI schemas | Endpoint and operation indexing |
xml | *.xml metadata | Drives generated types |
ISML counts as script, not just markup. The engine reads inside ${ } expressions and <isscript> blocks, so dw.*, require(), and your pdict get the same intelligence there as in a controller - the full detail is in Scripting in ISML below. The exception is front-end bundles under cartridge/client/ and cartridge/static/: those are intentionally left as plain JavaScript, since the Scripting LSP only takes over server-side code.
Language Features
Every server-side script gets the full set of language-intelligence features, powered by a real TypeScript engine running over the bundled dw.* types and types generated from your own project metadata:
Code Lens
Beyond the editor basics, the plugin renders actionable Code Lenses above the SFCC artifacts that wire your cartridges together, so the indirection between configuration and code is one click away in both directions:
Scripting in ISML
ISML templates are treated as real scripts, not just markup. Everything inside ${ } expressions and <isscript> blocks runs on the same engine as a .js controller, with full go-to-definition, find references and usages, hover, completion, and diagnostics for the dw.* API, required modules, and your pdict, <isset>, and <isloop> variables, which are all modeled as real, typed scope. See the ISML LSP for tag completion, custom tags, template navigation, and formatting.
Explore the Scripting LSP
Zero Configuration
How Intellij SFCC delivers full code intelligence with no tsconfig, jsconfig, npm install, or type packages
TypeScript
Build entire SFCC cartridges in TypeScript - full IntelliSense and debugging out of the box, with zero configuration
Digital Script (.ds)
Develop legacy Digital Script (.ds) with JavaScript-level intelligence, importScript/importPackage/importClass scope analysis, and zero configuration.
Types & the dw API
The complete dw.* API is typed out of the box, and your own metadata becomes TypeScript types automatically
Module Resolution
How SFCC require() paths, cartridge overrides, module.superModule, and resource requires resolve and get typed
Code Completion
Context-aware autocomplete for the dw.* API, require paths, hooks, routes, templates, resource keys, and more
Navigation & Symbols
Go to definition, find all references, and symbol search across cartridges, hooks, routes, templates, and properties
Hover & Signature Help
Inline API documentation on hover and live parameter hints while you call functions
Diagnostics & Quick Fixes
Real-time, type-aware error checking for SFCC scripts, plus SFCC-specific warnings, quick fixes, and refactorings