Fuse Architecture

Hello,

I’m trying to decide whether or not to use Fuse for a project and would like to determine the architecture somewhat in order to aid that decision.

If UX components are rendered down to C++ which is then compiled and run on Android/iOS, am I right in saying that these components are not native components per se (ie. that they are not those particular components that you would normally find in the Android API, for example, such as FloatingActionButtons etc) but rather they are custom built components, rendered using OpenGL on a single canvas, and thereby transferable across operating systems?

Is the Fuse “engine” a set of C++ libraries that render custom components as described by the UX with a C++ V8 JS engine that can control this rendering to a degree? Is there any Java / Swift involved at all?

This would mean that Fuse sits low down on the stack (the so-called “bottom up” approach) and works almost at the same level as the standard components you would find in Java / Swift such as Fragments, ListViews etc. Whereas React Native appears to sit on top of the Java/Swift API in a so-called “top down” approach.

Or am I wrong?

Thanks,
Iain

If UX components are rendered down to C++ which is then compiled and run on Android/iOS, am I right in saying that these components are not native components per se (ie. that they are not those particular components that you would normally find in the Android API, for example, such as FloatingActionButtons etc) but rather they are custom built components, rendered using OpenGL on a single canvas, and thereby transferable across operating systems?

In Fuse, you get both.

By default in <App>, controls are, as you say, rendered using OpenGL and therefore looks the same on all platforms.

However, you can also use the <NativeViewHost> class anywhere. Inside there, you can use the same layout engine, animation engine etc, but now you are working with the OS build-in components. <Button /> there will appear as the real native buttons and look different on different platforms.

Is the Fuse “engine” a set of C++ libraries that render custom components as described by the UX with a C++ V8 JS engine that can control this rendering to a degree? Is there any Java / Swift involved at all?

The Fuse “engine” is a set of Uno libraries that compiles to C++ and then to native binaries. From Uno you can interop with Swift and Java to access native APIs.

JS plays a minimal role in Fuse. It is only used for scripting the data and business logic of the application. JS is not involved in UI or animation.

This would mean that Fuse sits low down on the stack (the so-called “bottom up” approach) and works almost at the same level as the standard components you would find in Java / Swift such as Fragments, ListViews etc. Whereas React Native appears to sit on top of the Java/Swift API in a so-called “top down” approach.

In a way, yes.

Thanks Anders.