gRPC-Web is a JavaScript client library that enables browser applications to call gRPC services through an HTTP proxy, using Protocol Buffers for serialization. It provides a browser-based gRPC client that supports unary, server-streaming, and bidirectional streaming RPCs, along with a code generator that produces JavaScript and TypeScript client stubs from .proto service definitions.
The library includes an interceptor framework for attaching cross-cutting logic like authentication and retries to client calls, and supports setting Unix timestamp deadlines on RPCs for server-side timeout enforcement. It generates TypeScript type definitions alongside JavaScript stubs for type-safe client code, and offers a choice between text and binary wire formats for browser compatibility.
The project provides a complete toolchain for defining gRPC services with Protocol Buffers, compiling them into client stubs, and routing browser gRPC-web traffic through compatible proxies like Envoy or Nginx. It also supports pluggable authentication mechanisms for attaching credentials to remote procedure calls.