Skip to main content

Technical articles by Lars about gRPC, Protocol Buffers, and API tooling.

View all authors

gRPC in the browser: gRPC-Web under the hood

In my previous post we explored the full gRPC protocol stack, from the .proto contract down to the HTTP/2 frame on the wire. We ended with a cliffhanger: browsers cannot speak native gRPC. I promised to cover that gap. This is that post.

We will look at why browsers are fundamentally incompatible with the gRPC HTTP/2 protocol and how gRPC-Web works around those limitations at the byte level. Along the way, we will dig into the Fetch API's streaming internals and close with what is (hopefully) coming in the near future.

gRPC deep dive: from service definition to wire format

In our previous posts (part 1 and part 2), we demystified Protocol Buffers and learned how data is encoded into compact binary.

But Protobuf is just the payload. To send this data between microservices, we need a transport protocol. Enter gRPC.

While many developers use gRPC daily, few look under the hood to see how it actually works. In this post, we’ll go beyond the basics and explore the full gRPC protocol stack: from the high-level service architecture and streaming models down to the low-level HTTP/2 framing and byte-level wire format.

Kreya 1.18 - What's New

Kreya 1.18 brings powerful new ways to visualize and validate your API workflows: Data Previews and Snapshot Tests. These features make it easier than ever to understand your API responses and ensure your integrations remain stable over time.

Import HAR Files in Kreya: Debug APIs & gRPC-Web

Kreya has introduced a powerful new feature: HAR file import! This update makes analysing, replaying and debugging HTTP and gRPC-Web requests directly in Kreya easier than ever. In this post, we’ll show you how to export HAR files from browsers and import them into Kreya. We will also explain why this is a secure and essential workflow for developers, particularly those working with gRPC-Web APIs.

Demystifying the protobuf wire format

Protocol buffers transform data into a compact binary stream for storage or transmission. In this blog post, we will use a proto definition of a sample message and serialize it to binary data.