Part of UrStack, my open-source organization for TypeScript libraries. Siblings: UrColor, UrCharts, UrDock.
UrVis is a retained-mode 2D scene graph with interchangeable rendering backends. You describe a scene once, and UrVis renders it through SVG, Canvas, WebGL or WebGPU without a line of backend-specific code.
The scene graph tracks dirty regions, so a frame only redraws what actually changed. The same graph runs on the server, where it emits SVG directly or rasterizes to PNG, JPEG and WebP.
Picking a rendering backend usually happens on day one, before you know what the workload looks like, and reversing that choice later means rewriting the drawing layer. SVG is convenient until the node count climbs. WebGL is fast until you need crisp text or server-side output.
UrVis makes the backend a runtime detail, so the scene description outlives the decision.