v0.1.0-canary.8
Pre-releaseSummary
This release introduces Catalyst’s internal plugin architecture, a new cross-platform system for delivering native capabilities in a modular, manifest-driven way. It adds the PluginBridge web API, native plugin runtimes for Android and iOS, build-time plugin composition, config-based enablement through WEBVIEW_CONFIG.plugins, and an app-facing catalyst plugins CLI. The first migrated capability, device_info, now works through this plugin model on both platforms.
Problem
Native capabilities in Catalyst were previously coupled directly into the legacy bridge layer. That made the bridge grow continuously, spread platform-specific requirements across framework internals, and made optional native features harder to isolate, evolve, and ship cleanly. It also meant there was no unified, modular contract for enabling features, composing only what an app needs, and keeping Android and iOS aligned during migration.
Solution
Catalyst now uses an internal plugin system built around PluginBridge and manifest-driven native composition. Plugins remain framework-owned inside catalyst-core, but apps can enable or disable them through WEBVIEW_CONFIG.plugins without touching native code.
During buildApp:android and buildApp:ios, Catalyst discovers enabled plugins, validates their manifests, copies only the required native sources and resources, and generates platform registries for dispatch. At runtime, PluginBridge provides a single explicit web API to initialize the bridge, emit commands, and register callbacks, while Android and iOS native runtimes validate requests and route them to the correct plugin implementation.
Benefits
- Native features are now modular instead of being tightly embedded in the legacy bridge
- Android and iOS share one clearer product model for new native capabilities
- Plugin-specific permissions, dependencies, plist entries, entitlements, URL schemes, and resources stay localized to the plugin manifest and plugin code
- Builds become more deterministic because only enabled plugins are composed into the generated app
- Apps get a simpler enablement model through
WEBVIEW_CONFIG.pluginsand thecatalyst pluginsCLI - Catalyst can migrate legacy bridge features incrementally without breaking existing
WebBridgebehavior - The new architecture gives the framework a cleaner path to add future native capabilities with less framework-wide coupling