@grpc/grpc-js

Pure JavaScript implementation of gRPC clients and servers for Node.js.

Library
npm
v1.14.4
4,844stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
66/100Good
Development Activity32
Maintenance52
Community80
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
79/100Good
Architecture87
Code Quality85
Innovation78
Learning Curve65

@grpc/grpc-js is the official pure-JavaScript implementation of gRPC for Node.js, replacing the earlier C++-addon-based grpc package. It implements the core gRPC functionality — clients, servers, streaming calls, metadata, interceptors, load balancing policies, connection keepalives, and HTTP proxy support — entirely in TypeScript/JavaScript, so it runs on any platform supported by Node.js without native compilation.

The package is one part of the grpc-node monorepo, which also includes @grpc/proto-loader for compiling .proto files into runtime objects, grpc-tools for the protoc compiler and code generator, and smaller supporting services like @grpc/reflection and grpc-health-check. @grpc/grpc-js is the library most applications install directly to build gRPC clients and servers.

What You Get

  • Client and Server classes implementing the full gRPC call lifecycle: unary, client-streaming, server-streaming, and bidirectional streaming
  • Client interceptors and call/channel credentials for auth, TLS, and custom metadata handling
  • Pick-first and round-robin load balancing policies with automatic reconnection and connection keepalives
  • HTTP CONNECT proxy support for calling gRPC services through corporate proxies
  • Channelz-based introspection and configurable channel options for tuning message size, retries, and connection lifetime
  • A migration path and documented API differences for teams moving off the deprecated native grpc package

Common Use Cases

  • Building internal microservice-to-microservice RPC communication in Node.js backends
  • Implementing gRPC servers that Kubernetes-based or polyglot service meshes call into
  • Consuming gRPC APIs exposed by other languages (Go, Java, Python) from a Node.js client
  • Streaming large datasets or real-time updates between services using server- or bidirectional-streaming RPCs
  • Adding health-check and reflection endpoints to Node.js gRPC servers using the companion grpc-health-check and @grpc/reflection packages

Under The Hood

Architecture - The library centers on Channel (packages/grpc-js/src/channel.ts), which manages subchannels, connectivity state transitions, and name resolution, while Client and Server build the request/response call lifecycle on top of it via call.ts and call-interface.ts. Load balancing is pluggable through pick-first and round-robin policies, and filter-stack.ts/filter.ts implement a middleware-style pipeline (compression, deadlines, auth) that every call passes through, letting cross-cutting concerns like compression and interceptors compose independently of the core transport logic.

Tech Stack - Written entirely in TypeScript, compiled to CommonJS with generated protobuf types under src/generated, and built with a Gulp-based toolchain shared across the grpc-node monorepo’s packages. It has no native/C++ dependency, distinguishing it from the deprecated grpc package, and its main runtime dependency is @grpc/proto-loader for decoding .proto-defined message types.

Code Quality - The grpc-js package’s test/ directory contains 33+ top-level test files covering channel state transitions, load balancing, interceptors, credentials, and streaming behavior, run via Mocha as part of the monorepo’s shared CI. The README documents an explicit semantic-versioning policy, including which APIs (underscore-prefixed methods, the Call class, the experimental namespace) are excluded from that guarantee — a level of API-stability discipline uncommon in comparable libraries.

API Design - The API is intentionally close to the deprecated native grpc package to ease migration, with a documented list of behavioral differences (e.g. Server#bindAsync replacing Server#bind) and a full channel-argument compatibility table in PACKAGE-COMPARISON.md. Getting started requires loading a .proto file through @grpc/proto-loader and passing the resulting package definition into grpc.loadPackageDefinition(), which is a small amount of boilerplate but keeps the core library decoupled from any specific protobuf-loading strategy.

Used by 17 apps in this directory

TypeScript
72%
AGPL 3.0

APITable

Low Code Platforms · Databases

15,526

API-first collaborative spreadsheet-database platform that auto-generates REST APIs and lets teams build internal tools, CRMs, and dashboards without code.

View details
53
Repo Health
77
Technical
60
Dependency
Built with
TypeScript72%
Java22%
Updated 9 months ago
TypeScript
84%
MIT

Amical

Note Taking · AI Assistants

1,495

Local-first AI dictation that understands your active app — private, offline, and built for speed.

View details
79
Repo Health
82
Technical
67
Dependency
Built with
TypeScript84%
Updated 3 weeks ago
Rust
67%
MIT

Bun

Developer Tools

95,452

An all-in-one JavaScript and TypeScript toolkit — one Rust-and-JavaScriptCore binary that replaces Node.js, npm, a bundler, and a test runner with faster equivalents.

View details
92
Repo Health
91
Technical
66
Dependency
Built with
Rust67%
C++19%
Updated today
TypeScript
97%
AGPL 3.0

Checkmate

Devops · Analytics · Monitoring

10,556

Self-hosted uptime and infrastructure monitoring with multi-protocol checks, global geo-coverage, and beautiful real-time dashboards.

View details
91
Repo Health
82
Technical
69
Dependency
Built with
TypeScript97%
Updated yesterday
TypeScript
97%
Apache 2.0

Cline

AI Code Assistants

66,453

An open-source AI coding agent that lives in your editor and terminal — reads and edits your codebase, runs commands, browses the web, and requires human approval for every action by default.

View details
90
Repo Health
74
Technical
67
Dependency
Built with
TypeScript97%
Updated today
TypeScript
62%
Other

Flowise

Developer Tools · Automation · No Code Platforms

55,379

Drag-and-drop visual builder for AI agents, RAG pipelines, and multi-agent systems—deploy anywhere in minutes.

View details
91
Repo Health
77
Technical
64
Dependency
Built with
TypeScript62%
JavaScript27%
Updated 6 days ago
Go
84%
MIT

Hatchet

AI Development · Developer Tools · Automation

7,749

A Postgres-backed orchestration engine for background tasks, AI agents, and durable workflows that replaces Redis queues and multi-datastore durable execution platforms with a single self-hostable service.

View details
88
Repo Health
83
Technical
69
Dependency
Built with
Go84%
PLpgSQL11%
Updated today
Svelte
49%

Kener

Monitoring · Devops

5,114

Stunning, self-hosted status pages with real-time uptime monitoring, incident management, and multi-channel notifications in a single Docker container.

View details
85
Repo Health
76
Technical
68
Dependency
Built with
Svelte49%
TypeScript47%
Updated 2 weeks ago
TypeScript
97%
Other

Kibana

Analytics · Monitoring

21,251

Your open source window into the Elastic Stack — query, visualize, and act on data stored in Elasticsearch with real-time dashboards, AI-assisted search, and automated alerting.

View details
98
Repo Health
87
Technical
68
Dependency
Built with
TypeScript97%
Updated today

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search