VSTDOCSv0.0.34

DOCS / PROJECT

FAQ

The questions every plugin developer asks first.

Is this a webview?

No. There is no browser, no HTML, no CSS engine in the binary. Your React runs in QuickJS (~1MB, in-process) and every pixel is painted by juce::Graphics. That is the whole point.

Which plugin formats and platforms?

Architecturally, anything JUCE targets — VSReacT is a JUCE module and never touches format-specific code, so it goes wherever your JUCE plugin goes. What that means in practice, honestly: validated is VST3, AU, and Standalone, with the C++ suite in CI on Windows, macOS, and Linux, pluginval (strictness 5) gating every commit's VST3 on Windows, and auval gating its AU on macOS. Expected to work, not yet validated is AAX and LV2 — nothing in the renderer knows the format exists, but we don't claim what CI doesn't check.

What about performance?

Layout and painting are C++. JS runs only when your components render, and the bridge batches mutations per commit. Hover and active styles repaint natively with no JS round-trip. The gain example idles at zero JS activity.

Can I use npm packages?

Pure-JS packages that target ES2023 work — Bun bundles them in. Anything that expects the DOM, Node APIs, or the network will not, by design: a plugin UI should be deterministic and offline.

How do I debug?

console.log routes to the native logger and shows in your debugger’s output. Runtime errors render the red overlay with a stack trace in the plugin window. And hot reload keeps the iteration loop around 100ms.

What can the web do that VSReacT can't (yet)?

The 0.0.25 list — WebP, blur/backdrop filters, text selection, CSS animations/transitions, horizontal scroll — shipped in full in 0.0.26. The honest remainder is now edge cases: animated WebP decodes its primary frame only; text selection is per-<Text> (no cross-node ranges) and opt-in by design; transitions can't animate the native hover:/active: merges (they never round-trip through JS — use onMouseEnter state); backdrop-blur inside transformed or semi-transparent subtrees samples the untransformed frame; and <Canvas> gives you zero-copy pixel access, but QuickJS is too slow for per-frame procedural shading — bake it at build time (the film-strip tooling does exactly that). Everything else you'd reach for — gradients (incl. conic and repeating), multi-shadow stacks and background layers, custom bundled fonts, filters, transforms with correct hit-testing, clip polygons, zIndex, keyboard focus and Tab order, pointer-events, SVG paths, text stroke/ellipsis/line-clamp, cubic-bezier easing, two-axis scrolling, JS-driven editor resize — is in as of 0.0.27.

What licenses am I agreeing to?

VSReacT itself is MIT. Vendored engines keep their permissive licenses (QuickJS-ng: MIT, Yoga: MIT, libwebp: BSD-3-Clause). JUCE has its own commercial/GPL terms you must satisfy for plugin distribution.