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

next-plugin-devtools-json

v3.1.6

Published

Next.js plugin for Chrome DevTools project settings - seamless development integration with rewrites and standalone server

Downloads

401

Readme

Next.js Plugin for DevTools Project Settings (devtools.json)

npm version License: MIT

Next.js plugin for generating the Chrome DevTools project settings file on-the-fly during development. This is the Next.js equivalent of vite-plugin-devtools-json.

This enables seamless integration with the new Chrome DevTools features:

  1. DevTools Project Settings (devtools.json), and
  2. Automatic Workspace folders.

Features

  • Universal compatibility: Works with Next.js 12, 13, 14, and 15+
  • All routing systems: Supports both pages/ and app/ router
  • All config formats: JavaScript, TypeScript, CommonJS, and ESM
  • All package managers: npm, yarn, pnpm, and bun support
  • Monorepo friendly: Works in monorepo setups
  • Zero configuration: Auto-setup with CLI command
  • Development only: Only runs during npm run dev
  • No API routes: Uses Next.js rewrites and standalone server
  • Robust cleanup: Ensures no lingering processes after shutdown

Installation & Setup

Automatic Setup (Recommended)

Run the setup command in your Next.js project:

npx next-plugin-devtools-json

This will:

  • ✅ Auto-detect your package manager (npm, yarn, pnpm, bun)
  • ✅ Install the plugin as a dev dependency
  • ✅ Update/create your next.config file with the plugin
  • ✅ Handle all config formats (CommonJS, ESM, TypeScript)
  • ✅ Configure both required DevTools endpoints

Works with all Next.js project types:

  • Next.js 12+ with Pages Router
  • Next.js 13+ with App Router
  • TypeScript and JavaScript projects
  • Monorepo setups

Manual Installation

If you prefer manual setup:

  1. Install the package:
# npm
npm install --save-dev next-plugin-devtools-json

# yarn  
yarn add --dev next-plugin-devtools-json

# pnpm
pnpm add --save-dev next-plugin-devtools-json

# bun
bun add --dev next-plugin-devtools-json
  1. Add to your Next.js config:

next.config.js (CommonJS):

const withDevToolsJSON = require('next-plugin-devtools-json');

/** @type {import('next').NextConfig} */
const nextConfig = {
  // your config
};

module.exports = withDevToolsJSON(nextConfig);

next.config.mjs (ESM):

import withDevToolsJSON from 'next-plugin-devtools-json';

/** @type {import('next').NextConfig} */
const nextConfig = {
  // your config
};

export default withDevToolsJSON(nextConfig);

How it works

This plugin runs a standalone HTTP server (on port 3001) during development and adds Next.js rewrites to proxy the DevTools endpoints to the server. This approach ensures compatibility with both Webpack and Turbopack while providing a truly plug-and-play experience without generating any files in your project.

The plugin serves the Chrome DevTools project settings JSON file at the well-known path (/.well-known/appspecific/com.chrome.devtools.json) as required by the Chrome DevTools specification, enabling Chrome DevTools to automatically recognize your local development project.

Endpoints available:

  • /.well-known/appspecific/com.chrome.devtools.json (Chrome DevTools standard)
  • /__devtools_json (alternative endpoint)

The endpoint serves the project settings as JSON with the following structure:

{
  "workspace": {
    "root": "/path/to/project/root",
    "uuid": "6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b"
  }
}

Where root is the absolute path to your project root folder, and uuid is a random v4 UUID, generated the first time you start the Next.js dev server with the plugin installed (it's cached in .next/cache/ for consistency).

Why not a pure Next.js solution?

We investigated using API routes, middleware, or static files, but each approach has significant limitations:

  • API routes: Would require generating files in your project (not plug-and-play)
  • Middleware: Limited to Edge runtime (no file system access for UUID persistence)
  • Static files: Cannot generate dynamic content (workspace paths, UUIDs)

Our standalone server approach provides the best balance of plug-and-play setup, universal compatibility (Webpack + Turbopack), and reliable functionality. See docs/INVESTIGATION.md for detailed analysis.

Chrome DevTools Setup

To enable automatic workspace folder detection in Chrome DevTools:

  1. Open Chrome DevTools
  2. Go to Settings (F1 or click the gear icon)
  3. Navigate to "Workspace"
  4. Enable "Automatically add workspace folders"

Once enabled, Chrome DevTools will automatically detect your Next.js project when you visit http://localhost:3000 during development.

Verification

To verify the plugin is working correctly:

  1. Start your Next.js dev server:

    npm run dev
  2. Check the endpoints are responding:

    • Visit http://localhost:3000/__devtools_json
    • Visit http://localhost:3000/.well-known/appspecific/com.chrome.devtools.json

    Both should return a JSON response like:

    {
      "workspace": {
        "root": "/path/to/your/project",
        "uuid": "6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b"
      }
    }
  3. Check Chrome DevTools console:

    • Open DevTools while visiting your Next.js app
    • Look for automatic workspace detection messages

Troubleshooting

Common Issues

Plugin not working?

  • Ensure you're running in development mode (NODE_ENV=development or npm run dev)
  • The plugin is disabled in production for security

Port 3001 already in use?

  • The plugin will log a warning but continue to work
  • You can specify a custom port (see Options section below)

Setup command not working?

  • Make sure you're in a Next.js project root (contains package.json with Next.js dependency)
  • The setup command auto-detects your package manager and config format

TypeScript config issues?

  • Use .js extension for Next.js config files (Next.js doesn't support .ts config files)
  • The setup command handles this automatically

Monorepo setup?

  • Run the setup command in each Next.js app directory
  • The plugin works independently in each package

Debugging

To enable debug output, set the environment variable:

DEBUG=next-plugin-devtools-json npm run dev

Options

The plugin accepts optional configuration:

const withDevToolsJSON = require('next-plugin-devtools-json');

module.exports = withDevToolsJSON(nextConfig, {
  uuid: "6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b", // Custom UUID
  port: 3002,                                   // Custom port
  endpoint: "/__devtools_json",                 // Custom endpoint
  enabled: true                                 // Explicitly enable/disable
});

Available options:

  • uuid - Custom UUID for the workspace (optional, auto-generated if not provided)
  • port - Custom port for the DevTools server (optional, defaults to 3001)
  • endpoint - Custom endpoint path (optional, defaults to /__devtools_json)
  • enabled - Explicitly enable/disable the plugin (optional, defaults to true in development)

Architecture

Why an extra server? This approach ensures compatibility with both Webpack and Turbopack while avoiding file generation in your project. See our investigation for details on why pure Next.js solutions aren't feasible.

Inspiration

This plugin is inspired by and serves as the Next.js equivalent of vite-plugin-devtools-json.

Contributing

Contributions are welcome! The project includes comprehensive tests:

# Run all tests
npm run test:all

# Run individual test suites
npm test                    # Unit tests
npm run test:quick         # Quick integration test
npm run test:compatibility # Full compatibility tests

The test suite verifies compatibility across:

  • Next.js 12, 13, 14, and 15+
  • CommonJS, ESM, and TypeScript configurations
  • Pages Router and App Router
  • All package managers

License

MIT