Skip to content

Latest commit

 

History

History
92 lines (63 loc) · 4.35 KB

File metadata and controls

92 lines (63 loc) · 4.35 KB
SignalTree Logo

SignalTree Overview and Specifications

This document consolidates the feature overview and technical specifications for the SignalTree ecosystem (September 2025).

Latest release (7.6.0)

  • DevTools auto-connect, path-based actions, and time-travel dispatch support
  • entityMap().byId() reactivity fix when IDs are set before collections
  • Derived .with() chaining preserves computed identity
  • Safer DevTools serialization and filtering options

Overview

  • Recursive typing with deep nesting and accurate type inference
  • Sub‑millisecond operations measured at 5–20+ levels
  • Memory efficiency via structural sharing and lazy signal creation
  • Small, focused packages with strong TypeScript support
  • Extensible via enhancers and optional packages

Core capabilities

  • Hierarchical signal trees with type-safe access and updates
  • Lazy signal creation on first access
  • Structural sharing for immutable updates
  • Compact bundle sizes across the ecosystem

Package ecosystem

SignalTree consists of one core package with all enhancers built-in, plus three optional add-on packages:

  • @signaltree/core: Complete state management solution including all enhancers (batching, memoization, middleware, devtools, time-travel, serialization, presets) plus built-in markers like entityMap, status, and stored
  • @signaltree/ng-forms: Angular Forms integration (separate package)
  • @signaltree/enterprise: Enterprise-scale optimizations for 500+ signals (separate package)
  • @signaltree/callable-syntax: Build-time transform for callable signal syntax (dev dependency, separate package)

All enhancers are exported from @signaltree/core — no need for separate enhancer packages.

Technical specifications

  • Angular 20.3+, TypeScript 5.5+, Node 18.17+ (development)
  • Browser: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
  • Core entry-point barrel compresses to ~0.75KB gzipped, while the full publishable @signaltree/core package is 25.63KB gzipped; tree-shake entry-point totals across the ecosystem measure 30.99KB gzipped and the full publishable output sums to ~36.31KB. Consolidated architecture removes ~4.28KB (≈15.9%) versus the legacy separate-package layout when every enhancer is imported.
  • Performance targets: operations maintain sub‑millisecond times across common depths

Performance targets (Sept 2025)

Metric Target Current
Operation latency (5 levels) <0.050ms 0.041ms
Operation latency (10 levels) <0.080ms 0.061ms
Operation latency (15 levels) <0.120ms 0.092ms
Operation latency (20+ levels) <0.150ms 0.104ms
Core bundle size (publishable) <30.00KB 25.64KB
Total ecosystem bundle size <40.00KB 36.32KB

* Entry-point barrels remain 0.75KB for @signaltree/core; the 30.99KB figure cited elsewhere reflects the sum of tree-shakeable facades prior to consumer bundling.

Frequency weighting system

Performance benchmarks use research-based frequency weighting to reflect real-world usage patterns:

  • Research-Based Multipliers: Derived from analysis of 40,000+ developer surveys and 10,000+ GitHub repositories
  • Smart Weight Adjustment: One-click application of weights from State of JS 2023 data and React DevTools Profiler analysis
  • Real-World Relevance: Weighted results prioritize operations that apps actually use frequently
  • Comprehensive Analysis: Reports ranking changes and weight impact alongside raw performance metrics

See Frequency Weighting System Documentation for complete methodology and implementation details.

Supported data types (serialization)

  • Primitives, objects, arrays
  • Date, RegExp, Map, Set
  • Circular references (handled)

Enhancers and composition

  • Extensible via tree.with(...) enhancers
  • Metadata-driven ordering with requires/provides
  • Prefer mutation (augment in place) to preserve identity

Integration notes

  • Angular-first usage; works with other frameworks (React, Vue, Svelte) via simple adapters
  • SSR hydration available via serialization

Source materials consolidated from FEATURES.md and SPECIFICATIONS.md.