---
title: "DropletInfoPlistKey, DroppyKit"
description: "Info.plist keys of a .droplet bundle."
canonical: "https://getdroppy.app/docs/droppykit/api/droplet-info-plist-key"
last-updated: "2026-09-09"
---

# DropletInfoPlistKey

Info.plist keys of a .droplet bundle.

`enum DropletInfoPlistKey`

A .droplet is a standard macOS loadable bundle (`CFBundlePackageType = BNDL`) whose Info.plist carries these keys next to the usual CFBundle keys. The host reads them BEFORE `Bundle.load`, so an incompatible bundle is rejected without running its code.

## Type properties

### bundleIdentifierPrefix

`static let bundleIdentifierPrefix: String`

Prefix every droplet bundle identifier uses: `app.getdroppy.droplet.<id>`. Enforced by [`DropletBundleInfo`](https://getdroppy.app/docs/droppykit/api/droplet-bundle-info) since DroppyKit 0.3.0.

### dropletID

`static let dropletID: String`

Store id of the droplet. Must equal the manifest id and `Droplet.id`.

### kitABI

`static let kitABI: String`

Integer DroppyKit ABI generation the bundle was built against.

### kitMinAPI

`static let kitMinAPI: String`

Minimum DroppyKit API version (semver string) the bundle requires.

### minAppVersion

`static let minAppVersion: String`

Minimum Droppy version (numeric dotted compare). Optional.

### minMacOS

`static let minMacOS: String`

The oldest macOS the droplet runs on, from the manifest's `minMacOS`. The system's own key, so Finder and `codesign` read it too. Since 1.12.0.

### permissions

`static let permissions: String`

Array of capability strings; see [`DropletPermission`](https://getdroppy.app/docs/droppykit/api/droplet-permission).

### replacesBuiltIn

`static let replacesBuiltIn: String`

`ExtensionType` raw value this bundle shadows while the built-in twin still ships (dual-mode transition key). Host-internal: `ExtensionType` is a Droppy type a droplet author cannot look up, and the key exists only for as long as the transition does.

### requiredPackageType

`static let requiredPackageType: String`

Required value of `CFBundlePackageType`. Enforced by [`DropletBundleInfo`](https://getdroppy.app/docs/droppykit/api/droplet-bundle-info) since DroppyKit 0.3.0.

### urlAliases

`static let urlAliases: String`

Deep-link aliases routed to the droplet. Optional.

## Type methods

### expectedBundleIdentifier(for:)

`static func expectedBundleIdentifier(for dropletID: String) -> String`

The bundle identifier a droplet with this id must declare.
