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

three-devtools

v0.1.0-alpha.4

Published

Next generation Three.js DevTools, it's modern and future-oriented.

Readme

| ⚠️ | three-devtools is currently in development and not yet ready for opensource. You can test the latest alpha build if you would like, but be warned, you will find many bugs and incomplete features, and API may be changed. Please file new issues here after searching to see if the issue already exists. Contributors welcome! | | --- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

Motivation

Original three-devtools and other three.js devtools are feature-lacking, outdated and lack of maintenance. This project aims to provide a modern and feature-rich devtools for three.js.

Usage

Browser Extension

Browser extension is working in progress.

Performance Limitation

Browser extension is running in an isolated environment, it can't access the three.js objects directly. So we need to inject a script to the page to communicate with the devtools. This will cause a performance penalty, so we recommend using Embedding Mode(Can be injected by browser extension or manually initialize) if care about performance.

Embedding Usage

Modern Project With Bundling (Vite, Webpack, Rollup, etc.)

1. install three-devtools to your project

// Choose one of the following commands depends on your package manager

npm install three-devtools -D
yarn add three-devtools -D
pnpm add three-devtools -D

2. initialize three-devtools in your code

⚠️ Be cautious, you must make sure that three-devtools has been initialized before initializing three.js, otherwise three-devtools cannot hook three.js correctly.

Option 1: If you want to enable some feature(such as object highlighting on pick), you have to pass the THREE module to the initialize method:
import * as THREE from 'three';
import { ThreeJsDevTools } from 'three-devtools';

ThreeJsDevTools.initialize({
  three: THREE,
});
Option 2: If you don't need those feature, you can just call the initialize method without passing the THREE module:
import { ThreeJsDevTools } from 'three-devtools';

ThreeJsDevTools.initialize();

Legacy Project Without Bundling

It's coming soon.

Roadmap

  • [ ] Scene Tree
    • [x] View scene tree
    • [x] Remove object
    • [x] Highlight selected object
    • [ ] Improve highlight effect
    • [ ] Pick object in scene to select
    • [ ] Search and filter objects in scene tree
  • [ ] Rendering pipelines
    • [ ] View rendering pipelines
  • [ ] Render Target
    • [ ] View all render targets
  • [ ] Inspector
    • [x] View basic render information
    • [x] View and edit basic object properties
    • [ ] View and edit basic material properties
    • [ ] View and edit basic texture properties
    • [ ] View and edit basic light properties
    • [ ] Visualize light probes
    • [ ] View and edit basic camera properties
    • [ ] View normals of vertexes
    • [ ] Shader edit and preview in real time
    • [ ] View and edit vertexes
  • [ ] Embedding Mode
    • [x] Embedding to user page
    • [x] Adjust embedding switch button position
    • [x] Adjust embedding panel width
    • [ ] Legacy project usage
    • [ ] Improve UI
  • [ ] Browser Extension
    • [ ] Chrome
    • [ ] Firefox
    • [ ] Edge
    • [ ] Safari
  • [ ] Misc
    • [x] Dark mode
    • [x] Automatic versioning and publishing
    • [ ] Issue and PR template
    • [ ] Unit test
    • [ ] E2E test
    • [ ] Internationalization and localization (i18n)
    • [ ] Performance optimization

Contribution

See Contributing Guide.

Credits

License

Licensed under the MIT license.