Available UI Frameworks
IGraphics
Cross-platform vector graphics with NanoVG or Skia backends
SwiftUI
Native macOS/iOS interfaces using Apple’s declarative framework
Cocoa
Native AppKit/UIKit interfaces with Interface Builder support
WebView
HTML/CSS/JavaScript UIs using native webviews
Svelte
Modern reactive web UIs with Svelte framework
Choosing a Framework
IGraphics (Default)
Best for: Cross-platform plugins with custom graphics and animations Pros:- Single codebase for all platforms
- Pixel-perfect rendering
- No web dependencies
- Optimized for audio plugin UIs
- Custom control library (not native)
- More code for complex layouts
SwiftUI
Best for: macOS/iOS only plugins with modern native UIs Pros:- Native Apple look and feel
- Declarative syntax
- Automatic dark mode support
- Access to all Apple frameworks
- macOS/iOS only
- Requires Swift knowledge
- macOS 10.15+ / iOS 13+
Cocoa
Best for: macOS/iOS plugins using Interface Builder Pros:- Visual layout with Xcode’s Interface Builder
- Native controls and styling
- Familiar to iOS/macOS developers
- macOS/iOS only
- More verbose than SwiftUI
- Separate storyboards for macOS/iOS
WebView
Best for: Rich, web-based UIs with standard web technologies Pros:- Use standard HTML/CSS/JavaScript
- Rich ecosystem of libraries
- Designer-friendly
- Hot reload during development
- Larger memory footprint
- Depends on system webview
- Different rendering across platforms
Svelte
Best for: Modern reactive UIs with excellent developer experience Pros:- Reactive programming model
- Compile-time optimization
- Smaller bundle size than React/Vue
- Great TypeScript support
- Requires build tooling (Vite)
- Webview overhead
- Additional learning curve
Architecture Overview
All UI frameworks in iPlug2 share a common architecture:Key Concepts
1. Editor Delegates
Each framework uses a specific editor delegate:- IGraphics:
IGraphicsEditorDelegate(built-in) - SwiftUI/Cocoa:
CocoaEditorDelegate - WebView/Svelte:
WebViewEditorDelegate
2. Parameter Communication
All frameworks use the same parameter communication pattern: From UI to DSP:BeginInformHostOfParamChangeFromUI()- Start gestureSendParameterValueFromUI()- Send value (normalized 0-1)EndInformHostOfParamChangeFromUI()- End gesture
SendParameterValueFromDelegate()- Update UI with new value
3. Data Visualization
For non-parameter data (meters, scopes, etc.), useISender classes:
Platform Support
| Framework | macOS | iOS | Windows | Linux | Web |
|---|---|---|---|---|---|
| IGraphics | ✓ | ✓ | ✓ | ✓ | ✓ |
| SwiftUI | ✓ | ✓ | ✗ | ✗ | ✗ |
| Cocoa | ✓ | ✓ | ✗ | ✗ | ✗ |
| WebView | ✓ | ✓ | ✓ | ✗ | ✗ |
| Svelte | ✓ | ✓ | ✓ | ✗ | ✗ |
WebView and Svelte support on Windows uses Microsoft Edge WebView2.
Getting Started
Choose the framework that best fits your needs:
See the individual framework pages for detailed setup and usage instructions.