reacton_generator

Code generation for the Reacton state management library. Uses build_runner to analyze reacton dependency graphs at build time and produce .reacton_graph.json files.

Installation

dev_dependencies:
  reacton_generator: ^0.2.0
  build_runner: ^2.4.0

Setup

Add a build.yaml to your project root:

targets:
  $default:
    builders:
      reacton_generator|reacton_graph_analyzer:
        enabled: true

Then run the builder:

dart run build_runner build

What It Does

Graph Analyzer

The graph analyzer scans all Dart files in lib/ for top-level reacton declarations (reacton(), computed(), asyncReacton(), selector(), family()) and produces a .reacton_graph.json file for each source file that contains reactons.

For a file like:

// lib/reactons/counter_reactons.dart
import 'package:reacton/reacton.dart';

final counterReacton = reacton(0, name: 'counter');
final doubleReacton = computed<int>((read) => read(counterReacton) * 2, name: 'double');

The builder produces:

[
  {
    "name": "counterReacton",
    "type": "dynamic",
    "reactonKind": "reacton",
    "source": "lib/reactons/counter_reactons.dart",
    "dependencies": []
  },
  {
    "name": "doubleReacton",
    "type": "dynamic",
    "reactonKind": "computed",
    "source": "lib/reactons/counter_reactons.dart",
    "dependencies": ["counterReacton"]
  }
]

Dependency Extraction

Inside computed() and asyncReacton() calls, the analyzer detects read(someReacton) invocations and records them as dependencies. This enables:

  • Static dependency graph visualization (consumed by DevTools and reacton graph)
  • Dead reacton detection at build time
  • Cycle detection before runtime

Annotations

Use @ReactonSerializable to generate Serializer<T> implementations for persistence:

import 'package:reacton_generator/reacton_generator.dart';

@ReactonSerializable()
class UserSettings {
  final bool darkMode;
  final String locale;

  UserSettings({required this.darkMode, required this.locale});
}

Integration

The generated .reacton_graph.json files are consumed by:

  • reacton_devtools -- Displays the static graph overlay in the Graph View tab
  • reacton_cli -- The reacton graph and reacton analyze commands use these files for offline analysis

Documentation

See the Reacton documentation for full API reference and guides. Source at github.com/sitharaj88/reacton.

License

MIT

Libraries

reacton_generator
Code generation for Reacton state management.