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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions