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

@effuse/core

v2.0.3

Published

The core library for Effuse. It provides the reactive Signals engine and the lightweight DOM renderer, serving as the foundation for building interactive interfaces.

Readme

Framework Direction

Effuse core is moving toward a capability-first framework model: typed layers, local layer aliases in define({ script }), shared hook/component layer DX, and layer-owned server APIs/actions with client-side action helpers and server manifests for typed clients. Server handlers also receive validation helpers for params, query, headers, JSON bodies, and form data so request contracts live next to the layer that owns the capability. Typed server errors can be returned with ctx.response.error, thrown with LayerServerError, and narrowed from action clients through LayerActionError<T>. Layer-owned server routes and actions can also declare middleware plus cache, CORS, runtime, region, and duration metadata that flows into responses and the server manifest.

Read the detailed proposal in FRAMEWORK_DX_PROPOSAL.md.

Browser Hooks

Core browser hooks keep server rendering and the browser's pre-mount hydration pass deterministic. Storage reads, DOM listeners, element-ref resolution, and observer construction begin after component mount.

| Hook | Standalone cleanup | | --- | --- | | useLocalStorage, useSessionStorage | result.dispose() | | useOnClickOutside | returned stop() function | | useResizeObserver, useIntersectionObserver | signal.stop() |

const size = useResizeObserver(() => panelRef);
const preferences = useLocalStorage('preferences', defaults);

Component-owned resources stop automatically during unmount. Call the cleanup API when using a hook outside a component. A storage write requested before mount updates the signal immediately and is flushed at mount without first replacing it from the stored value.