chetan2921/flo/riverpod-offline
Claude Code and agent skill by chetan2921/flo
- community
Checking that the SKILL.md file is still in the repository.
Persist Riverpod notifier state offline with Storage and persist(); riverpod_sqflite, JsonPersist, key, destroyKey, cache duration, testing with in-memory storage. Use when saving state across app restarts or offline. Use this skill when the user asks about offline persistence, persisting state, or Riverpod storage.
Install
npx vskill@latest install chetan2921/flo/riverpod-offlineSKILL.md
The same SKILL.md was published earlier as majiayu000/claude-skill-registry/riverpod-offline.
Riverpod — Offline persistence (experimental)
Instructions
Offline persistence stores provider state on device so it survives restarts and works offline. Riverpod is storage-agnostic; packages like riverpod_sqflite provide a Storage implementation. Only Notifier-based providers can be persisted. The feature is experimental.
Creating a Storage
Install a package (e.g. riverpod_sqflite + sqflite) and create a Storage. With SQFlite:
Persisting a notifier
Inside the notifier's build, call persist with: the Storage (e.g. ref.watch(storageProvider.future)), a unique key, and encode/ decode for your state. Do not await persist; Riverpod handles it.
Keys
- Unique across all persisted providers (same key = same row, risk of corruption).
- Stable across restarts (changing the key loses restored state).
- For family providers, include the parameter in the key.
JsonPersist (code generation)
With riverpod_sqflite and codegen, use @JsonPersist() so key/encode/decode are generated:
Cache duration
By default state is cached for a short time (e.g. 2 days). For long-lived data (e.g. user preferences), set StorageOptions:
If using forever, plan to delete or migrate data when the app changes; Riverpod does not do migrations.
Destroy key (simple migration)
When the data shape changes, use destroyKey so old data is discarded:
Bump the string in new releases; old persisted state is then ignored and the provider starts fresh.
Waiting for decode
To initialize from persisted state instead of a network call, await the persist future:
Testing
Override the storage provider with Storage.inMemory() so tests don't need a real database:
For advanced migrations or custom storage strategies, you may still need to work with the database directly.
Security
- Security scanPassed, 95 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 repositoryChecking.github/skills/riverpod-offline/SKILL.md
Popularity
- 7-day trend score
- 0
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/chetan2921/flo/riverpod-offline)