Extension SDK
Extension SDK
Build custom island modules in JavaScript. No Xcode, no compilation — just a manifest and a JS file.
Extension SDK
SuperIsland has a full JavaScript-based extension API (DPI: Dynamic Island Plugin Interface) that lets anyone build custom modules.
Extensions are plain directories dropped into:
~/Library/Application Support/DynamicIsland/Extensions/Extension structure
my-extension/
├── manifest.json # Required — metadata, permissions, capabilities
├── index.js # Required — extension logic
├── settings.json # Optional — native settings UI schema
└── assets/ # Optional — SVG icons, imagesQuick start
1. Create the directory
mkdir -p ~/Library/Application\ Support/DynamicIsland/Extensions/my-hello
cd ~/Library/Application\ Support/DynamicIsland/Extensions/my-hello2. Write manifest.json
{
"id": "com.yourname.hello",
"name": "Hello World",
"version": "1.0.0",
"main": "index.js",
"permissions": [],
"capabilities": ["compact", "expanded"],
"refreshInterval": 5.0
}3. Write index.js
DynamicIsland.registerModule({
compact() {
return View.hstack([
View.icon("hand.wave.fill", { color: "#a855f7" }),
View.text("Hello!", { style: "caption" }),
]);
},
expanded() {
return View.vstack([
View.text("Hello, World!", { style: "headline" }),
View.text("My first SuperIsland extension", { color: "#888" }),
], { spacing: 4 });
},
});4. Enable it
Open Settings → Extensions, find your extension, and toggle it on.
What can extensions do?
- Render custom views in all three island states
- Fetch data from the network (with
networkpermission) - Store persistent data per-extension
- Send notifications to the island feed
- Control island activation/dismissal
- Read system data (AI usage, latest notifications)
- Interact with the mascot companion
- Play haptic/audio feedback
Next: Manifest Reference → Lifecycle → View DSL → Examples