Dynamic UI Loading / Plugin Architecture: What is possible today?
Use Case
I want to build an application that can dynamically load parts of the UI via "plugins" at runtime (think of loading "VSTs" in a digital audio workstation or dynamic widgets in a dashboard).
Ideally:
- Web: Load a separate
.wasm file from a URL on demand and render it inside a specific container.
- Desktop: Load a native compiled library (
.so, .dll) from the file system.
My Understanding of Today's Building Blocks
From what I can tell, we have a few pieces of the puzzle available:
- Iframes (Web): Works for isolation, but feels clunky and limited for deep UI integration or shared state.
- (dioxus)
wasm-split: Great for code-splitting a single crate, but doesn't seem to support loading completely separate, independently compiled plugin crates at runtime.
- Targeted Launching: We can launch a Dioxus app into a specific DOM node using custom root IDs.
Am I missing something?
To make true runtime plugins work cleanly, it feels like we are missing an ergonomic way to export standalone components from a library crate and a safe lifecycle API to load/unload those binaries dynamically.
Is a decoupled micro-frontend or dynamic plugin architecture currently achievable with Dioxus without fighting the framework? If anyone has successfully implemented a pattern like this (especially across web and desktop), I’d love to know how you approached it!
Related Issues?
#540
Dynamic UI Loading / Plugin Architecture: What is possible today?
Use Case
I want to build an application that can dynamically load parts of the UI via "plugins" at runtime (think of loading "VSTs" in a digital audio workstation or dynamic widgets in a dashboard).
Ideally:
.wasmfile from a URL on demand and render it inside a specific container..so,.dll) from the file system.My Understanding of Today's Building Blocks
From what I can tell, we have a few pieces of the puzzle available:
wasm-split: Great for code-splitting a single crate, but doesn't seem to support loading completely separate, independently compiled plugin crates at runtime.Am I missing something?
To make true runtime plugins work cleanly, it feels like we are missing an ergonomic way to export standalone components from a library crate and a safe lifecycle API to load/unload those binaries dynamically.
Is a decoupled micro-frontend or dynamic plugin architecture currently achievable with Dioxus without fighting the framework? If anyone has successfully implemented a pattern like this (especially across web and desktop), I’d love to know how you approached it!
Related Issues?
#540