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

@realitycollective/webxr-interactions

v0.1.0

Published

Engine-free core of the Reality Collective Interaction Extensions: interactables, interactors, behaviours (press, hinge, dial, slide, grab, toss-scoring, pulse, gaze-dwell), capability negotiation and feedback hooks - driven through the shared @realitycol

Readme

@realitycollective/webxr-interactions

The core of the Reality Collective Interaction Extensions. It holds all the interaction logic for WebXR and contains no 3D engine code at all.

Two words are used throughout. An interactable is an object that can be interacted with, such as a button. An interactor is the thing doing the interacting: a hand, controller, ray or mouse.

npm install @realitycollective/webxr-interactions

You usually do not install this directly. Install an adapter for your engine instead. Each adapter re-exports everything here, so your app depends on one package: threejs-interactions · iwsdk-interactions · xrblocks-interactions

What it provides

| Area | Detail | | --- | --- | | Behaviours | Ready-made interaction types: press (with an optional latching mode that stays down until pressed again), pulse, hinge, dial, slide, grab, and tossScore for throw-and-catch scoring | | Gaze | Optional look-to-activate. Require the user to be looking before an object responds, or let a sustained look trigger the press by itself | | Targeting | Picks one target per hand, trying the platform's own answer first, then a close-range touch, then a pointing ray. A short delay stops the target flickering between two objects on a boundary | | Capability checks | If the headset cannot do what a behaviour needs, the behaviour switches itself off and reports behaviourDisabled, rather than silently doing nothing | | Events | The core never calls into your code. It emits events and you subscribe | | Feedback | The core asks for a haptic pulse or a sound. Playing it is your app's job. routeHapticsToProvider is an opt-in helper that sends those requests straight to the controller |

All input arrives through the shared @realitycollective/webxr-input types, so the same core runs on any runtime that has an adapter.

Design rules

  • No engine imports. No three, no @iwsdk/*, no xrblocks. The adapter supplies the code that works out what a ray hits, and the code that moves an object.
  • Events out, never callbacks in. The core never reaches into your objects.
  • Fail loudly, not silently. A behaviour the hardware cannot support reports behaviourDisabled instead of quietly doing nothing.

Live demo

The interaction playground - the full station set, mouse-capable on desktop, VR button for headsets: webxr-interactions.pages.dev

Documentation

Full architecture notes, the behaviour catalogue and the playground demo live in the repository README.

License

MIT - see LICENSE.