The plugin ecosystem is in active development. If you want early access or want to publish an extension, reach out at extensions@despia.com.
How it works
An extension is a Swift Package containing two files you write and one JSON spec you declare. Everything else, URL routing, param validation, config forms in the dashboard, Package.swift generation, thread safety, is handled by the Despia runtime.The Swift and Java interface
Both platforms share the same call interface.DespiaExtensionCall is the only type you interact with, it gives you typed param accessors, dashboard config values, and the two ways to send data back to your web layer.
Reading params and config:
call.resolve(), call.emit(), call.reject(), with the same semantics on both platforms. Write your SDK logic once per platform. Everything else is handled.
Third-party Swift packages and Android libraries
Declare your native SDK dependencies indespia-extension.json. Despia generates Package.swift and build.gradle from them, you never write either file.
Real example: OEM Bluetooth device integration
BLE is one of the hardest things to get right on both iOS and Android. With DespiaExtension you declare the scheme, write the CoreBluetooth and Android BLE calls, and your web app talks to the hardware with a singledespia() call.
What the runtime eliminates
Native SDK integration has a fixed cost: URL routing, param decoding, thread management, config forms, package manifests, scheme conflict detection. The same boilerplate, rewritten for every integration, on every platform. DespiaExtension handles all of it. You write the SDK call. The rest is the runtime’s job.What ships at launch
The extension system exposes the same architecture used by every built-in Despia feature. First-party extensions in development include camera and media picker, QuickLook document preview, and native contacts access. Third-party extensions are importable directly from the Despia dashboard by URL, no build tooling, no Xcode, no Android Studio required on the app developer’s end.For developers solving hard problems
Despia continues to ship built-in native features. The extension system is not a replacement for that. It is the answer to the long tail of technical problems the platform cannot anticipate. If you are building something that requires a proprietary hardware SDK, a niche vendor integration, or a platform capability that simply does not exist in any general-purpose mobile tool, this is the right foundation. Write the native code once in Swift and Java. Every developer using Despia gets access through the sameawait despia() call they already know.
If you are evaluating Despia for a production project and want to understand how a specific integration would work, reach out directly.
Early Access
NPM Package
despia-native