Skip to Main Content
Talk Intermediate MIT

Flexibility is complexity in disguise: Building frappe-ui for 10+ Products

Proposal status is Approved
Session Description

Frappe UI is a Vue component library that, over several years, became the foundation for many Frappe products like Frappe Cloud, Gameplan, Helpdesk, CRM, and Drive. One library serving many products. I also built Gameplan, one of the products on top of it, so I designed these APIs from both sides, as the library author and as the app developer who has to live with them every day. This talk is about the discipline that makes that work: a deliberately small, opinionated public API. Open source tools usually stay flexible so they can plug into anything, but flexibility is just complexity in disguise, and frappe-ui takes the opposite bet. I cover how we name components and props so people can guess them, why we pick strong defaults over endless configuration, and how we say no as every product asks for one more prop.

It also covers the part most design systems skip, which is data. frappe-ui ships first-class, opinionated data-fetching utilities (useDoc, useList, useCall) built for Frappe backends, because a real product design system has to answer how you load and save data, alongside what a button looks like.

When AI agents started writing frappe-ui code, the same opinionated, predictable API that served people also worked well for agents. The discipline we built for humans is what made the library agent-ready.

Key Takeaways
  • Be opinionated, even in open source. Flexibility is just complexity in disguise.

  • A design system is more than components. Give products an opinionated way to load and save data too.

  • Make correct usage the path of least resistance, and mistakes hard to miss.

  • A predictable API serves new teammates and AI agents alike.

References

Session Categories

Introducing a FOSS project or a new version of a popular project
Talk License: MIT

Which track are you applying for?

Main track

Speakers

Faris Ansari
Faris Ansari Design Engineer | Frappe

Faris Ansari is a Design Engineer at Frappe, where he builds frappe-ui, the open source Vue component library powering Frappe products. He also built Gameplan on top of frappe-ui, so he has designed these APIs from both sides, as the library author and as the app developer who has to live with them. He has spent years on the unglamorous problems of a design system used by many teams at once: naming, public API design, opinionated defaults, and backward compatibility, and is now figuring out what it takes for AI agents to build with a design system too. Find his work at github.com/netchampfaris.