FAQ
FAQ
Yes — that's the whole point. Wrap real markup in <Skeletonizer> and the engine derives the
skeleton from the rendered DOM. Manual Skeleton* primitives are available too, for when you want
explicit control.
No. Elements are styled in place and never removed, so the layout is identical before and after loading.
Yes. Manual Skeleton* components are recognised by the engine and left untouched.
Yes, automatically via .dark / [data-theme="dark"], plus runtime setTheme().
Yes. The engine runs on the client after hydration, so there are no hydration mismatches. See SSR.
The runtime is tiny and tree-shakeable — components and composables you don't use are dropped from the bundle.
Yes. It operates on the rendered DOM, so it's framework-agnostic within Vue — Nuxt UI, PrimeVue, Vuetify, plain markup, etc.
SVG maps perfectly onto the host's bounding box: the engine measures each node and emits one
<rect> (or <circle> for avatars) at the right coordinates. A single <svg> overlay keeps
the DOM node count almost flat no matter how many bones are on screen, the shimmer is a native
CSS/SMIL animation driven by one gradient (no per-element CSS thrashing during render), and it's
SSR-safe and hydratable because an <svg> is just serializable markup. preserveAspectRatio
scales the whole overlay on resize without recomputing anything, and accessibility comes for free
with role="img" + aria-label.
Canvas was rejected: it isn't serializable in SSR, it needs an imperative redraw on every resize, and it breaks accessibility (it's an opaque bitmap with no semantic tree).
No. Each overlay's shimmer gradient id is namespaced per host: sk-shimmer-{uid}. Many
<Skeletonizer> hosts on the same page each get a unique gradient, so there's no <defs> clash.
Yes. An <svg> is plain, serializable markup, so the manual Skeleton* primitives (which are
inline <svg>) server-render normally. The automatic overlay is injected on the client after
hydration — exactly when the rest of the engine runs — so the server and client's initial render
match and there is no hydration mismatch. See SSR.