Needing to rewrite with other UI/JS frameworks to account for quirks gives me pause.
React needs web browser compatibility layer to work in Sciter.JS as React was designed strictly for browsers.
For that matter: PReact ( https://preactjs.com/ ) works out of the box already, see : https://github.com/c-smile/sciter-js-sdk/tree/main/samples/p... ;
MithrilJS ( https://mithril.js.org/ ) works as it is also.
SvelteJS works as it is with Sciter.JS too.
Also Sciter.JS has its own native implementation of JSX ( it's built in JS core of Sciter.JS) and also DOM extended by native element.patch(vdom) that makes "reactivity" to work in Sciter.JS with native speed.
Yet quite a lot of UI components are natively built-in. For example:
https://sciter.com/behaviorvirtual-list-for-sciter-and-scite... and https://sciter.com/sciter-js-themes/
Being "almost" web compatible is not a recipe for success, as it's bound to cause confusion and frustration among folks that want it to be an Electron alternative.
Either embrace Web APIs entirely (perhaps a smaller compatible subset), or just position it as something else entirely, like Flutter.
Hmm... and how do I do that? What's your impression?
Sciter.JS is "an embeddable HTML/CSS/JS UI engine" and that's it.
Yes, it is possible to use it without touching native side like ElectronJS, see: https://quark.sciter.com/ , but that's not the primary use case. So far it has around 400 mln installations in embedded form as part of other products, see: https://sciter.com/#customers
If you want you can treat it as Flutter that uses time proven and familiar HTML/CSS/JS resource definitions instead of Dart. Dart is close to JS but not JS, Flutter has some DOM but not HTML DOM, it has some style system but quite rudimental one.
But to most folks, that sounds like a "web browser/view engine", which it is not. Does it pass the Acid2 / Acid3 test?
The power of ElectronJS is not its use of HTML, CSS and JS, but the fact that it is a web browser engine and one can share the millions of frameworks, libraries and muscle memory built for the web in their desktop applications.
> one can share the millions of frameworks ...
For your *desktop* application you need just one, not millions of them.
> libraries and muscle memory
Not a problem, here I am using Remarkable [1] as it is: https://github.com/c-smile/sciter-js-sdk/tree/main/samples/m..., in other places I may use LeafletJS for showing maps, etc. Essentially all libraries for JS/NodeJS should work out of box.
Problem is that desktop UI has different UI model from a web page. Web page / Web app is usually "endless paper tape" opened full screen - has defined width but no height - no need for vertical alignment for example.
And desktop UI is usually different - small or vertically and horizontally space limited windows, etc.
In Sciter you can show element as popup one - in separate window that can be rendered outside of your [small] app window, consider this popup: https://sciter.com/wp-content/uploads/2021/02/select-table.p... , good luck with recreating this in browser. By the way that <select> element is defined as:
<select>
<tr role=option value="1">
<td>Option 1</td>
<td>*Short*</td>
<td>123456</td>
</tr>
<tr role=option value="2">
<td>Option 2</td>
<td>******* LOONG ********</td>
<td>123456</td>
</tr>
<tr role=option value="3">
<td>Option 3</td>
<td>*Short*</td>
<td>123456</td>
</tr>
</select>
Sciter supports arbitrary markup in selects, popups, etc. No one of "millions of frameworks" will help you with that.Also this
<frameset cols="200px,*">
<section>A</section>
<section>B</section>
</frameset>
will give you split-view out-of-the-box. But web dev's will start looking for frameworks in order to achieve this simple component that browser have internally.TL;DR: Web and desktop UIs use inherently different models. You can share parts between these two different platforms but only parts, really.
[1] Remarkable JS: https://github.com/jonschlinkert/remarkable
But Sciter do not have codecs embedded. Instead
a. it [re-]uses streaming services of underlying OS;
b. has interface for the hosting application to supply its own video streams.
This way some applications use WebRTC as video sources, some use ffmpeg library to provide video streams. Video playback architecture is app dependent usually. Sciter provides to them "video rendering site".
That's idea of Sciter - to reuse underlying OS services as much as possible.
For example Sciter has spellchecking but only if OS provides spellchecking API (and usually they do).
Possible, see Sciter.JS : https://github.com/c-smile/sciter-js-sdk
10 times more compact than Tauri, 20 times less than Electron.JS
Yet it has Rust API ( https://github.com/sciter-sdk/rust-sciter ), that if someone need "Made with Rust" label :)
And it works even on Windows 2000, do you remember that thing? See: https://sciter.com/necromancing-sciter-on-windows-2000/