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

@telic/react

v0.1.3

Published

React adapter for @telic/core — stable intent handles, presence-based mediation handles, and useSyncExternalStore memory hooks. Mounts are not intents.

Readme

@telic/react

React adapter for @telic/core — stable intent handles, presence-based mediation handles, and useSyncExternalStore memory hooks.

bun add @telic/react @telic/core react

Mounts are not intents

This adapter exposes no hook that begins an attempt on mount. A mount is not a user goal — mount-time begins are exactly what makes StrictMode's dev double-invocation corrupt tapes. Recording happens in event handlers and app logic, via the stable callbacks the hooks return. If you find yourself wanting useEffect(() => intent.begin(), []), the thing you are recording is a lifecycle, not an intent.

Hooks

| Hook | What it does | |---|---| | useIntent(intent, opts?) | Identity-stable { begin, run } delegating to the intent handle. Attempts begun through it that are still active on unmount abandon { why: "unmount" } (opt out with abandonOnUnmount: false). | | useHandle(name, handler) | Registers THE mediation handler for name while mounted (effect-registered; cleanup unregisters). Handler identity changes re-register — latest closure wins, no spurious handler-replaced. | | useMemorySeq(pattern?) | Re-renders on matching marks; returns the bound runtime's seq (a primitive — uSES-safe). | | useInProgress(pattern?) | Active attempts, memoized — recomputes only when the seq changed. | | useLastAttempt(pattern) | Most recently begun matching attempt, memoized the same way. | | <TelicProvider runtime={…}> | Binds all hooks in the subtree to an explicit runtime (tests/embedding). Without it, hooks follow the module-level default runtime. | | mediatorFor(runtime) | The shared per-runtime Mediator the provider uses — dispatch through it to reach useHandle handlers registered under that provider. |

Memory hooks are secondary surfaces (spinners, "still working…" affordances, debug panels) — memory is not truth, and no hook exposes a way to write.

StrictMode

Safe by construction, and covered by contract tests: the dev double-mount (mount → cleanup → mount) records no marks and abandons nothing (useIntent — no attempts exist until a handler fires), and ends with exactly one live registration (useHandle — parked dispatches drained by the first registration are not re-executed by the second).

SSR

All hooks render inert values on the server (the default runtime is silent there; seq 0, empty memory, no registrations — effects don't run). Nothing in the package touches window, and there is no react-dom dependency: it works under react-dom and react-native renderers.

Spec

The normative behavioral spec is SPEC.md (R1–R6); tests are written from it. Core semantics live in @telic/core's SPEC.md.