When there is a change, the setup function is executed and the virtual dom of the component is recomputed. You have no choice because it is a return in a function (setup/build).
But in Vue3, if a ref is only used in an html tag the compiler will optimize it to not recalculate the whole virtual dom.
You’re absolutely right — I haven’t found a good way to make the DOM update at a fine-grained level yet.
However, I still believe this framework has value, mainly for the following reasons:
1. The setup function behaves just like in Vue 3 — it runs only once. This helps avoid the mental overhead found in React’s re-renders.
2. Dependency tracking is fully automatic, eliminating the pain of manually managing dependencies as in React or flutter_hooks.
3. By providing a Composition or Hook-style API, it introduces a new way to organize and structure code in Flutter.
4. While fine-grained DOM updates aren’t possible, a ComputedBuilder is provided, allowing developers to easily control the scope of updates when needed.
Like most websocket library, uWebSockets works by calling some sort of send/write function. You give the data you want to send, which is a sequence (a string or a vector).
The underlying library will take care of buffering that, and the size of that buffer is unbounded. In most of them there is no way to know how much is buffered.
But with libwebsocket, it will call a callback written by you, it will call it every time it is ready to send. And then you have to call a write function that does not guarantee you it will write the whole buffer you give it.
This can be useful for web based games, you keep the last version of the position of each object, and send them one by one when the client is ready to receive. The memory usage will then be bounded to: size of message * number of objects + number of players (each player can have a message that is currently kept in memory until it is entirely sent, since multiple calls to the callback may be required to send a whole message.
The libwebsocket site claims that it is the receiving side that decides when it is ready to send. I don't know exactly how it is determined but I think the sender uses TCP ACKs, the window size...