Skip to content

Interface: ExtensionStorage

Defined in: packages/sdk/src/extension-storage.ts:18

Namespaced, persisted key/value storage handed to extensions. Two scopes are exposed on ExtensionContext.storage (ExtensionStorageScopes): global (one bag per extension, shared across every workspace) and workspace (one bag per extension × the active workspace). Side panels also receive a workspace-scoped bag keyed by panel id via SidePanelProps.storage.

Values persist alongside the rest of the app state. The store hydrates asynchronously, and the workspace bag is swapped when the active workspace changes, so consumers that need to react to restored or switched values should subscribe and re-read.

Methods

get()

Call Signature

ts
get<T>(key): T | undefined;

Defined in: packages/sdk/src/extension-storage.ts:20

Read a value. Returns fallback if the key is missing.

Type Parameters
T

T

Parameters
key

string

Returns

T | undefined

Call Signature

ts
get<T>(key, fallback): T;

Defined in: packages/sdk/src/extension-storage.ts:21

Type Parameters
T

T

Parameters
key

string

fallback

T

Returns

T


set()

ts
set(key, value): void;

Defined in: packages/sdk/src/extension-storage.ts:23

Write a value. undefined deletes the key.

Parameters

key

string

value

unknown

Returns

void


keys()

ts
keys(): string[];

Defined in: packages/sdk/src/extension-storage.ts:25

The keys currently set in this namespace.

Returns

string[]


subscribe()

ts
subscribe(listener): Disposable;

Defined in: packages/sdk/src/extension-storage.ts:35

Subscribe to changes in this namespace. Called when a value in this namespace changes, when the underlying app state finishes hydrating, and (for the workspace scope) when the active workspace changes.

Returns a Disposable — call .dispose() to unsubscribe, or push it onto ctx.subscriptions for automatic teardown. Consistent with every other subscription in the SDK.

Parameters

listener

() => void

Returns

Disposable