# @grpc/grpc-js

> gRPC Library for Node - pure JS implementation

Latest version **1.14.4** (published 2026-05-20) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install @grpc/grpc-js
pnpm add @grpc/grpc-js
yarn add @grpc/grpc-js
bun add @grpc/grpc-js
```

## Health

**Score 50/100 (C)** — status: active.

Positive: no vulnerabilities; high maintenance score.

Warnings: low downloads; no types; no esm support.

## Facts

| | |
|---|---|
| Version | 1.14.4 |
| Published | 2026-05-20 |
| First published | 2018-04-30 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4841 |
| Author | Google Inc. |
| Maintainers | murgatroid99, grpc-packages, nicolasnoble |

## Links

- npm: https://www.npmjs.com/package/@grpc/grpc-js
- Repository: https://github.com/grpc/grpc-node.git#master
- Homepage: https://grpc.io/
- Issues: https://github.com/grpc/grpc-node/issues
- npm.io page: https://npm.io/package/@grpc/grpc-js

## Recent versions

- 1.14.4 (latest) — 2026-05-20
- 1.9.16 (false) — 2026-05-20
- 1.10.12 — 2026-05-20
- 1.11.4 — 2026-05-20
- 1.12.7 — 2026-05-20
- 1.13.5 — 2026-05-20
- 1.14.3 — 2025-12-11
- 1.14.2 — 2025-12-02
- 1.14.1 — 2025-11-07
- 1.14.0 — 2025-09-16
- 1.13.4 — 2025-05-21
- 1.13.3 — 2025-04-10
- 1.13.2 — 2025-03-26
- 1.13.1 — 2025-03-21
- 1.13.0 — 2025-03-11
- … 182 more at https://npm.io/package/@grpc/grpc-js/versions

## README

# Pure JavaScript gRPC Client

## Installation

Node 12 is recommended. The exact set of compatible Node versions can be found in the `engines` field of the `package.json` file.

```sh
npm install @grpc/grpc-js
```

## Documentation

Documentation specifically for the `@grpc/grpc-js` package is currently not available. However, [documentation is available for the `grpc` package](https://grpc.github.io/grpc/node/grpc.html), and the two packages contain mostly the same interface. There are a few notable differences, however, and these differences are noted in the "Migrating from grpc" section below.

## Features

- Clients
- Automatic reconnection
- Servers
- Streaming
- Metadata
- Partial compression support: clients can compress and decompress messages, and servers can decompress request messages
- Pick first and round robin load balancing policies
- Client Interceptors
- Connection Keepalives
- HTTP Connect support (proxies)

If you need a feature from the `grpc` package that is not provided by the `@grpc/grpc-js`, please file a feature request with that information.

This library does not directly handle `.proto` files. To use `.proto` files with this library we recommend using the `@grpc/proto-loader` package.

## Migrating from [`grpc`](https://www.npmjs.com/package/grpc)

`@grpc/grpc-js` is almost a drop-in replacement for `grpc`, but you may need to make a few code changes to use it:

- If you are currently loading `.proto` files using `grpc.load`, that function is not available in this library. You should instead load your `.proto` files using `@grpc/proto-loader` and load the resulting package definition objects into `@grpc/grpc-js` using `grpc.loadPackageDefinition`.
- If you are currently loading packages generated by `grpc-tools`, you should instead generate your files using the `generate_package_definition` option in `grpc-tools`, then load the object exported by the generated file into `@grpc/grpc-js` using `grpc.loadPackageDefinition`.
- If you have a server and you are using `Server#bind` to bind ports, you will need to use `Server#bindAsync` instead.
- If you are using any channel options supported in `grpc` but not supported in `@grpc/grpc-js`, you may need to adjust your code to handle the different behavior. Refer to [the list of supported options](#supported-channel-options) below.
- Refer to the [detailed package comparison](https://github.com/grpc/grpc-node/blob/master/PACKAGE-COMPARISON.md) for more details on the differences between `grpc` and `@grpc/grpc-js`.

## Supported Channel Options
Many channel arguments supported in `grpc` are not supported in `@grpc/grpc-js`. The channel arguments supported by `@grpc/grpc-js` are:
  - `grpc.ssl_target_name_override`
  - `grpc.primary_user_agent`
  - `grpc.secondary_user_agent`
  - `grpc.default_authority`
  - `grpc.keepalive_time_ms`
  - `grpc.keepalive_timeout_ms`
  - `grpc.keepalive_permit_without_calls`
  - `grpc.service_config`
  - `grpc.max_concurrent_streams`
  - `grpc.initial_reconnect_backoff_ms`
  - `grpc.max_reconnect_backoff_ms`
  - `grpc.use_local_subchannel_pool`
  - `grpc.max_send_message_length`
  - `grpc.max_receive_message_length`
  - `grpc.enable_http_proxy`
  - `grpc.default_compression_algorithm`
  - `grpc.enable_channelz`
  - `grpc.dns_min_time_between_resolutions_ms`
  - `grpc.enable_retries`
  - `grpc.max_connection_age_ms`
  - `grpc.max_connection_age_grace_ms`
  - `grpc.max_connection_idle_ms`
  - `grpc.per_rpc_retry_buffer_size`
  - `grpc.retry_buffer_size`
  - `grpc.service_config_disable_resolution`
  - `grpc.client_idle_timeout_ms`
  - `grpc-node.max_session_memory`
  - `grpc-node.tls_enable_trace`
  - `grpc-node.retry_max_attempts_limit`
  - `grpc-node.flow_control_window`
  - `channelOverride`
  - `channelFactoryOverride`

## Some Notes on API Guarantees

The public API of this library follows semantic versioning, with some caveats:

- Some methods are prefixed with an underscore. These methods are internal and should not be considered part of the public API.
- The class `Call` is only exposed due to limitations of TypeScript. It should not be considered part of the public API.
- In general, any API that is exposed by this library but is not exposed by the `grpc` library is likely an error and should not be considered part of the public API.
- The `grpc.experimental` namespace contains APIs that have not stabilized. Any API in that namespace may break in any minor version update.

---
_Source: https://npm.io/package/@grpc/grpc-js · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
