---
title: "DropletInstallStateService, DroppyKit"
description: "Reports what the user has switched on, so a droplet can avoid doing work for a widget nobody is showing."
canonical: "https://getdroppy.app/docs/droppykit/api/droplet-install-state-service"
last-updated: "2026-09-09"
---

# DropletInstallStateService

Reports what the user has switched on, so a droplet can avoid doing work for a widget nobody is showing.

`@MainActor protocol DropletInstallStateService : AnyObject`

Subscribe to `statePublisher` rather than reading `state` once in [`activate(host:)`](https://getdroppy.app/docs/droppykit/api/droplet#activate-host): the state can settle just after activation, once Droppy knows which of the widgets you declare are on the shelf.

## Properties

### state

`@MainActor var state: DropletInstallState { get }`

The current state.

### statePublisher

`@MainActor var statePublisher: AnyPublisher<DropletInstallState, Never> { get }`

Sends the current state when you subscribe, then every change to `state`, on the main actor. Droppy after 16.0.1 sends a change when the user places or removes one of your widgets and when the droplet is about to be switched off; it never sends a value equal to the last. Droppy 16.0.1 and earlier never send a change.
