Stop guessing where your template variables come from. Instantly see their origin.
VueGlimpse is a VS Code extension for Vue & Nuxt that ends the constant scrolling and context-switching when working in large components. It shows you exactly where your template variables originate—be it props
, a store
, or a computed property—with subtle, at-a-glance icons. It supports both <script setup>
(Composition API) and the Options API, helping you stay in your flow and understand your component's data source instantly.
You're deep in a component, see <p>{{ user.name }}</p>
, and ask yourself:
"Where is
user
coming from? Is it aprop
? Aref
? From a Pinia store? Or adata
property?"
Each question forces a jump to the <script>
block, breaking your concentration. VueGlimpse eliminates these interruptions.
- 🧠 Reduces Cognitive Load: Stop mapping your component's state in your head. The editor does it for you.
- ⚡ Keeps You in the Flow: Stay focused on your template without constant context switching.
- 🚀 Speeds Up Onboarding & Reviews: Instantly understand any component's data flow, regardless of the API style.
- At-a-glance Origin Indicators: Subtle icons in your template tell you the source of your data.
- Reliability Indicator: Always know if the analysis is up-to-date with a simple status bar icon.
- Universal API Support: Works seamlessly with both
<script setup>
and the Options API. - Intelligent Store Detection: Recognizes state from Pinia and Vuex based on imports.
- Minimalist Hovers: Instantly identify a variable's origin (
Prop
,Ref
, etc.) on hover—no code, just context. - Compiler-Level Accuracy: Powered by
@vue/compiler-sfc
for guaranteed correctness where possible. - Full API Visibility: Identifies the entire Vue API surface, including stores and passthrough attributes.
- Blazing Fast: Intelligent caching ensures zero performance impact.
- Configurable: Toggle icons and hovers to fit your workflow.
A simple, intuitive icon set helps you decode your template instantly.
Icon | Origin | What It Means |
---|---|---|
℗ | prop |
Data passed down from a parent (defineProps or props option). |
📥 | attrs / slots |
Attributes or slots passed from a parent. Available via $attrs , $slots , etc. |
📤 | emit |
An event sent to a parent component. Available via defineEmits or $emit . |
🔹 | ref |
A reactive primitive value (ref() in <script setup> ). |
🔷 | reactive |
A reactive object (reactive() or a data() property). |
⚡ | computed |
A derived value that updates automatically (computed option or function). |
🍍 | Pinia State |
State from a Pinia store, identified via imports. |
📦 | Vuex / Other Store |
State from Vuex or another global store. |
ƒ | method |
A function you can call from the template (methods option or a function in <script setup> ). |
• | Local Variable | A simple, non-reactive const or let in <script setup> . |
- Open VS Code.
- Go to the Extensions view (
Ctrl+Shift+X
). - Search for
VueGlimpse
. - Click Install.
VueGlimpse activates for .vue
files. This requires a language support extension like Vue (Official) (which you likely already have).
For a distraction-free view (e.g., during a presentation), you can quickly hide or show all VueGlimpse icons.
- Open the Command Palette (
Ctrl+Shift+P
orCmd+Shift+P
). - Type and select
VueGlimpse: Toggle Decorations
.
VueGlimpse is designed to work out of the box, but you can tailor its features to your workflow by editing your settings.json
.
Setting | Description | Default |
---|---|---|
vueGlimpse.enabled |
Globally enables or disables all features (icons & hovers). | true |
vueGlimpse.hovers.enabled |
Toggles the origin identifier tooltip on hover. | true |
vueGlimpse.statusBar.enabled |
Shows or hides the analysis status indicator in the status bar. | true |
vueGlimpse.icons.override |
Overrides default icons. Example: { "props": "🅿️", "ref": "R" } |
{} |
vueGlimpse.colors.override |
Overrides default colors. Example: { "props": "#90ee90", "ref": "terminal.ansiBlue" } |
{} |
- ❤️ Show Support: If you find VueGlimpse useful, please star the repository on GitHub!
- 🤝 Contribute: Have an idea or find a bug? Please open an issue.