---
title: "ShelfWidgetDescriptor, DroppyKit"
description: "Static description of one shelf widget, rendered by the host without calling into the widget&#x27;s views."
canonical: "https://getdroppy.app/docs/droppykit/api/shelf-widget-descriptor"
last-updated: "2026-09-09"
---

# ShelfWidgetDescriptor

Static description of one shelf widget, rendered by the host without calling into the widget's views.

`struct ShelfWidgetDescriptor`

## Initializers

### init(id:title:systemImage:layoutTraits:focusPolicy:prewarmPolicy:activityPriority:searchKeywords:)

`init(id: ShelfWidgetID, title: String, systemImage: String, layoutTraits: ShelfWidgetLayoutTraits = ShelfWidgetLayoutTraits(), focusPolicy: ShelfWidgetFocusPolicy = .none, prewarmPolicy: ShelfWidgetPrewarmPolicy = .allowed, activityPriority: Int = 0, searchKeywords: [String] = [])`

Creates a descriptor.

## Properties

### activityPriority

`let activityPriority: Int`

Priority when the compact surface must pick one live widget to show. Higher wins. 0 is neutral. Forward-declared: current hosts do not yet consult it, so leave it 0 unless you have a real reason.

### focusPolicy

`let focusPolicy: ShelfWidgetFocusPolicy`

Keyboard focus participation.

### id

`let id: ShelfWidgetID`

Stable identifier, unique within the droplet.

### layoutTraits

`let layoutTraits: ShelfWidgetLayoutTraits`

Declarative layout parameters.

### prewarmPolicy

`let prewarmPolicy: ShelfWidgetPrewarmPolicy`

Prewarm participation.

### searchKeywords

`let searchKeywords: [String]`

Extra keywords for the widget picker's search.

### systemImage

`let systemImage: String`

SF Symbol name for pickers and the widget gallery.

### title

`let title: String`

User-visible title, sentence case.
