Introducing Solara (an ipywidgets based app framework)

Hi :wave:

I haven’t been very active on this forum, but I will try to be a bit more active from now on.
I am a core ipywidgets developer and maintainer and (co)-created several ipywidgets libraries (ipyvolume, ipyvuetify, ipywebrtc, ipysheet) and co-created Voilà.
Over the years, I’ve helped several organizations and companies build ipywidgets-based applications, which are often deployed using Voilà.

Reacton

Recognizing over the years that UI development is hard and taking lessons from the JavaScript ecosystem, I created Reacton, which re-uses ipywidgets with React-like concepts, making it easier to build larger applications using ipywidgets.
I wrote about it a while ago at Advance your ipywidget app development with Reacton — A pure Python port of React for faster development | by Maarten Breddels | Medium but I thought it would be good to share it here.

Solara

We (together with Mario Buikhuizen - ipyvuetify primary author) are also working on a web app framework built on top of Reacton, called Solara (GitHub) that includes a ton of components to make ipywidget based development easier and faster.

Solara server

Solara also includes a new web app server, that can render ipywidgets in FastAPI/Starlette and Flask (is there a need for Django?). Solara server’s primary purpose is efficient, scalable web apps. Although Solara can execute a notebook, it will not display your cells. Instead, solara will only display a single widget top level. This is similar to voila + voila-vuetify (I was the main push behind the voila-vuetify template). Solara server, however, does not create real kernels but instead uses what we call ‘virtual kernels’ so that multiple users share the same process. With this, we can render a page fast because all imports, JIT compilations, or anything that happens at startup is already done. Also, because of a single process, we can share memory/data/dataframes, etc.

We believe Solara can be the next chapter for your ipywidgets experiment, where you want to grow your hacked-together app into something more significant that should last.

At the time of writing, we did not announce Solara yet, but we are interested in early feedback from ipywidgets users.

Note that our main website https://solara.dev/ runs on Solara itself!

Feedback/questions

Any feedback is welcome, but I am specifically interested in the following answers:

  • Do you have trouble building larger applications with ipywidgets? (e.g. complexity becomes an issue, and (state) bugs are everywhere).
  • Are you willing to learn about Reacton/Solara components to conquer this complexity?
  • Do you have an interest in Solara server, and why?

User testing

If you want to try out Solara, are you interested in a user test? We book a video call together and you share your screen with me. I watch you navigate the docs, and try to solve your problem. This has been a very effective way of identifying issues in Solara and the documentation. It helps us improve Solara every time we do this. If you are interested in this, please send me an email at maartenbreddels@gmail.com

Teaser

An example I recently put together, to get an idea what you can make with it:
ScatterExample

And showing how this runs in Jupyter Lab.
ScatterExampleNotebook

TL;DR

We (Mario Buikhuizen and I) created Solara, a new app framework built on top of ipywidgets, but with concepts from React ported to Python. Solara also comes with solara server, a new server that can host ipywidget-based (classic and component-based) applications.

I hope you all like it, and that this gives us an even brighter future for Jupyter and ipywidgets!

Regards,

Maarten Breddels

8 Likes