
Full-impact language tooling for Meteor and Blaze. Meteor Impact turns VS Code into a first-class Meteor IDE: TypeScript-aware indexing, rich Spacebars intelligence, refactorings, diagnostics with quick fixes and template scaffolding - plus intellisense for Meteor core and Atmosphere packages and ready-made run/debug configurations.
Meteor Impact started as a fork of Meteor Toolbox by Matheus and Renan Castro, and greatly extends its language server.
Usage
Just install the extension in a Meteor project and it will add the needed configuration for you.
Note: this extension changes the jsconfig.json and .vscode/launch.json.
Remember to not include those changes to your version control system, as they
are scoped to your environment.
Language features
Works in .js, .ts and Spacebars .html files:
- Completions: template-scoped and global helpers inside mustaches,
template names after
{{>, block variables ({{#each x in ...}},{{#let}}),Meteor.call/callAsync/subscribenames, event selector classes/ids, CSS classes/ids from same-directory style files insideclass="..."/id="...", plus full HTML completion and Emmet in templates. - Go to definition / references: helpers, templates, methods, publications, event handlers (including event key -> targeted HTML element and class token -> event handlers), from both HTML and JS/TS.
- Rename (F2): helpers (scope-aware), templates (tags, partials and
Template.Xreferences), methods/publications and event keys. - Diagnostics with quick fixes: unresolved partials and helper calls (create the missing stub in one click), duplicate template names, unused helpers (with safe removal).
- Refactorings: "Extract selection to template" moves the selected HTML into a new template together with the helpers/events it uses and passes outer block variables as partial arguments.
- Semantic highlighting: resolved helpers, templates, block keywords and block variables get distinct colors.
- Hover, signature help, outline/breadcrumbs, workspace symbol search, folding, linked tag editing and Spacebars formatting (with mustache block indentation). Helper hovers include the JSDoc written above the definition.
- Closing-tag hints: long blocks show their opening condition as a
ghost hint at
{{/if}}/{{else}}(« if isSavingState). Long HTML elements can also show their id/classes at the closing tag (« .toolbar) - opt-in via thehtmlClosingTagHintssetting. - Method/publication safety: calls to unknown methods or subscriptions to unknown publications are flagged, with quick fixes to create the stub; unused methods/publications are hinted.
- Template scaffolding: right-click a folder ->
Create Blaze Templategenerates the folder with the.html,.js/.ts(imports andonCreated/helpers/eventsstubs) and optional.less/.cssfiles;Rename Blaze Templaterenames the folder, files, imports and every usage together. - Snippets: Blaze block snippets (usable with "Surround With") and Meteor lifecycle/method/publication snippets in JS/TS.
- .meteor/packages intelligence: hover shows the resolved version, completion offers installed packages.
- Package awareness: templates and global helpers provided by
installed packages (e.g.
{{> loginButtons}}) resolve in definitions, completion, hover and diagnostics. - Meteor Explorer: an activity bar panel with an app-wide overview (templates/helpers/events/methods/publications, with unused markers) and the template inclusion hierarchy - it follows the active editor, and has a search filter plus a current-file scope toggle.
- Block auto-close: typing
{{#if ...}}(or pressing Enter after it) inserts the matching{{/if}}; block regions fold. - Inlay hints: helper call arguments show their parameter name inline.
- Claude Code actions: with the cursor on a function in a
server-side JS/TS file, the Cmd+. menu offers "Create tests",
"Add JSDoc", "Explain this function" and - inside Meteor
methods/publications - "Security-review" with Claude Code. The
prompt (function name, file, line range, enclosing method) is
prefilled into a Claude Code CLI terminal for review; the
claudeCodeAutoSendsetting submits it immediately instead. - Session/ReactiveDict key intelligence:
Session.get("...")and ReactiveDict keys get completion, go-to-definition (the firstset), find-all-references across the app, and hints for keys that are read-but-never-set (likely typos) or set-but-never-read (dead state). - Collection field IntelliSense: point the
mongoSchemaPathsetting at a MongoDB$jsonSchemarepository (schemas/<collection>/<collection>.schema.json) and field names infind/findOne/update/insertselectors,$set-style modifiers andfieldsprojections get completion (with types), hover, go-to-definition into the schema file and unknown-field diagnostics (warnings underadditionalProperties: falseobjects, hints elsewhere; dotted and positional paths understood). - Instant warm starts: the index is cached, so an unchanged project skips re-parsing on startup; parse errors show as in-file squiggles.
The index follows unsaved edits incrementally, so results stay fresh while you type.
Available commands
Create Blaze Template -> Scaffold a new template folder (also in the
explorer context menu).
Rename Blaze Template -> Rename a template folder, its files and every
usage (also in the explorer context menu).
Go to Template Counterpart (Alt+O) -> Cycle between a template's .html,
code-behind and style files.
Nest Template Files Under Code-Behind -> Explorer file nesting for
template folders (writes workspace settings).
Generate Meteor.settings Types -> Generate meteor-settings.d.ts from
settings.json for typed Meteor.settings access.
Toggle Meteor Impact Auto Run -> Toggle file watcher for packages folders.
Run Meteor Impact set up manually -> Run the extension manually, only one
time (if autorun is not enabled).
Run clear meteor build cache -> Clear meteor build cache.
Re-create Meteor Impact run/debug options -> Re-create launch.json file.
Usefull when you change the port settings.
Requirements
This extension only runs inside a Meteor project.
Extension Settings
See SETTINGS.md for the full settings reference, including the editor settings that unlock format-on-save, linked tag editing, string completions and semantic colors.
-
auto-> Enable the file watcher for local packages. You can also set this option by running the commandToggle Meteor Impact Auto Run(it is enabled by default). -
port-> Set the port to use for meteor run/debug. Default to 3000. -
additionalArgs-> Set additional args to meteor run/debug configuration. Re-create the run options when changing this setting. -
meteorPackageDirs-> Use a custom packages diretory. -
ignoreDirsOnIndexing-> List of directories to ignore when the Meteor Language Server is indexing the project. -
closingTagHints-> Show ghost hints with the opening condition after the{{/block}}and{{else}}of long Blaze blocks. Enabled by default. -
htmlClosingTagHints-> Show ghost hints with the id/classes after the closing tag of long HTML elements (</div>gets« .toolbar). Disabled by default.
Credits
Based on Meteor Toolbox by Matheus Castro and Renan Castro. The packages watcher is inspired on meteor-package-intellisense.