A TypeScript library for building type-safe RPC APIs with Protobuf, supporting gRPC, gRPC-web, and Connect protocols.
Connect for ECMAScript (connect-es) is the TypeScript implementation of the Connect RPC framework, enabling developers to build type-safe APIs using Protocol Buffers. It provides seamless interoperability across web browsers, Node.js, and various server frameworks while maintaining simplicity and developer-friendly tooling.
TypeScript and JavaScript developers building type-safe, interoperable APIs that need to work across web browsers, Node.js servers, and multiple RPC protocols (gRPC, gRPC-web, Connect).
Developers choose Connect for ECMAScript because it offers end-to-end type safety through Protobuf code generation, supports three RPC protocols for maximum compatibility, and provides simple, cURL-friendly HTTP-based RPCs that are inspectable in network tools.
The TypeScript implementation of Connect: Protobuf RPC that works.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Generates TypeScript clients and servers directly from Protobuf schemas, ensuring compile-time error catching across the entire API stack, as shown in the example code.
Supports gRPC, gRPC-web, and Connect's own web-optimized protocol, enabling seamless integration with diverse clients and legacy systems without sacrificing compatibility.
Uses regular HTTP requests under the hood, making RPCs inspectable in network tools and callable via command-line tools like cURL for straightforward debugging and testing.
Provides official plugins and adapters for Node.js, Fastify, Next.js, Express, and web frameworks like React and Svelte, simplifying production deployment across common stacks.
Requires setting up and maintaining Protobuf compilation pipelines (e.g., with Buf or protoc), which adds complexity and learning curve compared to simpler REST or GraphQL setups.
Official support for emerging platforms like Bun, Deno, and Cloudflare Workers is acknowledged as experimental or lacking, relying on community issues for prioritization, as noted in the README.
Tightly integrated with Buf's ecosystem (e.g., Protobuf-ES), which may limit flexibility if moving away from their tools or if future breaking changes occur in major versions.