Skip to content

In your editor

Inside a Strapi project — zero config, no type generation.

Inside a magic string, suggests the real values for the context at your cursor: UIDs, services, controllers, policies, middlewares, components, and a content-type’s route actions.

strapi.service('api::|') // ← suggests every real content-type UID in your project

Underlines references that don’t exist (with quick fixes that suggest the closest match), and flags Strapi v4 patterns (e.g. strapi.entityService) used in a v5 project.

strapi.documents('api::artcle.artcle')
// ✗ unknown UID — quick fix: did you mean 'api::article.article'?

Ctrl/Cmd-click a string to jump to the right target: a UID → its schema.json, a service/controller/policy/middleware → its file, a route handler → the controller method, a component → its JSON, a plugin('a').service('b') chain → the plugin’s service.

// Ctrl/Cmd-click the UID → opens the content-type's schema.json
strapi.documents('api::article.article')

A “N references (Strapi)” lens on every definition, including per-method usages (strapi.service('x').find() calls and route handlers) the TypeScript server can’t see, because strapi.service(...) is typed any. A second “N incoming relations” lens on schema.json.

Renaming an entity or a method propagates to every call-site and route handler, renames the underlying file/folder, and updates relation targets — no grep-and-pray. See Pro.

Describes what a string resolves to, with the signature for service methods and usage insights (incoming relations, route handlers, data usages).


Every feature here can be tuned in Configuration — diagnostic severity, the references CodeLens, the per-method lens, and project-discovery exclusions.