# Valdres > Reactive state management for React, Vue, Svelte, Solid, and Angular — one store, shared across frameworks. Inspired by Recoil and Jotai. The framework-agnostic core also runs in plain JavaScript, Node, and workers. Every documentation page is available as plain markdown at the same URL with `.md` appended (e.g. `/react/atom.md`). Core API and plugin pages are framework-scoped: swap `/react/` for `/vue/`, `/svelte/`, `/solid/`, or `/angular/` to see that framework's variant of the same page. - [Complete documentation as one file](https://valdres.dev/llms-full.txt) ## Guides - [Core Concepts](https://valdres.dev/guides/core-concepts.md): Atoms, selectors, families, and stores — the building blocks of Valdres - [Example: Currency Converter](https://valdres.dev/guides/example-currency.md): Async data fetching with atoms and derived conversions with selectors - [Example: User Dashboard](https://valdres.dev/guides/example-dashboard.md): Dynamic collections with atomFamily, selectorFamily, and derived aggregates - [Example: Shared Notepad](https://valdres.dev/guides/example-notepad.md): Cross-framework state sharing with a synchronized text editor - [Example: Profile Editor](https://valdres.dev/guides/example-profile-editor.md): Edit-and-cancel pattern using scoped stores - [Example: Todo List](https://valdres.dev/guides/example-todo.md): A complete todo list using atomFamily, selectors, and transactions - [Installation](https://valdres.dev/guides/installation.md): Install Valdres and your framework adapter - [Introduction](https://valdres.dev/guides/introduction.md): Get started with Valdres — fast reactive state management for JavaScript and React - [Migration Guide](https://valdres.dev/guides/migration.md): Migrate from Recoil or Jotai to Valdres with one line - [Motivation](https://valdres.dev/guides/motivation.md): Why Valdres was created - [Works Everywhere](https://valdres.dev/guides/outside-react.md): Use Valdres outside of React — in Node.js, workers, tests, or any JavaScript environment - [Patterns & Recipes](https://valdres.dev/guides/patterns.md): Common patterns for building real apps with Valdres - [Performance](https://valdres.dev/guides/performance.md): Detailed benchmark results comparing Valdres to Jotai - [Quick Start with Angular](https://valdres.dev/guides/quick-start-angular.md): Get up and running with Valdres and Angular in under 5 minutes - [Quick Start with Solid](https://valdres.dev/guides/quick-start-solid.md): Get up and running with Valdres and Solid.js in under 5 minutes - [Quick Start with Svelte](https://valdres.dev/guides/quick-start-svelte.md): Get up and running with Valdres and Svelte 5 in under 5 minutes - [Quick Start with Vue](https://valdres.dev/guides/quick-start-vue.md): Get up and running with Valdres and Vue in under 5 minutes - [Schema Validation](https://valdres.dev/guides/schema-validation.md): Opt-in runtime validation for atoms and selectors with schema-driven type inference - [Scoped Stores](https://valdres.dev/guides/scoped-stores.md): Create isolated child stores that inherit state from their parent - [Transactions](https://valdres.dev/guides/transactions.md): Batch multiple state updates so subscribers fire only once - [TypeScript](https://valdres.dev/guides/typescript.md): Full type safety with Valdres atoms, selectors, and families - [Valdres vs Jotai](https://valdres.dev/guides/vs-jotai.md): How Valdres compares to Jotai - [Valdres vs Recoil](https://valdres.dev/guides/vs-recoil.md): How Valdres compares to Recoil ## Core API (framework-agnostic) - [atom](https://valdres.dev/react/atom.md): Create a reactive piece of state - [atomFamily](https://valdres.dev/react/atomFamily.md): Create a collection of atoms keyed by a parameter - [index](https://valdres.dev/react/index.md): Reactively filter an atom family by a memoized term - [selector](https://valdres.dev/react/selector.md): Create derived state from atoms or other selectors - [selectorFamily](https://valdres.dev/react/selectorFamily.md): Create a collection of selectors keyed by a parameter - [store](https://valdres.dev/react/store.md): Create and interact with a valdres store ## Framework bindings - [Provider](https://valdres.dev/react/Provider.md): React context provider for valdres stores - [Scope](https://valdres.dev/react/Scope.md): React component for creating a scoped child store - [useAtom](https://valdres.dev/react/useAtom.md): React hook for reading and writing atom state - [useResetAtom](https://valdres.dev/react/useResetAtom.md): React hook to reset an atom to its default value - [useSetAtom](https://valdres.dev/react/useSetAtom.md): React hook for writing atom state without subscribing - [useStore](https://valdres.dev/react/useStore.md): React hook to access the current valdres store - [useStoreId](https://valdres.dev/react/useStoreId.md): React hook returning the current store's id - [useTransaction](https://valdres.dev/react/useTransaction.md): React hook for batching multiple state updates into one transaction - [useValdresCallback](https://valdres.dev/react/useValdresCallback.md): Memoized React callback with transactional set/get/reset access - [useValue](https://valdres.dev/react/useValue.md): React hook for reading atom or selector values - [injectAtom](https://valdres.dev/angular/injectAtom.md): Angular function for reading and writing atom state - [injectResetAtom](https://valdres.dev/angular/injectResetAtom.md): Angular function to reset an atom to its default value - [injectSetAtom](https://valdres.dev/angular/injectSetAtom.md): Angular function for writing atom state without subscribing - [injectStore](https://valdres.dev/angular/injectStore.md): Angular function to access the current valdres store - [injectTransaction](https://valdres.dev/angular/injectTransaction.md): Angular function for batching multiple state updates into one transaction - [injectValue](https://valdres.dev/angular/injectValue.md): Angular function for reading atom or selector values - [provideValdres](https://valdres.dev/angular/provideValdres.md): Setup valdres in Angular's dependency injection - [provideValdresScope](https://valdres.dev/angular/provideValdresScope.md): Angular provider for creating a scoped child store - [createAtom](https://valdres.dev/solid/createAtom.md): Solid accessor for reading and writing atom state - [createResetAtom](https://valdres.dev/solid/createResetAtom.md): Solid function to reset an atom to its default value - [createSetAtom](https://valdres.dev/solid/createSetAtom.md): Solid setter for writing atom state without subscribing - [createTransaction](https://valdres.dev/solid/createTransaction.md): Solid primitive for batching multiple state updates into one transaction - [createValue](https://valdres.dev/solid/createValue.md): Solid accessor for reading atom or selector values - [useStore](https://valdres.dev/solid/useStore.md): Solid function to access the current valdres store - [ValdresProvider](https://valdres.dev/solid/ValdresProvider.md): Solid context provider for valdres stores - [ValdresScope](https://valdres.dev/solid/ValdresScope.md): Solid component for creating a scoped child store - [fromState](https://valdres.dev/svelte/fromState.md): Svelte reactive binding for reading and writing atom or selector state - [getValdresContext](https://valdres.dev/svelte/getValdresContext.md): Get the valdres store from Svelte component context - [resourceState](https://valdres.dev/svelte/resourceState.md): Svelte helper for consuming async selectors with loading and error - [scope](https://valdres.dev/svelte/scope.md): Svelte function for creating a scoped child store - [setValdresContext](https://valdres.dev/svelte/setValdresContext.md): Provide a valdres store to the Svelte component tree - [toStore](https://valdres.dev/svelte/toStore.md): Svelte store-contract bridge for atom or selector values - [transaction](https://valdres.dev/svelte/transaction.md): Svelte function for batching multiple writes in one commit - [createValdres](https://valdres.dev/vue/createValdres.md): Vue plugin factory for setting up valdres - [useAtom](https://valdres.dev/vue/useAtom.md): Vue composable for reading and writing atom state - [useResetAtom](https://valdres.dev/vue/useResetAtom.md): Vue composable to reset an atom to its default value - [useSetAtom](https://valdres.dev/vue/useSetAtom.md): Vue composable for writing atom state without subscribing - [useStore](https://valdres.dev/vue/useStore.md): Vue composable to access the current valdres store - [useTransaction](https://valdres.dev/vue/useTransaction.md): Vue composable for batching multiple state updates into one transaction - [useValue](https://valdres.dev/vue/useValue.md): Vue composable for reading atom or selector values - [ValdresScope](https://valdres.dev/vue/ValdresScope.md): Vue component for creating a scoped child store ## Plugins (work with every framework) - [bandwidth](https://valdres.dev/react/plugins/bandwidth.md): Reactive network throughput, latency, and jitter from a live measurement - [browser-color-scheme](https://valdres.dev/react/plugins/browser-color-scheme.md): Reactive prefers-color-scheme (dark / light) media query - [browser-contrast](https://valdres.dev/react/plugins/browser-contrast.md): Reactive prefers-contrast preference from the OS - [browser-device-motion](https://valdres.dev/react/plugins/browser-device-motion.md): Reactive device acceleration and rotation from DeviceMotionEvent - [browser-device-orientation](https://valdres.dev/react/plugins/browser-device-orientation.md): Reactive device tilt and compass heading from DeviceOrientationEvent - [browser-focus](https://valdres.dev/react/plugins/browser-focus.md): Reactive document focus state from the window focus/blur events - [browser-geolocation](https://valdres.dev/react/plugins/browser-geolocation.md): Reactive geolocation — position, accuracy, permission, and status - [browser-keyboard](https://valdres.dev/react/plugins/browser-keyboard.md): Reactive pressed-key state from keydown / keyup - [browser-online](https://valdres.dev/react/plugins/browser-online.md): Reactive online/offline status from navigator.onLine - [browser-presence](https://valdres.dev/react/plugins/browser-presence.md): Whether the user is present — tab visible and window focused - [browser-reduced-data](https://valdres.dev/react/plugins/browser-reduced-data.md): Reactive prefers-reduced-data media query - [browser-reduced-motion](https://valdres.dev/react/plugins/browser-reduced-motion.md): Reactive prefers-reduced-motion preference from matchMedia - [browser-reduced-transparency](https://valdres.dev/react/plugins/browser-reduced-transparency.md): Reactive prefers-reduced-transparency media query state - [browser-screen](https://valdres.dev/react/plugins/browser-screen.md): Reactive screen resolution and orientation from window.screen - [browser-screen-details](https://valdres.dev/react/plugins/browser-screen-details.md): Reactive multi-screen layout from the Window Management API - [browser-visibility](https://valdres.dev/react/plugins/browser-visibility.md): Reactive Page Visibility state (visible / hidden) - [browser-window](https://valdres.dev/react/plugins/browser-window.md): Reactive window inner size, tracked through resize events - [color-mode](https://valdres.dev/react/plugins/color-mode.md): System + user-selected color mode as reactive global atoms - [hotkeys](https://valdres.dev/react/plugins/hotkeys.md): Callback-style keyboard shortcuts backed by global combination atoms - [public-ip](https://valdres.dev/react/plugins/public-ip.md): Reactive public IP (v4/v6) with stale-while-revalidate - [redux-devtools](https://valdres.dev/react/plugins/redux-devtools.md): Connect a valdres store to the Redux DevTools browser extension