Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>GraphyfyNew to Visual Studio Code? Get it now.
Graphyfy

Graphyfy

Travis Nguyen

|
2 installs
| (0) | Free
See how a TypeScript or JavaScript codebase fits together: an interactive graph of folders, files, classes and functions, connected by imports, calls, JSX renders and inheritance.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Graphyfy

A VS Code extension that draws a TypeScript or JavaScript codebase as a graph you can explore: folders, files, classes and functions, connected by the imports, calls, JSX renders and inheritance between them. It's for finding your way around code you didn't write, or haven't read in a while.

Using it

Run Graphyfy: Open Graph from the Command Palette, or click the graph icon in the title bar of a TypeScript or JavaScript editor. The graph opens beside your code, showing your folders with their files closed.

To Do
Open a file or class Click it
See what a function calls and what calls it Click it (the Details panel lists both)
Go to the code Double-click, or Go to code in Details
Close an open file or class Ctrl+click it (Cmd+click on macOS)
Find a function, class or file Press / and type
Clear the selection Esc
Find the symbol under your cursor Right-click in the editor, Graphyfy: Show in Graph

Arrows point from the code doing something to the code it does it to. An arrow that ends on a closed file stands for everything inside it, with a count.

What it understands

  • Imports: ES modules (named, default, namespace, re-exports and export * barrels), require(), dynamic import(), index files, and TypeScript's .js specifiers for .ts files.
  • Aliases: paths and baseUrl from tsconfig.json and jsconfig.json (@/components/Button), through extends, including the tsconfig.app.json that Vite projects keep them in. In a monorepo, each package uses the config nearest to it.
  • Calls: to imported and local functions, this.method(), super.method(), new Class(), methods on parameters and variables with a declared or constructed type, and on fields, including constructor parameter properties.
  • JSX: <Component /> is a render arrow, including components exported through memo() and similar wrappers.
  • Classes: extends and implements, and methods inherited from a base class.
  • CommonJS: module.exports = ..., module.exports = { a, b } and exports.name = ....

A call on a receiver whose type isn't known goes to the one method with that name among the files the caller imports, drawn dotted and labeled a guess. When there's more than one candidate, or the name is too common to guess from (map, get, remove), no arrow is drawn.

There's no type checker involved. Graphyfy parses with tree-sitter, so it needs no tsconfig.json, no build and no installed dependencies, and a file with a syntax error still contributes everything around the error. The cost is that some calls can't be followed: through callbacks and higher-order functions, through values whose type is only inferred, and through aliases defined only in a bundler's config (Vite's resolve.alias, webpack's resolve.alias). Treat the graph as a map, not a compiler's call graph.

Settings

Setting Default What it does
graphyfy.include **/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs} Files to analyze. .d.ts files are always skipped.
graphyfy.exclude node_modules, build output, minified files Files and folders to skip
graphyfy.maxFiles 3000 The most files to analyze
graphyfy.autoRefresh true Rebuild the graph when files are saved, created or deleted

Development

npm install
npm run build      # out/extension.js, out/webview.js and the tree-sitter grammars
npm test           # parser and resolver tests, then the bundled extension end to end
npm run typecheck

Press F5 to open sample/ (a small React app and Node server) in an Extension Development Host. The second launch configuration asks for any folder, to try it on a real project. node test/dump.js <folder> prints the nodes and edges Graphyfy finds there.

Path What it does
src/parser/ tree-sitter loading, and the one-pass extractor for TypeScript, TSX and JavaScript
src/graph/builder.ts Resolves imports, exports and calls across files into the graph
src/graph/aliases.ts Reads import aliases from tsconfig and jsconfig files
src/workspaceIndex.ts Finds and reads the workspace's files, and caches parses
src/panel.ts, src/extension.ts The webview panel, commands and auto-refresh
webview/model.ts What's open, what's visible, and arrow bundling
webview/layout.ts, webview/view.ts ELK layout and the Cytoscape canvas
webview/details.ts, webview/search.ts The Details panel and search

Acknowledgements

The architecture follows Code Graph, a C/C++ graph extension built at DubHacks 2026: tree-sitter in WebAssembly, name resolution the way a reader does it, nested boxes that open in place, and an ELK left-to-right layout.

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft