gRPC-web is a JavaScript implementation of gRPC for browser clients.
The tool solves the problem of enabling web browsers to communicate with gRPC services, which traditionally require HTTP/2 and binary protocols not directly supported by browser APIs. gRPC-web works by routing client requests through a proxy—Envoy by default—that translates between the gRPC protocol and a format the browser can handle. Clients connect to this proxy rather than directly to gRPC services, allowing developers to use gRPC's protocol buffer definitions and code generation in web applications.
Developers should choose gRPC-web when building browser-based clients that need to communicate with gRPC backends and want to leverage protocol buffers for service definitions and code generation. The tool currently supports unary RPCs and server-side streaming RPCs, though server-side streaming requires the grpcwebtext wire format mode. Client-side and bidirectional streaming are not yet supported. The project includes a runtime library available on npm and code generator plugins that work with the protoc compiler to generate JavaScript client stubs and message classes from .proto files. Setup requires installing protoc, the protoc-gen-js plugin, and the protoc-gen-grpc-web plugin, with Docker images available that include these prerequisites.
The project maintains active engagement with its roadmap, documenting planned support for additional languages and streaming modes. Development includes both core library updates and example applications demonstrating real-world usage patterns. The team regularly processes contributions and maintains documentation covering quick-start scenarios and advanced use cases.