<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/the-making-of-the-yelp-assistant-ui-wsn4mve8w" -->

---
title: The making of the Yelp Assistant UI | daily.dev
description: Yelp&#x27;s engineering team details how they built the Yelp Assistant chat UI, a large language model powered consumer feature that connects users to local...
canonical: https://daily.dev/posts/the-making-of-the-yelp-assistant-ui-wsn4mve8w
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: The making of the Yelp Assistant UI | daily.dev
og:description: Yelp&#x27;s engineering team details how they built the Yelp Assistant chat UI, a large language model powered consumer feature that connects users to local...
og:url: https://daily.dev/posts/the-making-of-the-yelp-assistant-ui-wsn4mve8w
og:image: https://api.daily.dev/og/posts/wsN4mVe8W.png
og:image:alt: The making of the Yelp Assistant UI
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# The making of the Yelp Assistant UI

**[Yelp Engineering](https://daily.dev/sources/yelp)** · 14 min read · 1 upvotes · 0 comments

## Summary

Yelp's engineering team details how they built the Yelp Assistant chat UI, a large language model powered consumer feature that connects users to local professionals. The team debated native versus server-driven UI approaches before settling on a hybrid architecture using Yelp's internal CHAOS server-driven UI framework for chat content, combined with native UI for the top bar and input bar. The post explains the chat loop mechanics, MessageEvent data model, quick replies, client actions like DisableChat, and how the architecture enabled rapid iteration without app store review delays, plus how the design was later reused to bootstrap a separate product called Biz Ask Anything.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://engineeringblog.yelp.com/2026/09/the-making-of-the-yelp-assistant-ui.html>

## Questions this post answers

### What is a server-driven UI (SDUI) architecture and why would you use it for a mobile chat app?

Server-driven UI is an architecture where the backend tells the client what to render and how to behave, so UI changes reach users within minutes of a backend deploy instead of waiting days for app store review and user updates. Yelp built its CHAOS framework for this purpose and used it to render the dynamic chat content in Yelp Assistant across iOS, Android, and web.

_Anyone weighing native versus server-driven UI for a chat product can compare real tradeoffs on daily.dev._

### How do you handle optimistic updates and typing indicators in a chat interface backed by an LLM?

When a user sends a message, the client immediately inserts the message and a typing indicator into a local dataset before the backend responds, giving instant feedback. Once the bot replies, the client removes the typing indicator, inserts the response, and optionally shows quick reply suggestions, while the input box stays disabled until the round trip completes.

_Developers building similar turn-based chat loops can find implementation patterns like this on daily.dev._

### Why would you build a chat UI as a hybrid of native and server-driven components instead of fully one or the other?

A hybrid approach is used because a pure server-driven framework may lack support for features like network requests or text input fields, while a pure native app loses the fast-iteration benefit of server-driven updates. Yelp Assistant kept the top bar and input bar native while rendering the dynamic chat content area through its CHAOS server-driven framework, balancing speed of iteration against missing framework capabilities.

_Teams deciding between native, server-driven, or hybrid UI can weigh similar real-world tradeoffs via daily.dev._

## Similar posts on daily.dev

- [How Yelp Built “Yelp Assistant”](https://daily.dev/posts/how-yelp-built-yelp-assistant--n1qvkuztz) · ByteByteGo · 3 upvotes · 0 comments
- [Building Biz Ask Anything: From Prototype to Product](https://daily.dev/posts/building-biz-ask-anything-from-prototype-to-product-9efe0mz1d) · Yelp Engineering · 0 upvotes · 0 comments
- [Yelp’s updated AI assistant can answer questions and book a restaurant or service in one conversation](https://daily.dev/posts/yelp-s-updated-ai-assistant-can-answer-questions-and-book-a-restaurant-or-service-in-one-conversatio-iz9vfgkay) · TechCrunch · 0 upvotes · 0 comments
- [Beyond the Menu Tree: How Yelp Built a Smarter Customer Success Chatbot with AI](https://daily.dev/posts/beyond-the-menu-tree-how-yelp-built-a-smarter-customer-success-chatbot-with-ai-m3kbyzylj) · Yelp Engineering · 0 upvotes · 0 comments
- [From Keyword Search to Ask AI: How We Upgraded AppSignal's Docs Experience](https://daily.dev/posts/from-keyword-search-to-ask-ai-how-we-upgraded-appsignal-s-docs-experience-ptrofd88x) · AppSignal · 0 upvotes · 0 comments

---

Tags: [#llm](https://daily.dev/tags/llm), [#mobile](https://daily.dev/tags/mobile)

[View this post on daily.dev](https://daily.dev/posts/the-making-of-the-yelp-assistant-ui-wsn4mve8w)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"The making of the Yelp Assistant UI","url":"https://daily.dev/posts/the-making-of-the-yelp-assistant-ui-wsn4mve8w","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/the-making-of-the-yelp-assistant-ui-wsn4mve8w"},"datePublished":"2026-09-29T17:43:01.190Z","dateModified":"2026-09-29T19:23:13.024Z","description":"Yelp's engineering team details how they built the Yelp Assistant chat UI, a large language model powered consumer feature that connects users to local...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/3b532428ecb7d02d0626a4d1d5f896b4?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/3b532428ecb7d02d0626a4d1d5f896b4?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Yelp Engineering","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Yelp Engineering","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/92002b3f0a104326937d9dbe0a0f66ee","url":"https://daily.dev/sources/yelp"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/the-making-of-the-yelp-assistant-ui-wsn4mve8w","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"llm,mobile","timeRequired":"PT14M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Yelp Engineering","item":"https://daily.dev/sources/yelp"},{"@type":"ListItem","position":3,"name":"The making of the Yelp Assistant UI"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/the-making-of-the-yelp-assistant-ui-wsn4mve8w#faq","mainEntity":[{"@type":"Question","name":"What is a server-driven UI (SDUI) architecture and why would you use it for a mobile chat app?","acceptedAnswer":{"@type":"Answer","text":"Server-driven UI is an architecture where the backend tells the client what to render and how to behave, so UI changes reach users within minutes of a backend deploy instead of waiting days for app store review and user updates. Yelp built its CHAOS framework for this purpose and used it to render the dynamic chat content in Yelp Assistant across iOS, Android, and web. Anyone weighing native versus server-driven UI for a chat product can compare real tradeoffs on daily.dev."}},{"@type":"Question","name":"How do you handle optimistic updates and typing indicators in a chat interface backed by an LLM?","acceptedAnswer":{"@type":"Answer","text":"When a user sends a message, the client immediately inserts the message and a typing indicator into a local dataset before the backend responds, giving instant feedback. Once the bot replies, the client removes the typing indicator, inserts the response, and optionally shows quick reply suggestions, while the input box stays disabled until the round trip completes. Developers building similar turn-based chat loops can find implementation patterns like this on daily.dev."}},{"@type":"Question","name":"Why would you build a chat UI as a hybrid of native and server-driven components instead of fully one or the other?","acceptedAnswer":{"@type":"Answer","text":"A hybrid approach is used because a pure server-driven framework may lack support for features like network requests or text input fields, while a pure native app loses the fast-iteration benefit of server-driven updates. Yelp Assistant kept the top bar and input bar native while rendering the dynamic chat content area through its CHAOS server-driven framework, balancing speed of iteration against missing framework capabilities. Teams deciding between native, server-driven, or hybrid UI can weigh similar real-world tradeoffs via daily.dev."}}]}
```

