Skip to content

Overview / Guide

Build your own native UI

Extend the native rendering when the built-in controls do not cover your application.

Start with the built-in controls. For application-specific UI, the plugin’s experimental extension API lets you add native implementations using SwiftUI or Android Compose.

Engine is the lower-level rendering and projection layer. Its integration and reference guides are for custom hosts and renderer work; they are not prerequisites for standard setup.

Standard setup →

Share state and actions, customize presentation

Define a read-only DOM reader that exposes the properties to display and the Web action targets. Native code renders those properties and invokes the declared actions. The Web element remains the source of truth and the fallback UI; do not move business logic into the reader or duplicate it in SwiftUI or Compose.

Keep the extension local to your app

Keep the Web definition and native implementation in the application; a separate npm package or Capacitor plugin is not required. Register the matching native implementation on each platform you support. Begin with the experimental extension guide; use Engine directly only when building a custom host or rendering integration.

Continue reading