JUCE, Blueprint/React, ValueTreeJsonSynchroniser/JSON-Patch and brave new worlds

Hi all,

Throwing this out into the wild as perhaps someone in the know will give it a read.

I’ve been working with @ncthom’s excellent Blueprint for some projects recently and have been building up various communication mechanisms for communicating app state changes between a C++ data-model and a React/Blueprint UI.

I’ve currently got a system which is somewhere between the ReactNativeBridgeClient and the ValueTreeJsonSynchroniser detailed in this marvelous talk on LUMI’s architecture:

https://www.youtube.com/watch?v=bsy0-mHcS4Y&t=1452s.

There are murmurs in the talk suggesting some of this code may be open sourced or possibly added to JUCE. Is anyone in the know aware if this is still planned to drop? Annoyingly I’d not watched the full talk until after I started building things :slight_smile:

I’ve got a system in place but Blueprint and similar technologies are looking very promising so I’d be interested in whether “best-practice” patterns are soon to emerge in the community. Appreciate not everyone uses juce::ValueTree as their “data-model” architecture (infact I’m not currently) but it’s likely to be one very popular option.

A system which uses JSON Patch as discussed in the above talk (rather than allocating and pushing around juce::var / juce::DynamicObject instances to a JS context/engine) could be valuable for many. I’ve plans to implement similar things for use with Blueprint and the like but want to avoid reinventing an already better designed wheel.

Thoughts?

Is React any good? I haven’t got any experience with it, but from my little experience with web dev, I’d much rather use JUCE (and a bit more elaborated in https://yairchu.github.io/posts/web-based-desktop-ui)

Heh. Probably shouldn’t turn this thread into a big debate on “Why React?”. I’m personally a big fan but I’ve a modest amount of Web Dev experience. React is a very different way of thinking. Loosing the edit, compile, test, repeat cycle is nice for a start. You can “hot-reload” to your hearts content in Blueprint/React.

Building UI’s feels much more flexible and dynamic to me and the dev experience is much better. I expect it may be where things are heading (obviously we’re seeing this with React Native, Electron etc. As you point out in your post!). I’m sure many could argue the pros and cons till we’re blue in the face.

My only recommendation at this point would be to give it a go.

FYI, Blueprint is still in the “approaching beta” phase so you might experience some initial frustrations at the lack of pre-built components etc. Try not to let that put you offf! Things are coming down the pipeline.

1 Like

One cheeky bump just in case someone jumps in of a Monday afternoon.