[Open Source] WebView + Rust Audio + CLAP plugin template (15K+ Production Users)
- KVRer
- 7 posts since 1 Feb, 2021
Hi everyone,
With ADC Japan coming up next week, we at NovoNotes thought it would be the perfect time to open-source our internal WebView-based audio plugin stack as a contribution to the community. We'll also be giving a talk about this exact architecture at the event!
We have open-sourced two main repositories:
1. WRAC Plugin Template
https://github.com/novonotes/wrac-plugin-template
A template project for our "WRAC" stack (WebView + Rust Audio + CLAP). It comes with a simple "WRAC Gain" plugin example to get you started, and supports VST3 / AU / Standalone builds via clap-wrapper.
2. wxp
https://github.com/novonotes/wxp
The underlying UI crate powered by wry that handles bidirectional IPC (currently in alpha). It provides Tauri-like IPC (invoke / Channel) for concise communication between Rust and JS/TS.
Both are already used in our production environment, serving 15K+ of our plugin users.
If you are attending ADC Japan or are interested in this WebView + Rust approach, we’d love to hear your thoughts, feedback, or any questions you might have.
Thank you!
With ADC Japan coming up next week, we at NovoNotes thought it would be the perfect time to open-source our internal WebView-based audio plugin stack as a contribution to the community. We'll also be giving a talk about this exact architecture at the event!
We have open-sourced two main repositories:
1. WRAC Plugin Template
https://github.com/novonotes/wrac-plugin-template
A template project for our "WRAC" stack (WebView + Rust Audio + CLAP). It comes with a simple "WRAC Gain" plugin example to get you started, and supports VST3 / AU / Standalone builds via clap-wrapper.
2. wxp
https://github.com/novonotes/wxp
The underlying UI crate powered by wry that handles bidirectional IPC (currently in alpha). It provides Tauri-like IPC (invoke / Channel) for concise communication between Rust and JS/TS.
Both are already used in our production environment, serving 15K+ of our plugin users.
If you are attending ADC Japan or are interested in this WebView + Rust approach, we’d love to hear your thoughts, feedback, or any questions you might have.
Thank you!
-
- KVRist
- 128 posts since 5 Jul, 2018 from Cambridge, UK
This sounds very cool! Have you come across the WCLAP stuff?
Since 1.2.7, CLAP has a (draft) extension for webview-based UIs. While native builds would still provide a native GUI (possibly but not necessarily by wrapping the plugin's own webview extension), it means you can compile a CLAP to a WebAssembly module, providing a UI through a generic webview channel.
I strongly believe this is the best candidate for truly cross-platform audio plugins (Linux, Mac, Windows, and Web DAWs, from a single portable binary).
Rust compiles nicely to WASM (I've previously compiled the Clack examples as WCLAP), and since your project uses webview UIs already, do you have a feeling how much work it would be to implement the webview extension? And from there, to compile as WASM modules to make WCLAPs?
Since 1.2.7, CLAP has a (draft) extension for webview-based UIs. While native builds would still provide a native GUI (possibly but not necessarily by wrapping the plugin's own webview extension), it means you can compile a CLAP to a WebAssembly module, providing a UI through a generic webview channel.
I strongly believe this is the best candidate for truly cross-platform audio plugins (Linux, Mac, Windows, and Web DAWs, from a single portable binary).
Rust compiles nicely to WASM (I've previously compiled the Clack examples as WCLAP), and since your project uses webview UIs already, do you have a feeling how much work it would be to implement the webview extension? And from there, to compile as WASM modules to make WCLAPs?
-
- KVRAF
- 7579 posts since 17 Feb, 2005
This looks very promising from a quick skim of the code. I do not know the syntax of Rust, but it seems to be aware of the edge cases beyond running a subroutine on an in-place buffer 
- KVRer
- Topic Starter
- 7 posts since 1 Feb, 2021
Thanks for the comment!signalsmith wrote: Thu May 28, 2026 11:45 pm This sounds very cool! Have you come across the WCLAP stuff?
Since 1.2.7, CLAP has a (draft) extension for webview-based UIs. While native builds would still provide a native GUI (possibly but not necessarily by wrapping the plugin's own webview extension), it means you can compile a CLAP to a WebAssembly module, providing a UI through a generic webview channel.
I strongly believe this is the best candidate for truly cross-platform audio plugins (Linux, Mac, Windows, and Web DAWs, from a single portable binary).
Rust compiles nicely to WASM (I've previously compiled the Clack examples as WCLAP), and since your project uses webview UIs already, do you have a feeling how much work it would be to implement the webview extension? And from there, to compile as WASM modules to make WCLAPs?
I've heard of WCLAP, but I'm not very familiar with the details. I completely agree that Rust and WASM are a great match.
Supporting Web DAWs sounds technically super interesting! However, our team's primary focus right now is catering to native DAW users, so it's currently a bit outside our immediate roadmap due to limited resources. That said, since WRAC is an open-source project, it would be awesome if someone from the community wants to explore that direction and see how it evolves.
Since we haven't investigated it yet, we don't know if implementing the webview extension would be easy or not. If you have any experience or insights on this, we'd actually love to hear them!
- KVRer
- Topic Starter
- 7 posts since 1 Feb, 2021
Thanks for taking a look at the code!camsr wrote: Fri May 29, 2026 4:10 am This looks very promising from a quick skim of the code. I do not know the syntax of Rust, but it seems to be aware of the edge cases beyond running a subroutine on an in-place buffer![]()
On the surface, it’s just a simple gain plugin template, but under the hood, it's packed with solutions from our real-world production experience. I'm really glad you noticed that
