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

@replit/protocol

v0.4.23

Published

JavaScript bindings for the Replit protocol

Downloads

73,598

Readme

@replit/protocol

JavaScript/TypeScript bindings for the Replit protocol.

Tree-Shakeable ESM Build

This package now includes a tree-shakeable ES Module build alongside the existing CommonJS build.

Usage

Legacy namespace imports (default, fully backward compatible):

import { api } from '@replit/protocol';

// Access types via namespace
const target = api.DeploymentConfig.Target.VM;
const token = api.token.ReplToken.create({ ... });

This is the default import and works in all environments without configuration changes.

Tree-shakeable ESM imports (recommended for new code in Next.js apps):

import { Persistence, ReplToken_WireFormat, Timestamp } from '@replit/protocol/esm';

// Direct access to types
const persistence: Persistence = Persistence.NONE;
const format: ReplToken_WireFormat = ReplToken_WireFormat.PROTOBUF;

⚠️ Note: ESM imports require adding @replit/protocol to transpilePackages in next.config.js:

transpilePackages: ['@replit/protocol', /* other packages */]

CommonJS (Node.js require):

const { api } = require('@replit/protocol');
const { Command } = api;

Bundle Size Impact

The ESM build enables ~80-90% bundle size reduction through tree-shaking:

  • Full bundle: ~848 KB
  • Single type import: ~23 KB (96% reduction)

Key Differences

  • Legacy namespace (@replit/protocol): Uses api.token.ReplToken, imports everything
  • ESM direct imports (@replit/protocol/esm): Uses ReplToken_WireFormat, tree-shakeable
  • ESM uses protobuf-ts with toBinary()/fromBinary() instead of encode()/decode()
  • ESM uses native BigInt instead of Long.js

Developing

  • Change goval/api/types.proto
  • In this directory:
    • pnpm build
  • Change repl-it-web/package.json:
    "@replit/protocol": "^0.4.9",
    to
    "@replit/protocol": "file:../goval/api/npm",
  • Also change repl-it-web/shared/package.json:
    "@replit/protocol": "^0.4.9",
    to
    "@replit/protocol": "file:../../goval/api/npm",

Publishing

After your .proto changes are merged:

  • create a new branch
  • cd into api/npm
  • pnpm --no-git-tag-version version <new-version>
  • submit a pull request
  • merged
  • pull latest main
  • cd into api/npm
  • pnpm login if you're not authed (will need to be in our npm org)
  • pnpm publish
  • it will run a build
  • you be asked for 2fa
  • package will be published