vowdemon/jolt/use-jolt-flutter
Claude Code and agent skill by vowdemon/jolt
- community
Checking that the SKILL.md file is still in the repository.
Use when Flutter widgets need to track Jolt signals and rebuild automatically when those signals change — typically with JoltBuilder — or when converting between Flutter Listenable / ValueNotifier and Jolt signals.
Install
npx vskill@latest install vowdemon/jolt/use-jolt-flutterSKILL.md
Use Jolt Flutter
package:jolt_flutter/jolt_flutter.dart covers two responsibilities:
- Track Jolt signals from inside a Flutter widget and rebuild it automatically when those signals change.
- Convert between Flutter
Listenable/ValueNotifierand Jolt signals in either direction.
It re-exports package:jolt/jolt.dart, so importing only jolt_flutter brings Signal, Computed, Effect, Watcher, batch, and Readable along. Use use-jolt for pure Dart state with no widget or Listenable boundary.
API Choice Table
| Need | Use | |
|---|---|---|
Rebuild a subtree from every reactive .value read in build | JoltBuilder | |
| Rebuild only from explicitly declared dependencies | JoltBuilder.manual(deps: [...]) | |
Rebuild from a single Readable<T> | JoltWatcher<T> / JoltWatcher.value | |
Inline shorthand for one Readable<T> | readable.watch((v) => ...) | |
Rebuild only when a derived value changes by != | JoltSelector<T> | |
| Reactive callback that runs at frame end | PostFrameEffect | |
Expose Readable<T> as ValueListenable<T> | readable.listenable / JoltValueListenable<T> | |
Expose Writable<T> as ValueNotifier<T> (two-way) | writable.notifier / JoltValueNotifier<T> | |
Treat ValueListenable<T> as a Jolt Readable<T> | valueListenable.toListenableSignal() | |
Treat ValueNotifier<T> as a Jolt Signal<T> | valueNotifier.toNotifierSignal() |
Scope precision, narrowest first: JoltSelector > JoltWatcher > JoltBuilder > JoltBuilder.manual.
Widgets
JoltBuilder — auto-tracked rebuilds
Every .value read inside builder subscribes the widget. Multiple changes in one frame coalesce into a single rebuild.
JoltBuilder.manual — explicit deps
Reactive reads in builder display fresh values but do not subscribe; only entries in deps drive rebuilds.
JoltWatcher — single readable
JoltWatcher.value omits BuildContext. readable.watch(...) is the shortest form.
JoltSelector — narrow by a derived value
selector runs in a reactive scope and receives the previous result (null on first run). The widget rebuilds only when the new result is unequal (!=) to the previous one.
Frame Effects
PostFrameEffect works like core Effect, but notifications coalesce through SchedulerBinding.endOfFrame. Use it for reactive work that touches layout, BuildContext, controllers, focus, or navigation.
Flags: lazy: true defers the first run until run(); detach: true keeps the effect from retaining its enclosing scope; pass debug: JoltDebugOption.type('...') for meaningful labels in debug tools.
Listenable Bridges
Jolt → Flutter
readable.listenable and writable.notifier return cached wrappers (JoltValueListenable<T> / JoltValueNotifier<T>) until disposed. notifier is two-way: writes from either side propagate.
Dispose long-lived bridges when their owner ends; the extension getter creates a fresh wrapper on next access.
Flutter → Jolt
toListenableSignal() returns a read-only Readable<T>; toNotifierSignal() returns a writable Signal<T>. If the source is already a JoltValueListenable / JoltValueNotifier, the original Jolt node is returned — no extra wrapper.
ValueListenableSignal<T> and ValueNotifierSignal<T> are the concrete cached types. Prefer the extension methods unless a test or integration needs the concrete type. After disposal these bridges keep their last value; writes to a disposed writable bridge are ignored.
Rules
- Create mutable Jolt state outside
build(in a model,State, or owner) and dispose owners explicitly. - Match the widget to the dependency surface: prefer the narrowest that still captures the truly UI-driving reads.
- Use
JoltBuilder.manualwhen.valuereads inbuildare incidental and should not subscribe. - Reach for
PostFrameEffectonly when the callback needs frame timing or Flutter context; use coreEffectfor plain reactions. - Dispose bridges, frame effects, and owned signals when the Flutter owner is disposed.
Source Navigation
Read source before answering API-sensitive questions.
| Area | Path | |
|---|---|---|
| Public exports | packages/jolt_flutter/lib/jolt_flutter.dart | |
| Reactive widgets | packages/jolt_flutter/lib/src/widgets/ | |
| Frame effect | packages/jolt_flutter/lib/src/effect/post_frame_effect.dart | |
| Listenable bridges | packages/jolt_flutter/lib/src/listenable/ | |
| Example | packages/jolt_flutter/example/jolt_flutter_example.dart | |
| Tests | packages/jolt_flutter/test/ |
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/use-jolt-flutter/SKILL.md
Popularity
- Repository stars
- 101
- Repository forks
- 2
- 7-day trend score
- 23
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/vowdemon/jolt/use-jolt-flutter)