Skip to content

feat: Add gRPC Support  #414

@TBA5854

Description

@TBA5854

Description
We want to introduce gRPC-based communication for the Server-Driven UI (SDUI) system to replace or complement the existing REST/JSON approach.

The goal is to:

  • Improve performance (binary serialization, HTTP/2)
  • Enable strongly-typed UI contracts
  • Support bi-directional streaming for real-time or progressive UI updates
  • Make SDUI more scalable and maintainable across clients
  • With gRPC, the server will send UI schemas / component trees defined via .proto messages, and the client will render the UI dynamically based on these definitions.

Requirements:

  • Define protobuf schemas for SDUI components (layout, widgets, actions, styles)
  • gRPC service for fetching UI definitions
    Example: GetScreen(ScreenRequest) -> ScreenResponse
  • Support versioning of UI schemas to avoid client breakage
  • Enable bi-directional or server streaming for:
    • Incremental UI loading
    • Live UI updates (experiments, feature flags, real-time state)
  • Ensure backward compatibility with existing REST-based SDUI (if applicable)
  • Client-side gRPC support (mobile/web) with graceful fallback
  • Proper error handling and empty/partial UI responses
  • Authentication & authorization support (metadata / interceptors)
  • Documentation for proto definitions and rendering rules

Additional Context

gRPC is preferred due to:

  • Lower payload size vs JSON
  • Contract-first development
  • Better multi-platform client generation
  • This enables A/B testing, feature flags, and remote UI experiments without app updates
    Especially useful for:
    • Home screens
    • Dashboards
    • Dynamic forms
    • Experiment-heavy flows

Optional future extension:

  • Cacheable UI responses
  • UI diff / patch streaming instead of full screen reloads

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions