Morphos & Kosmesis are here.Explore
PraxisJS

@praxisjs/devtools

Changelog for @praxisjs/devtools — in-app developer tools overlay with @Debug and @Trace.

@praxisjs/devtools

0.3.2

Depends on the other @praxisjs/* packages through caret ranges (^2.3.0) instead of exact versions, so npm no longer installs a second copy of a package when two releases disagree, and upgrades no longer end in peer conflicts.

0.3.0

The published package no longer contains the package's tests (compiled tests in dist/__tests__, test sources in src/__tests__).

@Trace and @Debug no longer bring the panel into production bundles. The package was a single module, so an app that kept @Trace() in its production code bundled the whole devtools (about 50 kB minified) even though the decorator does nothing there. It is now built one file per module and marked "sideEffects": false, and the decorators check process.env.NODE_ENV where bundlers can fold it, so a production build keeps a few bytes of each decorator and neither the registry nor the panel.

Performance panel and profiler. A new Performance tab records what the reactive graph does — signal writes, effect runs, computed recomputations and their cost — and ranks components by the work their bindings and effects did. Registry.instance.profiler (start, stop, reset, snapshot) gives the same data from code; it installs itself as the graph's observer only while recording, so it costs nothing otherwise. PerformancePlugin, Profiler, ProfileSnapshot and OwnerStats are exported, and DevTools.init() exposes the registry as __PRAXIS_DEVTOOLS__ in the browser console.

@Debug options and coverage.

  • log: true | "trace" logs every change or call to the console (with a stack trace for "trace"); break: true | (next, prev) => boolean pauses in the debugger.
  • Accessor fields (@State, @Prop, @Persisted, …) are observed reactively, so changes made behind the setter — a parent passing a new prop — are reported too. Previously only assignments through the field were.
  • A method that returns a promise is recorded when it settles, with the resolved value or rejection and the full duration (it used to record the time until the promise was returned).
  • Observation stops on unmount.

@Trace({ slow }) warns in the console when a render takes longer than slow ms.

Production builds: @Debug and @Trace now return the member or class untouched when process.env.NODE_ENV === "production". The docs already promised this, but they used to wrap and record in every build.

Faster registry: a signal change appends to its history instead of copying it and the entry, and unmounting a component drops its signals through an index instead of scanning every signal. The panel itself is now compiled with the template compiler.

0.2.21

Updated dependencies — @praxisjs/[email protected].

0.2.20

Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].

0.2.19

Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].

0.2.18

Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].

0.2.17

Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected].

0.2.16

Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].

0.2.15

Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].

0.2.14

Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].

0.2.13

Updated Panel and DevToolsApp components to use the StatelessComponent default type parameter and @Prop() / @Emit() decorators for automatic JSX prop inference. Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected].

0.2.12

Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].

0.2.11

Refreshed workspace dependencies for stability and security (@types/node, eslint, unocss). Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected].

0.2.10

Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].

0.2.9

Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].

0.2.8

Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].

0.2.7

Event bus error isolation. Handlers registered via @Debug no longer short-circuit on the first error — all handlers run and errors are collected into an AggregateError. Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected].

0.2.6

Refactored @Debug and @Trace internals to use the new decorator factory helpers (createFieldDecorator, createMethodDecorator, createGetterObserverDecorator, createClassDecorator). No changes to public API or behavior. Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].

0.2.5

Regenerated UnoCSS bundle. Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected].

0.2.4

Bug fix: guarded against undefined entry in TimelineRow — previously caused a silent crash when the devtools panel was opened before the first component mounted.

0.2.3

Fixed JSX prop typing for StatelessComponent — LibraryManagedAttributes now uses InstancePropsOf directly, preventing the erroneous T | (T & (() => T)) type expansion. @Emit type signature relaxed from unknown to any for broader method compatibility.

0.2.2

Updated dependencies — @praxisjs/[email protected].

0.2.1

@Debug() now supports @Computed() getters. Computed values are tracked and historized in the Signals panel alongside @State fields.

0.2.0

Migrated to TC39 decorator context API. DevTools internals rewritten with StatefulComponent/StatelessComponent. Removed experimentalDecorators requirement.

0.1.0

Initial beta release — in-app overlay with Signals, Components, and Timeline panels. @Debug for tracking fields, getters, and methods. @Trace for component render and lifecycle instrumentation.

On this page