The Merge: Why Building AI Chat Is Harder Than It Looks Assistant UI, an open-source library for building AI chat interfaces, is used in over 2,000 GitHub repositories and receives 1.4 million npm downloads monthly, according to founder and CTO Simon Farshid in an episode of CodeRabbit's The Merge. Farshid emphasized that state management is the hardest part of building chat interfaces and that the final 20% of work requires product judgment, citing a coding-agent loop with CodeRabbit that fixes review findings and pushes updates. In CodeRabbit's latest episode of The Merge , I sat down with Simon Farshid, founder and CTO of Assistant UI https://www.assistant-ui.com/ , an open-source library for building AI chat and agent interfaces. We talked about the hidden work behind those interfaces, the growing importance of product judgment, and the coding-agent loop Simon runs with CodeRabbit. Assistant UI gives React developers customizable components for AI chat and handles the underlying work, including streaming responses, conversation state, attachments, message editing, voice, and connections to agent backends. The library was born out of Simon's hackathon project. He kept reaching for the same chat interface across his experiments and startup ideas, so he built one. "I didn't plan to make it into a startup," he said. "It was something that I needed myself." Turns out, plenty of other developers had the same problem. Assistant UI now shows up in well over 2,000 open-source GitHub repositories and gets 1.4 million npm downloads a month, including package updates. The hard part is the state “Building chat interfaces seems very easy,” Simon said. “The hard part is state management.” A chat box looks simple until the response starts. Text streams in while Markdown is still rendering. A user may attach a file, edit an earlier message, stop a run, or switch to voice. Every action changes what appears on screen and the conversation state underneath it. People arrive with habits formed by ChatGPT, Claude, and other polished AI products. They expect an embedded agent to respond smoothly and let them interrupt or correct it without losing the conversation. Assistant UI manages the runtime state and common chat behavior so teams can focus on the interactions their product actually needs. The last 20% is where taste matters When our conversation turned to coding agents, Simon focused on the work that remains after a clear specification becomes code. “You get 80% of the work done with 10% of the effort,” Simon said. “All the alpha is in the remaining 20%.” For Simon, taste is practical. It shows up in a clean API, a useful interaction, or a feature that solves a recurring problem without forcing every team into the same design. He tests new patterns in customer codebases, then brings the ones that hold up into the main library. The review loop running on Simon’s machine Towards the end of the episode, Simon described a review loop that pairs his coding agent with CodeRabbit. “One really cool loop is having an agent look at the CodeRabbit errors and then fixing them and pushing updates,” he said. By “errors,” Simon meant the findings CodeRabbit surfaces during review. In the loop he described, his coding agent fixes straightforward findings and pushes an update. When a finding is less certain, the agent summarizes it for Simon, who decides what should be changed before the next review. He is experimenting with similar loops elsewhere in his workflow. Many of them run overnight, including one that checks Assistant UI's documentation file by file and updates anything that has fallen behind. Simon calls this way of working “lean forward.” AI can get a project most of the way there with little effort. However, he says, engineers must stay involved in the remaining work, where product judgment, careful review, and attention to detail make all the difference in the final product. Watch the full episode of The Merge https://youtu.be/o41cg-3cM2Q for our conversation about Assistant UI's open-source beginnings, the future of generative interfaces, and the development loops Simon is already putting to work.