Skip to main content

FastUI - panacea or pipe dream?

Level:
intermediate
Duration:
30 minutes

Abstract

Are web interfaces defined in Python a genius idea, a complete folly, or (like most technologies) a good fit for some use cases but not all?

I’ll give a brief tour of packages that let you build web interfaces by writing only Python, including Streamlit, Gradio, NiceGUI, reflex, Solara, dominate, ReactPy and FastUI (recently released by the Pydantic team).

The main three questions I’ll be asking are:

  1. Is building a web UI in Python really a good idea at all?
  2. What fundamental trade-offs are required to make such a tool successful?
  3. If someone can answer point 1 and 2, when’s the right time to use these tools?

Over the last couple of years, lots of different libraries have emerged to let you develop web interfaces without getting your hands dirty with HTML, CSS, the JS ecosystem; but so far none have got as popular as “traditional” template rendering (Jinja, Django) or modern SPA frameworks like React.

So are we at the dawn of a new way era — and one of these frameworks will become ubiquitous. Or is the whole idea that you can build such an interface without engaging with the fundamental technologies that power them mistaken?

One important question is “what kind of interface are we aiming at?” If we are trying to give complete control over the browser, allowing Python developers to do everything raw JavaScript can do; our solution will look very different to something that is “just” trying to allow Python developers to plug common components together to build 80% of UIs with 20% of the effort.

Looking at the question through this lens will help explain the design choices of the above libraries, and might even allow us to guess at which approaches will be most


The speaker

Samuel Colvin

Samuel Colvin

Hi, I’m Samuel. I’m a Python, Rust and TypeScript developer from London.

I’m best known for creating Pydantic - a Python data validation library that has now morphed into a startup.