# grpc/grpc-web

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/grpc-grpc-web).**

9,229 stars · 798 forks · JavaScript · Apache-2.0

## Links

- GitHub: https://github.com/grpc/grpc-web
- Homepage: https://grpc.io
- awesome-repositories: https://awesome-repositories.com/repository/grpc-grpc-web.md

## Topics

`grpc` `javascript` `web`

## Description

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.

## Tags

### Web Development

- [Browser gRPC Clients](https://awesome-repositories.com/f/web-development/web-infrastructure-deployment/web-clients/grpc-web-client-support/browser-grpc-clients.md) — Calling gRPC services from web browsers through an HTTP proxy using Protocol Buffers for serialization.
- [Bidirectional Streams](https://awesome-repositories.com/f/web-development/real-time-data-streaming/bidirectional-streams.md) — Send and receive a continuous flow of messages over a single connection for real-time bidirectional communication. ([source](https://grpc.io/docs/))
- [Remote Procedure Calls](https://awesome-repositories.com/f/web-development/remote-procedure-calls.md) — Send requests to a remote service through a proxy and receive responses using standard HTTP so frontend code can invoke backend methods. ([source](https://cdn.jsdelivr.net/gh/grpc/grpc-web@master/README.md))
- [gRPC-Web Client Support](https://awesome-repositories.com/f/web-development/web-infrastructure-deployment/web-clients/grpc-web-client-support.md) — A JavaScript library that lets browser applications call gRPC services through an HTTP proxy using Protocol Buffers for serialization.
- [Browser gRPC Streaming Clients](https://awesome-repositories.com/f/web-development/web-infrastructure-deployment/web-clients/grpc-web-client-support/browser-grpc-streaming-clients.md) — A client implementation that supports unary, server-streaming, and bidirectional streaming RPCs from web browsers over HTTP.

### Data & Databases

- [Protocol Buffers Serializers](https://awesome-repositories.com/f/data-databases/binary-serialization-formats/protocol-buffers-serializers.md) — Encode and decode data using a binary serialization format, ensuring efficient and type-safe payloads between client and server. ([source](https://grpc.io/docs/))
- [gRPC Stub Type Definitions](https://awesome-repositories.com/f/data-databases/schema-generators/typescript-type-generators/grpc-stub-type-definitions.md) — Generate type definitions or full TypeScript output alongside the stub so editors provide type checking. ([source](https://cdn.jsdelivr.net/gh/grpc/grpc-web@master/README.md))
- [Server-Pushed Message Streams](https://awesome-repositories.com/f/data-databases/typed-data-collections/sequence-management/asynchronous-streams/multiplexed-message-streams/server-pushed-message-streams.md) — Receive a sequence of messages pushed by a gRPC service over a single connection, allowing real-time data delivery to the browser. ([source](https://grpc.io/docs/languages/web))

### Development Tools & Productivity

- [gRPC Interceptor Libraries](https://awesome-repositories.com/f/development-tools-productivity/grpc-interceptor-libraries.md) — Attaching interceptors to client calls in the browser to add cross-cutting logic like authentication and retries.
- [Wire Format Selection](https://awesome-repositories.com/f/development-tools-productivity/language-specific-dependency-managers/binary-compatibility-management/wire-format-compatibility-management/wire-format-selection.md) — Choose between a text format or a binary format for the payload, each with different browser compatibility. ([source](https://cdn.jsdelivr.net/gh/grpc/grpc-web@master/README.md))
- [TypeScript Stub Typings](https://awesome-repositories.com/f/development-tools-productivity/typescript-declaration-generators/typescript-stub-typings.md) — Generates .d.ts declarations or full TypeScript output alongside JavaScript stubs, providing compile-time type checking for client code.

### Networking & Communication

- [HTTP Bidirectional Streaming](https://awesome-repositories.com/f/networking-communication/bidirectional-streaming-protocols/http-bidirectional-streaming.md) — Implements bidirectional message streaming by multiplexing multiple HTTP connections or using chunked transfer encoding for real-time communication.
- [gRPC-Web Bridging](https://awesome-repositories.com/f/networking-communication/grpc-interfaces/grpc-web-bridging.md) — Translating gRPC semantics into HTTP/1.1 or HTTP/2 requests so browsers can call remote procedures without native gRPC support.
- [Unary Interceptors](https://awesome-repositories.com/f/networking-communication/grpc-interfaces/unary-interceptors.md) — Modify outgoing requests and incoming responses for unary gRPC calls by implementing a defined interceptor interface. ([source](https://grpc.io/blog/grpc-web-interceptor/))
- [Unary and Streaming Interceptors](https://awesome-repositories.com/f/networking-communication/grpc-interfaces/unary-interceptors/unary-and-streaming-interceptors.md) — Chain custom interceptors for unary or stream RPCs to add cross-cutting behavior like authentication or retries. ([source](https://cdn.jsdelivr.net/gh/grpc/grpc-web@master/README.md))
- [gRPC Service Implementations](https://awesome-repositories.com/f/networking-communication/polyglot-client-support/grpc-implementations/grpc-service-implementations.md) — Define remote procedure calls and messages with Protocol Buffers so clients and servers in different languages can communicate. ([source](https://grpc.io/docs/))
- [Pluggable Authentication Mechanisms](https://awesome-repositories.com/f/networking-communication/remote-procedure-calls/pluggable-authentication-mechanisms.md) — Integrate custom or standard authentication mechanisms into each remote procedure call. ([source](https://grpc.io/))
- [Server-Side Streaming](https://awesome-repositories.com/f/networking-communication/server-side-streaming.md) — Get a sequence of messages from a server-side streaming call as they arrive without waiting for the full response. ([source](https://cdn.jsdelivr.net/gh/grpc/grpc-web@master/README.md))
- [Bidirectional Stream Establishment](https://awesome-repositories.com/f/networking-communication/stream-multiplexers/bidirectional-stream-establishment.md) — Send and receive a continuous stream of messages between client and server over a single persistent connection. ([source](https://grpc.io/))
- [Proxy Configurations](https://awesome-repositories.com/f/networking-communication/grpc-interfaces/grpc-web-bridging/proxy-configurations.md) — Route browser gRPC-web requests through a compatible proxy such as Envoy, Nginx, or a dedicated Go proxy. ([source](https://cdn.jsdelivr.net/gh/grpc/grpc-web@master/README.md))
- [Ordered Interceptor Chains](https://awesome-repositories.com/f/networking-communication/grpc-interfaces/unary-interceptors/unary-and-streaming-interceptors/ordered-interceptor-chains.md) — Attach an ordered array of unary or stream interceptors to a client instance at creation time. ([source](https://grpc.io/blog/grpc-web-interceptor/))
- [Message Interception](https://awesome-repositories.com/f/networking-communication/message-bus-interfaces/message-interception.md) — Wrap the response stream to intercept events and modify messages as they arrive from the server. ([source](https://grpc.io/blog/grpc-web-interceptor/))

### Programming Languages & Runtimes

- [Protocol Buffer Schemas](https://awesome-repositories.com/f/programming-languages-runtimes/protocol-buffer-schemas.md) — Describe a remote procedure call service using a language-neutral schema for structured data serialization. ([source](https://grpc.io/))

### Software Engineering & Architecture

- [Protobuf Stub Generators](https://awesome-repositories.com/f/software-engineering-architecture/interface-definition-languages/type-safe-code-generators/protobuf-stub-generators.md) — Turn schema definitions into message classes and a service client stub that handles serialization and transport. ([source](https://cdn.jsdelivr.net/gh/grpc/grpc-web@master/README.md))
- [JavaScript Client Stubs](https://awesome-repositories.com/f/software-engineering-architecture/interface-definition-languages/type-safe-code-generators/protobuf-stub-generators/javascript-client-stubs.md) — Generates JavaScript message classes and client stubs from .proto definitions, handling serialization and deserialization automatically.
- [RPC Interceptors](https://awesome-repositories.com/f/software-engineering-architecture/request-interceptors/service-interceptors/rpc-interceptors.md) — Wrap unary or stream interceptors around remote calls to inject cross-cutting logic like authentication or retries. ([source](https://cdn.jsdelivr.net/gh/grpc/grpc-web@master/README.md))
- [Deadline Management](https://awesome-repositories.com/f/software-engineering-architecture/deadline-management.md) — Specify a Unix timestamp deadline for a remote call, causing an error if the call exceeds that time. ([source](https://cdn.jsdelivr.net/gh/grpc/grpc-web@master/README.md))
- [Client-Side Interceptor Attachment](https://awesome-repositories.com/f/software-engineering-architecture/request-interceptors/service-interceptors/rpc-interceptors/client-side-interceptor-attachment.md) — Attach one or more interceptor instances to a client when it is instantiated, applying them to all subsequent remote procedure calls. ([source](https://grpc.io/blog/grpc-web-interceptor/))
- [Deadline Verification](https://awesome-repositories.com/f/software-engineering-architecture/request-validation/deadline-verification.md) — Pass a timestamp header on a remote call so the server aborts the call if it exceeds the specified time limit. ([source](https://cdn.jsdelivr.net/gh/grpc/grpc-web@master/README.md))

### Artificial Intelligence & ML

- [Server-Streaming Interceptors](https://awesome-repositories.com/f/artificial-intelligence-ml/grpc-call-interception/server-streaming-interceptors.md) — Wrap a server-streaming response to intercept stream events and modify response messages as they arrive. ([source](https://grpc.io/blog/grpc-web-interceptor/))
