Jolt Ecosystem topic

Ecosystem

Stay in jolt while the problem is reactive state: source values, derived values, effects, watchers, scopes, streams, async state, and persistence.

Move to another package only when the surrounding app needs a specific integration.

Stay In jolt

SearchSession, derived results, remote-search effects, and scopes all belong in the core package. None of that requires Flutter.

Add jolt_flutter For Rendering

Use jolt_flutter when Flutter should rebuild from reactive reads:

JoltBuilder(
  builder: (context) => Text(model.session.summary.value),
);

The builder tracks the Jolt values read inside it and rebuilds when they change.

Add jolt_setup For Setup-Style Widgets

Use jolt_setup when widget code has setup-time resources: controllers, focus nodes, subscriptions, local signals, effects, and cleanup that should live with one widget instance.

Add jolt_hooks For HookWidget Code

Use jolt_hooks when the surrounding Flutter code already uses flutter_hooks:

final query = useSignal('');
final hasQuery = useComputed(() => query.value.trim().isNotEmpty);

That keeps Jolt resources in the hook lifecycle.

Add jolt_surge For Container-Style Features

Use jolt_surge when a feature should expose a state value and named actions in a Cubit-like class:

class SearchSurge extends Surge<SearchState> {
  SearchSurge() : super(const SearchState.empty());

  void setQuery(String query) {
    emit(state.copyWith(query: query));
  }
}

This is an architecture choice, not a requirement for using Jolt.

Add jolt_lint During Development

Use jolt_lint for analyzer checks, assists, and migrations around Jolt and setup-style code.

Classes

JoltDebug Jolt Ecosystem
Debug entrypoints for Jolt DevTools integration.