gjendje

Storage-agnostic state management library for TypeScript and JavaScript
6,126
Install
npm install gjendje
Latest Version:1.5.0
Vue:3
License:MIT
Last Updated:Mar 31, 2026
Links: GitHub  ·  npm
Maintainer: charliebeckstrand
Screenshot

gjendje

NPM Version NPM Last Update GitHub License

gjendje is a storage-agnostic state management library for TypeScript and JavaScript. It gives you a single, unified API for reactive state — regardless of where that state lives.

Learn more

Install

npm install gjendje

Quick start

import { state } from 'gjendje'

const store = state({ count: 0 })

// set
store.set({ count: 1 })

store.set((prev) => ({ ...prev, count: prev.count + 1 }))

// get
store.get()

const { count } = store.get()

// reset
store.reset()

Examples

Framework Bindings

React

import { state } from 'gjendje'
import { useGjendje } from 'gjendje/react'

const counter = state({ counter: 0 })

function Counter() {
  const [count, setCount, resetCount] = useGjendje(counter)

  return <button onClick={() => setCount(prev => prev + 1)}>{count}</button>
}

React guide

Vue

<script setup>
  import { state } from 'gjendje'
  import { useGjendje } from 'gjendje/vue'

  const counter = state({ counter: 0 })

  const count = useGjendje(counter)
</script>

<template>
  <button @click="count++">{{ count }}</button>
</template>

Vue guide

Svelte

<script>
  import { state } from 'gjendje'
  import { useGjendje } from 'gjendje/svelte'

  const counter = state({ counter: 0 })

  const count = useGjendje(counter)
</script>

<button on:click={() => $count++}>
  {$count}
</button>

Svelte guide

API

get, peek, set, patch, mutate, reset, destroy, subscribe, watch, intercept, onChange

API reference

Primitives

computed, select, previous, readonly, collection, effect, when, resource, channel, toSignal, fromSignal

Primitives reference

Scopes

memory, local, session, url, bucket, server

Scope guide

Utilities

batch, snapshot, destroyAll, withHistory, withWatch, withServerSession

Utilities reference

DevTools

DevTools guide

Configure

scope, maxKeys, prefix, requireValidation, registry, ssr, sync, warnOnDuplicate, onChange, onDestroy, onError, onExpire, onHydrate, onIntercept, onMigrate, onQuotaExceeded, onRegister, onReset, onSync, onValidationFail

Configure guide

License

MIT

Icon

Created by Gulraiz

Related Packages

nanostores

A tiny (351 bytes) state manager for React/Preact/Vue/Svelte with many atomic tr...

202,069,944 7,630
nanostores-cjs

A tiny (266 bytes) state manager for React/Preact/Vue/Svelte with many atomic tr...

11,648 7,630
@erlihs/pinia-plugin-storage

A Pinia plugin for state persistence with multiple storage adapters

1,948 2
@nanostores/persistent

A store for Nano Stores state manager to keep data in localStorage

4,223,533 383
@nirtamir2/nanostores-persistent-session-storage

A store for Nano Stores state manager to keep data in sessionStorage

2,744 383

Version History

Version Released Vue License
1.5.0 >=3.3.0 MIT
1.4.1 >=3.3.0 MIT
1.4.0 >=3.3.0 MIT
1.3.7 >=3.3.0 MIT
1.3.6 >=3.3.0 MIT