Skip to content

sigtrace-dev/sigtrace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

74 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SigTrace Logo

SigTrace

The missing debugger for reactive signals.

npm version VS Code installs License ELv2 CI status Sponsor on GitHub

Visualize, trace, and debug your reactive signal graphs in real time β€”
directly inside VS Code, with zero refactoring required.


πŸ“Έ Screenshots

πŸ“Š Activity Tab & Value Inspector

Showcases the structured signal activity, copy-name buttons, and the new collapsible line-wise JSON Tree Viewer. Activity Tab & Value Inspector

⏱️ Timeline Tab (Causal Event Chains)

Chronological swimlane details showing exact update event counters (e.g. event 1/7) and group collapse controls. Timeline Event History

🧩 Component View & Diagnostics

Flags memory hotspots, recursive cycles, and dead signals directly inside the editor sidebar. Component & Issues Panel

πŸ’» IDE Integration Context

Full workspace layout demonstrating editor sync with the running application. SigTrace IDE Context


✨ Features

Feature Description
πŸ“Š Activity Table Live, filterable event log for every signal read, write, and effect. Features Pinned/Others categorizations, hover copy icons, and a line-wise collapsible JSON tree inspector.
⏱️ Timeline (Causal Chains) Chronological swimlane list showing sequential tick-by-tick update paths, event counts, and chain collapse/hide filters.
🧩 Component Audits & Loops Group updates by component. Flags circular invalidation loops, computation hotspots (>2.0ms), and unused dead signals.
🎯 Click-to-Navigate Click any signal event, timeline card, or warning log to jump to the exact source declaration line in your editor.
πŸͺŸ Universal IDE Support Native extensions for both VS Code and JetBrains (WebStorm, IntelliJ) with full Webview synchronisation.
⚑ Zero-refactoring Setup Built-in CLI wrapper (npx sigtrace run) injects transformation compile hooks dynamically without editing your source code.

🧩 Supported Frameworks

Framework Version Status
Angular 17+ (Signals API) βœ… Fully supported
Vue 3+ (Composition API) βœ… Fully supported
SolidJS 1.8+ βœ… Fully supported
React 18+ (Signals API) πŸ”œ Coming soon
Svelte 5 (Runes) πŸ”œ Coming soon

πŸš€ Quick Start

Angular

1. Install packages:

npm install --save-dev @sigtrace/core @sigtrace/vite-plugin

2. Add the Vite plugin (vite.config.ts):

import { defineConfig } from 'vite';
import { angular } from '@analogjs/vite-plugin-angular';
import { sigtracePlugin } from '@sigtrace/vite-plugin';

export default defineConfig({
  plugins: [
    angular(),
    sigtracePlugin(), // ← add this
  ],
});

3. Open the DevTools panel in VS Code:

Cmd+Shift+P β†’ "SigTrace: Open DevTools Panel"

4. Run your app with the CLI wrapper and watch the signal graph come alive:

npx sigtrace run <project run command>

Note

Replace <project run command> with your actual local project execution command (for example: npm run dev, vite, ng serve, etc.).


Vue 3

⏳ Vue 3 adapter is in active development. Star the repo to be notified when it ships!

# Coming in v1.2.0 β€” track progress:
# https://github.com/sigtrace-dev/sigtrace/issues?q=label%3Avue3

SolidJS

⏳ SolidJS adapter is in active development.

# Coming in v1.2.0 β€” track progress:
# https://github.com/sigtrace-dev/sigtrace/issues?q=label%3Asolidjs

πŸ—οΈ Architecture

SigTrace is a monorepo with three focused packages:

sigtrace/
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ core/           @sigtrace/core         β€” WebSocket server + event types
β”‚   β”œβ”€β”€ vite-plugin/    @sigtrace/vite-plugin   β€” Build-time AST instrumentation
β”‚   └── extension/      sigtrace-devtools       β€” VS Code DevTools panel
└── demo/               Reference Angular app
Package npm Purpose
packages/core @sigtrace/core Lightweight WebSocket server (localhost:7337) that receives signal lifecycle events and streams them to connected clients
packages/vite-plugin @sigtrace/vite-plugin Vite transform that instruments signal(), computed(), effect(), and toSignal() calls at build time via AST rewriting
packages/extension VS Code Marketplace VS Code extension hosting the DevTools webview panel β€” graph, dashboard, CodeLens overlays, and source navigation

βš™οΈ How It Works

Your App Source                 Vite Build Pipeline              SigTrace Server
─────────────────               ────────────────────             ───────────────
const count =                   @sigtrace/vite-plugin            @sigtrace/core
  signal(0);          ───AST──▢  instruments calls    ──WS──▢   WebSocket server
                                 at build time                    :7337
                                        β”‚
                                        β–Ό                              β”‚
                              Instrumented Runtime                      β”‚
                              emits events on every               VS Code Extension
                              signal read/write/effect  ◀──WS────  connects &
                                                                   renders DevTools
  1. Build time: @sigtrace/vite-plugin rewrites your source using an AST transform. It wraps signal primitives with thin event emitters that record the signal name, source location, value, and timestamp.

  2. Runtime: The instrumented app connects to the @sigtrace/core WebSocket server and streams events as JSON messages.

  3. DevTools: The VS Code extension connects to the same WebSocket endpoint, receives events, and renders the interactive dashboard and graph in a Webview panel.

Production safety: The instrumentation is only injected in development mode. Your production bundles are completely unaffected.


πŸ“¦ Installation Reference

What you need Install command
WebSocket server + types npm i -D @sigtrace/core
Vite build plugin npm i -D @sigtrace/vite-plugin
VS Code extension Search "SigTrace DevTools" in VS Code extensions

πŸ”§ Configuration

@sigtrace/vite-plugin accepts an optional configuration object:

sigtracePlugin({
  port: 7337,          // WebSocket server port (default: 7337)
  enabled: true,       // Enable/disable instrumentation (default: true in dev)
  verbose: false,      // Log instrumentation activity to console (default: false)
  include: ['**/*.ts'],// Glob patterns to instrument (default: all .ts files)
  exclude: ['**/node_modules/**'],
})

🀝 Contributing

We welcome contributions! Whether it's a bug fix, a new framework adapter, or a UI improvement β€” all contributions are valuable.

Please read our Contributing Guide to get started, and review our Code of Conduct.

Quick links:


πŸ”’ Security

To report a security vulnerability, please open a GitHub Private Security Report rather than opening a public issue.

See our full Security Policy for disclosure timelines and supported versions.


πŸ“ Changelog

See CHANGELOG.md for a detailed history of changes across all versions.


πŸ“„ License

SigTrace is released under the Elastic License 2.0 (ELv2).

  • Allowed: Free for everyone (individuals, startups, and commercial enterprises) to use, modify, and run in development and production workflows.
  • Prohibited: You may not provide SigTrace to third parties as a hosted or managed commercial service, or sell competing developer tools derived directly from this repository.

Copyright Β© 2025 SigTrace Contributors.


Made with ❀️ by the SigTrace community

sigtrace.dev Β· Discord Β· npm Β· VS Code Marketplace

Releases

Sponsor this project

Packages

Contributors

Languages