vercel-labs/json-render · Official

zustand

Zustand adapter for json-render's StateStore interface. Use when integrating json-render with Zustand for state management via @json-render/zustand.

All-time #7271 Trending #6443 Hot #2952 First seen Mar 7, 2026
8-week activity · all time api

Installation

$ npx skills add vercel-labs/json-render --skill zustand

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from vercel-labs/json-render · top by installs.

npx skills add vercel-labs/json-render

Browse all from vercel-labs/json-render

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 16.1K
License LICENSE
Default branch main
Open issues 62
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 1,908 B
  • docs SUMMARY.md 1,855 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1,608 installs

SKILL.md

@json-render/zustand

Zustand adapter for json-render's StateStore interface. Wire a Zustand vanilla store as the state backend for json-render.

Installation

npm install @json-render/zustand @json-render/core @json-render/react zustand

Requires Zustand v5+. Zustand v4 is not supported due to breaking API changes in the vanilla store interface.

Usage

import { createStore } from "zustand/vanilla";
import { zustandStateStore } from "@json-render/zustand";
import { StateProvider } from "@json-render/react";

// 1. Create a Zustand vanilla store
const bearStore = createStore(() => ({
  count: 0,
  name: "Bear",
}));

// 2. Create the json-render StateStore adapter
const store = zustandStateStore({ store: bearStore });

// 3. Use it
<StateProvider store={store}>
  {/* json-render reads/writes go through Zustand */}
</StateProvider>

With a Nested Slice

const appStore = createStore(() => ({
  ui: { count: 0 },
  auth: { token: null },
}));

const store = zustandStateStore({
  store: appStore,
  selector: (s) => s.ui,
  updater: (next, s) => s.setState({ ui: next }),
});

API

zustandStateStore(options)

Creates a StateStore backed by a Zustand store.

Option Type Required Description
store StoreApi<S> Yes Zustand vanilla store (from createStore in zustand/vanilla)
selector (state) => StateModel No Select the json-render slice. Defaults to entire state.
updater (nextState, store) => void No Apply next state to the store. Defaults to shallow merge. Override for nested slices, or use (next, s) => s.setState(next, true) for full replacement.