Configuration & Troubleshooting

Customize SFCC completion contexts and diagnose missing types, references, or CodeLens without a tsconfig setup

The language server configures its SFCC type model automatically. The settings below customize editor behavior and recognized helper calls; they are not prerequisites for basic API completion

Teach completion about your helpers

A completion rule identifies a method name, an optional receiver name, and the zero-based argument position containing an SFCC identifier

Setting under intellij-sfcc.completionsDefault contexts
routesURLUtils.url/abs/http/https, corresponding method-name matches, and URLAction; argument 0
hooks.namecallHook, hasHook, hooksHelper, hookHelper; argument 0
hooks.functioncallHook, hooksHelper, hookHelper; argument 1
templatesrender and renderTemplate; argument 0. sendEmail; argument 1
resources.propertiesmsg and msgf; argument 0
resources.bundlesmsg and msgf; argument 1

For example, suppose a helper accepts a site identifier followed by a route:

links.forRoute('DemoSite', 'Product-Show');

Add a route rule with className: "links", methods: ["forRoute"], and paramIndex: 1. Route rules you add are tried first and the default route rules stay on after them, so the array holds only your own rule:

settings.json
{
  "intellij-sfcc.completions.routes": [
    { "className": "links", "methods": ["forRoute"], "paramIndex": 1 }
  ]
}

The other settings work differently: a configured array replaces the setting's default array, so retain the defaults you want in it

Invoke completion inside the second string argument. The definition provider also uses these context rules for recognized route, hook, template, key, and bundle lookups. A rule identifies a syntactic call shape; it does not teach the server what arbitrary helper code does at runtime

Editor visibility settings

VS Code setting or actionWhat it controls
Editor: Code Lens (editor.codeLens)Whether CodeLens actions are visible
Editor: Inlay Hints Enabled (editor.inlayHints.enabled)Whether supplied inlay hints are displayed
Trigger SuggestManually open completion at the caret
Trigger Parameter HintsReopen signature help inside a function call
Go to Definition / Peek DefinitionInspect a definition without depending on a particular keybinding
Go to ReferencesInspect references from the current symbol or recognized identifier

Use the Command Palette names if your keyboard layout or keybindings differ from the shortcuts in these guides

Diagnose a missing result

Check the language mode

Open the file and inspect the language indicator. Cartridge server scripts should use the SFCC JavaScript, SFCC TypeScript, or Digital Script mode. Files under frontend client or static folders intentionally use the normal frontend service

Check cartridge discovery

Confirm the cartridge is linked or discovered in the extension's cartridge view. Open the workspace containing it, rather than only an unrelated file. See Zero configuration

Check the active context

An overlay import and module.superModule depend on cartridge order. Confirm the selected site scope and the locally available cartridge path before treating a different target as a navigation defect

Check the feature's source

A custom attribute needs local metadata; a form needs its XML; a hook needs its registration; log lenses need loaded log data. Open the source file and confirm its identifier matches the code

Let indexing finish and retry

Large project changes can temporarily leave specialized results unavailable. Save the relevant files, allow indexing to finish, then invoke the editor action explicitly. Inspect the extension's Output entries if the result remains missing

Common symptoms

SymptomLikely next check
dw/* types are missing everywhereLanguage mode, extension activation, and language-server startup
require('*/…') resolves to an unexpected fileActive cartridge order and discovered cartridge locations
A parent export is missing on baseMatching relative file in a later cartridge, plus the parent's actual exports
product.custom lacks a project attributeLocal XML, its type-id, generated declarations, and the receiver's type
server.forms.getForm('name') has no known fieldsForm XML name, cartridge discovery, and generated form-types.d.ts
A hook implementation parameter is untypedRegistration, script path, export name, and whether a known hook signature exists
A resource reference is missingBundle name, key spelling, and whether the lookup is statically recognizable
Script-symbol rename or a refactoring does not applyThese are not completed scripting workflows in this release; see Diagnostics. ISML template variables do rename, see Rename a template variable

Output channels

Open View → Output and pick a channel from the list to see what the extension recorded:

Output channelWhat it records
Intellij SFCC Script Language ServerThe scripting language server behind completion, navigation, diagnostics, and CodeLens
Intellij SFCC ISML Language ServerThe ISML language server
Intellij SFCC Logs ServerThe server that parses instance logs for Log Center
B2C TypeScript TranspilerThe folder transpiled files are saved in, each .ts file with its generated .js file, and transpile errors
B2C Sync LogFile watcher starts and stops, uploads, deploys, and upload errors, tagged with the instance
B2C Logs StreamingWarnings from Log Center, for example when a log watch could not stop or logs could not refresh

If a language server cannot start or keeps stopping, a notification says so and offers Try again, Show log to open that server's channel, and links to support

JSON schemas

The extension validates and completes these JSON files as you edit them:

FileChecked against
hooks.jsonA hooks array whose entries need name and script
steptypes.jsonA single step-types object describing job steps
caches.jsonA caches array whose entries need an id, with optional expireAfterSeconds
api.json under a rest-apis folderAn endpoints array whose entries need endpoint, schema, and implementation
cartridge/experience/pages/**/*.jsonPage Designer page type: region_definitions, attribute groups, and supported aspects
cartridge/experience/components/**/*.jsonPage Designer component type: group, region_definitions, and attribute_definition_groups
cartridge/experience/aspects/**/*.jsonPage Designer aspect type: name, attribute_definitions, and supported_object_types
cartridge/experience/editors/**/*.jsonPage Designer custom editor type and its resources

Useful information for a reproducible report

Include the extension version, language mode, a minimal source example, expected and actual navigation targets, and the relevant cartridge order. For metadata or form issues, include a small synthetic XML definition. For UI issues, capture the editor action and its result with readable file names

A small two-cartridge example is usually more useful than a whole storefront. Keep credentials and private business data out of the sample

On this page