

from the agency side, a lot of that 53% is just sites nobody gets paid to touch. clients pay for the new feature or the redesign, not for swapping $() for querySelector on a site that works, and on wordpress some plugin loads it again anyway like OP said. for something new I wouldn’t pick it, but I don’t expect the number to drop fast, it goes down when sites get rebuilt, not when devs stop liking it

nice, the “draw from your phone and see it at home” thing is pretty much the same problem I have with a small shared pixel canvas game I run, so on your open questions this is what ended up working for me. I didn’t go websocket, it’s SSE for server to client and a plain POST for every action, the POST response is kind of the “rpc return” and the change goes out to everyone else through the SSE stream. conflicts were a non issue because it’s one node process with the state in memory, two clicks on the same cell just apply in order and last one wins, the only place I needed a real check was undo (it answers 409 if someone touched the cell after you). for reconnects I don’t try to replay what you missed, EventSource reconnects by itself and on reopen the client just fetches the whole canvas again, it’s small enough that it’s cheaper than being clever about it. curious if the phone going to sleep gave you trouble with the websocket