I’m not the target audience so plenty of grains of salt, but I was curious and took a look. I haven’t worked in Python for a few years, but I figured I have enough background to anticipate some patterns. Foremost among them, I expected some variation of either:<p>- UI = fn(state)<p>- UI = [black box of state] + fn(something)<p>I sure wasn’t prepared for bare render statements with no assignments or return values! I looked into the examples for how things get removed or reordered in the most likely places I’d expect to find them and… I didn’t find them?<p>I mean, it’s definitely conceivable this could be “easy to use” if these imperative render statements are ~equivalent to a re-render, but it bucks against a lot of design UI API principles I’ve seen flourishing regardless of the tech stack, and raises a lot of questions about what happens after state changes invalidate previous imperative calls.<p>It’s entirely possible there’s something I’m missing! I only took a curious glance. But that glance definitely left me with the impression that either there’s more magic than described or there’s a lot of imperative state necessary to handle anything past init.
I think JS ecosystem needs a gradio-like pattern such as this one. I'm tired of how incredibly artificially low-level frontend development has become. I don't want to solve functional programming puzzles to make a button do something,
How does it compare with remi? <a href="https://github.com/rawpython/remi">https://github.com/rawpython/remi</a><p>Looking at the examples, for quick UIs, REMI seems simpler. And PySimpleGUI (<a href="https://github.com/PySimpleGUI/PySimpleGUI">https://github.com/PySimpleGUI/PySimpleGUI</a>) offers REMI as a backend to deploy on web too (PySimpleGUI is pretty simple to learn).