PyCon DE & PyData 2026

5 Years of NiceGUI: What We Learned About Designing Pythonic UIs
, Titanium [2nd Floor]

NiceGUI has grown from a small experiment into a widely used framework for building modern web-based user interfaces entirely in Python. After five years of development, thousands of users, and countless design iterations, we have gathered a rich set of insights into what makes a UI framework feel truly “Pythonic” while still leveraging the power of the web platform.
This talk presents the key lessons learned while evolving NiceGUI, with a focus on how Python’s own language features can meaningfully improve the developer experience. We explore how context managers, method chaining, decorators, async/await, type hints, dataclasses, and even well-chosen default arguments contribute to a clean, expressive, and maintainable UI API. Attendees will walk away with a deeper understanding of how to design Python-first interfaces—whether for web apps, dashboards, or internal tools—without needing to write JavaScript, CSS, or frontend boilerplate.


Five years ago, the NiceGUI project set out to answer a simple question: Can we build modern, interactive web UIs entirely in Python without giving up power or flexibility? Since then, the framework has evolved into a production-ready, community-driven tool that builds on top of proven technologies such as HTML, CSS, JavaScript, Vue.js, Quasar, Tailwind, and FastAPI—while exposing a Pythonic interface that feels natural to Python developers.
This talk traces that journey and distills the design principles that worked, those that didn’t, and the patterns that ultimately enabled NiceGUI to provide a smooth developer experience.
We begin with a short demonstration of NiceGUI’s “3-line Hello World,” highlighting how familiar Python code can generate dynamic web interfaces. From there, we examine the technical foundations that allow the framework to stand on the shoulders of major frontend and backend ecosystems.
The core of the talk focuses on Python language features and how they shape API design:

  • Context managers to express hierarchy and UI composition intuitively.
  • Method chaining inspired by the builder pattern for concise, readable configuration.
  • Decorators (such as @page and @refreshable) to define routing and reactive behaviour without ceremony.
  • Async/await for event handlers, background tasks, and page functions.
  • Type hints to support static analysis, IDE completion, and clearer API intent.
  • Dataclasses as bindable, structured state containers.
  • Default arguments and sentinel patterns to allow powerful yet discoverable APIs.

Attendees will gain practical insights useful beyond NiceGUI itself: how to design Python APIs for GUI frameworks, dashboards, developer tools, or any domain where clarity, maintainability, and expressiveness matter. The talk is aimed at Python developers interested in web interfaces, framework design, or improving the ergonomics of their own libraries.


Expected audience expertise in your talk's domain:: Intermediate Expected audience expertise in Python:: Intermediate Public link to supporting material, e.g. videos, Github::

https://nicegui.io/

See also: Slides (5.2 MB)

Falko Schindler is a software engineer at Zauberzeug and a creator of the open-source web UI framework, NiceGUI. He specializes in building the company’s core software stack for robotics and automation projects.