DynamicLakeKit

Build DynamicLake extensions with SwiftUI or DynamicLake plugins with JSON.

Overview

!DynamicLakeKit cover showing the framework icon and tagline.

DynamicLake lets apps and local tools add glanceable UI around the Mac notch or pill. The primary surface is a live activity: compact current status that stays visible while something is happening. A live activity can also provide a sneak peek: a small expanded preview for secondary detail or simple controls.

DynamicLake supports two ways to build those experiences:

| Type | Build With | Best For | | --- | --- | --- | | Extensions | SwiftUI, ExtensionKit, and DynamicLakeKit | Fully custom UI, companion apps, deep macOS integration, settings, and shared app state. | | Plugins | A .dynamiclakeplugin package and framed JSON messages | Scripts, AI agents, timers, build progress, local services, and small workflow integrations. |

Extensions are bundled inside a macOS app. The companion app opens, updates, and closes activities with DynamicLakeActivityCenter while the extension target renders SwiftUI scenes such as DynamicLakeLiveActivity and DynamicLakeSneakPeek.

Plugins are local executables launched by DynamicLake. A plugin sends create, update, and dismiss JSON commands over a local socket. DynamicLake renders those commands with predefined components such as text, icons, progress, buttons, timers, and status indicators.

Apps can also ship or install a plugin instead of an ExtensionKit extension, especially when the app only needs simple status UI. For app-to-DynamicLake integrations, prefer a SwiftUI extension when possible because it gives the app full UI control, typed state, settings scenes, and a clearer macOS integration model.

Creators can test an extension or plugin in DynamicLake Playground before using the full DynamicLake app. DynamicLake Playground is free and runs one extension or plugin at a time, which makes it useful for building and validating creator integrations.

Choose an extension when the creator needs full SwiftUI control. Choose a plugin when the creator needs fast distribution, simple UI, and language freedom.

Topics

Start Here

Build Extensions

Build Plugins

Shared Design

Deprecated

Extension Entry Points

Activity State

JSON Plugins

Live Activity Configuration

Live Activity Layout

Sneak Peek Layout

Simulator