npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

varstor-react

v0.0.3

Published

Seamless integration of Varstor state manager into React applications with a React-like hook usage flow

Readme

Varstor React

Seamless integration of Varstor state manager into React applications, with a React-like hook-based flow.

How to install and prepare

Install all required libraries with

npm install varstor varstor-react

Usage

varstor-react exports two things.

First one is VarstorProvider component, and the second is useVarstor hook.

import { VarstorProvider, useVarstor } from 'varstor-react';

VarstorProvider component

It has one prop stores, which takes an array of Varstor instances from different namespaces.
The ChildComponents it embeds will be the consumers of the data from those stores.

<VarstorProvider stores={[...Varstor[]]}>
  <ChildComponent1 />
  <ChildComponent2 />
  <ChildComponent3 />
  ...
<VarstorProvider/>

useVarstor hook

This hook should be called from inside the ChildComponent to access the data of a Varstor store instance.

It takes the aforementioned Varstor instance as the one and only argument and returns all of its values.

const ChildComponent = () => {
  const { ...values } = useVarstor(Varstor);
  ...
}


That's it... Any data mutations within the stores will be immediately sent to consumer components.

The only other thing to learn is the usage of Varstors.

Example

import Varstor from 'varstor';
import { VarstorProvider, useVarstor } from 'varstor-react';

Varstor.add({ count: 0 });
Varstor.actions({ 
  increment: ({ get, set }) => set({ count: get().count + 1 })
});

const Component = () => {
  const { count, increment } = useVarstor(Varstor);
  return (
    <div>
      Count: {count} <button onClick={increment}>Increment</button>
    </div>
  );
}

function App () {
  return (
    // initial Varstor object from the library is also an instance
    // that has the initial namespace, which is an empty string
    <VarstorProvider stores={[Varstor]}>
      <Component />
    </VarstorProvider>
  );
}

Varstor.actions() is a nice way to encapsulate details of the store usage and follow React-like action flow.

But you can mutate the values directly from outside components or any way you like as well.

const timeStore = Varstor("time");

timeStore.add({ time: new Date() });

setInterval(() => timeStore.set({ time: new Date() }), 1000);

const Component = () => {
  const { time } = useVarstor(timeStore);
  const hours = time.getHours();
  const minutes = time.getMinutes();
  const seconds = time.getSeconds();

  return (
    <div>
      Time now - {hours}:{minutes}:{seconds}
    </div>
  );
};

function App () {
  return (
    <VarstorProvider stores={[timeStore]}>
      <Component />
    </VarstorProvider>
  );
}