Loading…
How Yelp Keeps Server-Driven UI Consistent Across Four Platforms
YelpRadu Comaneci, Software Engineer
Summary
Yelp maintains two major applications across Web, iOS, and Android, which previously led to fragmented server-driven UI implementations with mismatched backend component representations. To unify its server-driven UI framework, CHAOS, with its cross-platform design system, Cookbook, Yelp built an automated bridge library called Konbini. Konbini reads centralized JSON interface definitions through Jenkins pipelines to automatically generate synchronized libraries for Python, Kotlin, Swift, and TypeScript. These generated libraries handle component serialization on the backend and deserialization on client platforms. To maintain backward compatibility when component interfaces introduce breaking changes, client requests pass versioned spec identifiers, prompting the backend to execute migration methods that downcast newer component models to older supported versions.
Context
Yelp supports two major applications (Yelp and Yelp for Business) across Web, iOS, and Android, resulting in six platform variations. Before CHAOS, server-driven UI development was fragmented across teams, creating differing backend component representations, varying action handlers, and inconsistent properties that lacked alignment with Yelp's internal design system, Cookbook.
Approach / What changed
Yelp created Konbini, an automated code-generation bridge library maintained by its Design Systems team. Centralized JSON component interface definitions trigger Jenkins pipelines to generate four synchronized libraries: Python for backend serialization, Kotlin for Android, Swift for iOS, and TypeScript for Web. Konbini manages backward compatibility using versioned client specs and backend migration methods that backport newer component schemas to older client-supported models.
Takeaways
- Konbini generates four synchronized platform libraries from a single JSON component interface definition: Python for backend services, Kotlin for Android, Swift for iOS, and TypeScript for React on Web.
- Automated Jenkins pipelines trigger code generation and package publishing whenever new commits are pushed to the component interfaces repository.
- Client requests supply spec version identifiers (such as android@23.0), allowing backend services to invoke migration methods that transform newer component models into versions supported by older clients.
Related reading
Yelp ·
Building Biz Ask Anything: From Prototype to Product
Yelp expanded Yelp Assistant to business pages by developing a question-answering architecture that extracts concise, evidence-backed answers from reviews, photos, and structured facts. The production system replaces static snapshots with near-real-time streaming pipelines for reviews and structured properties alongside weekly batch ingestion for menus and website data. For each incoming query, the system evaluates intent, retrieves relevant context through keyword and embedding searches, and constructs targeted prompts with dynamically selected few-shot examples. Synthesized answers are augmented with supporting visuals and citations before being streamed token-by-token to users. Generating suggested questions directly from specific business content rather than generic categories improved user engagement by roughly fifty percent and reduced unanswerable queries by twenty-six percent.
Maria Christoforaki, Group Tech Lead; Shree Shalini Pusapati, Software EngineerYelp ·