Thank you for the feedback and your suggestion! A (partial) correlation network with Cytoscape.js is planned as one of my next experiments. A former colleague nudged me in that direction just a few days ago, and now you as well, so I'll probably have to build that next.
Great points! I think your point about the JS community is often overlooked. Electron et al have made desktop UI/UX considerations more salient in the JS world. Desktop-like experiences in the browser can be great.
This is usually because they are rendered in an animation loop (most three.js examples are set up like this). An example of rendering on demand only (this is even using fancy bloom post-processing): https://cybernetic.dev/helix/about
This reminds me of the recent SvelteKit Remote Functions GH discussion:
> Even in systems that prevent server functions from being declared in client code (such as "use server" in React Server Components), experienced developers can be caught out. We prefer a design that emphasises the public nature of remote functions rather than the fact that they run on the server, and avoids any confusion around lexical scope. [0]
This includes a correlation matrix with rolling correlation charts, a minimap, hierarchical clustering, time series detrending, and more. I've improved its design and performance and I'm developing new features to better contextualize the visible subsection relative to the entire dataset.
I've also rewritten the entire project in Svelte 5 (there's still a lot of cleanup to do).
I'm working on a correlation matrix with Svelte 5.
It has hierarchical clustering, rolling correlation charts, a minimap, time series data detrending, and 2D matrix virtualization (to render only visible cells to the DOM).
It has up to 130K matrix cells and correlates up to 23.5M time series data points.
I don't know if that's what the GP hinted at, but as a Svelte developer and big advocate for more than 6 years (single handedly training and evangelizing 20+ developers on it), I found so many concerns with Svelte 5 that it simply made me use React again.
It's a temporary choice and I'm desperately evaluating other ecosystems (Looking at you SolidJS).
Put simply, Svelte and React were at two ends of a spectrum. React gives you almost complete control over every aspect of the lifecycle, but you have to be explicit about most of the behavior you are seeking to achieve. Building an app with React feels about 80% on the JS and 20% on the HTML side.
Svelte on the other hand felt like a breeze. Most of my app is actually plain simple HTML, and I am able to sprinkle as little JS as I need to achieve my desired behaviors. Sure, Svelte <=4 has undefined behaviors, or maybe even too many magic capabilities. But that was part of the package, and it was an option for those of us who preferred this end of the trade-off.
Svelte 5 intends to give that precise level of control and is trying to compete with React on its turf (the other end of that spectrum), introducing a lot of non-standard syntax along the way.
It's neither rigorous Javascript like React where you can benefit from all the standard tooling developed over the years, including stuff that wasn't designed for React in particular, nor a lightweight frontend framework, which was the initial niche that Svelte happily occupied, which I find sadly quite empty now (htmx and alpinejs are elegant conceptually but too limiting in practice _for my taste_).
For me it's a strange "worst of both worlds" kind of situation that is simply not worth it. Quite heartbreaking to be honest.
Ok, I see your point. I wrote in another thread that I loved the simplicity of using $: for deriveds and effects in Svelte 3 and 4. And yes, the conciseness and magic were definitely part of it. You could just move so fast with it. Getting better performance with the new reactivity system is important to my data viz work, so it helped me to accept the other changes in Svelte 5.
Exactly. There was a certain simplicity that might be lost. But yeah I can imagine it might work out differently for others as well. Glad to hear it is for you!
Have you considered other options? Curious if you came across anything particularly interesting from the simplicity or DX angle.
I just saw Nue and Datastar suggested somewhere, but have not had time to check them out yet, but I will probably stick with Svelte, need to get stuff built.
One thing that also came to mind regarding Svelte 5 is that I always use untrack() for $effect() and declare dependencies explicitly, otherwise Svelte 5 becomes too magical for me.
Thanks! covary is my first Svelte 5 project (have not yet migrated my Svelte 4 projects). The backend is surprisingly simple, but I'm relatively familiar with the data and statistics, so maybe that's why it's so simple and/or perceived as such by me. I really like working on the human interface layer, i.e. the frontend. Backend work for me is always in the service of that.
If you find a viable alternative to Svelte and React, please let me know.
Currently trying to better contextualize the visible subregion of the matrix in relation to the full dataset (beyond what the current minimap does).
https://cybernetic.dev/matrix