<!--
{
  "documentType" : "article",
  "framework" : "AppIntents",
  "identifier" : "/documentation/AppIntents/app-entities",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "App entities"
}
-->

# App entities

Make your app’s core types and data concepts available to the system using app entity types.

## Overview

App entities provide the system with information about your app’s data, or
about concepts related to your app’s data. App entities help the system resolve
parameters for app intents by letting it introspect relevant types. For
example, a photo app that provides app entities for its photos and albums might
also provide app entities to represent “the current photo” or “this album.”
These specific app entities help resolve intents more quickly and with fewer
verbal interactions.

Define app entities for core types and concepts that you want to make available
to system experiences. Add properties for any data values that help people
discover entities using queries. For example, add the name of a photo album
or the currency amount for a financial transaction.

## Topics

### Essentials

[Defining app entities for your custom data types](/documentation/AppIntents/defining-app-entities-for-your-custom-data-types)

Provide the system with information about the types your app uses to model its
data so that your intents can use those types as parameters.

[Making app entities available in Spotlight](/documentation/AppIntents/making-app-entities-available-in-spotlight)

Update your app entity types to support Spotlight indexing, and donate entities to
make them findable in searches.

### App entity types

[`AppEntity`](/documentation/AppIntents/AppEntity)

An interface for making a custom type or app-specific concept discoverable by Apple Intelligence and experiences like Siri or the Shortcuts app.

[`FileEntity`](/documentation/AppIntents/FileEntity)

An entity that refers to a document or other file.

[`IndexedEntity`](/documentation/AppIntents/IndexedEntity)

An interface that allows you to include an entity in your app’s Spotlight index.

[`SyncableEntity`](/documentation/AppIntents/SyncableEntity)

An interface that indicates your entity has an identifier that’s consistent across devices.

[`TransientAppEntity`](/documentation/AppIntents/TransientAppEntity)

A type that represents a transient model object which exposes its interface to App Intents via
properties. Note that `TransientAppEntity` types are not meant to be queried.

[`UniqueAppEntity`](/documentation/AppIntents/UniqueAppEntity)

An entity that will only ever have one value, such as global settings.

[`OwnershipProvidingEntity`](/documentation/AppIntents/OwnershipProvidingEntity)

A type that provides the system with ownership and sharing context for an app entity.

[`UnionValue()`](/documentation/AppIntents/UnionValue())

[`AppUnionValue`](/documentation/AppIntents/AppUnionValue)

A protocol that provides nominal type identity and metadata for union values.

[`AppUnionValueCasesProviding`](/documentation/AppIntents/AppUnionValueCasesProviding)

A protocol for the cases enumeration of an `AppUnionValue`.

### Entity collections

[`EntityCollection`](/documentation/AppIntents/EntityCollection)

An array of entity identifiers that you use to improve the efficiency of operations involving
large numbers of entities.

### Entity identity

[`EntityIdentifier`](/documentation/AppIntents/EntityIdentifier)

A type that uniquely identifies a specific instance of an app entity.

[`EntityIdentifierConvertible`](/documentation/AppIntents/EntityIdentifierConvertible)

An interface for converting between an entity’s identifier and its string
representation.

[`FileEntityIdentifier`](/documentation/AppIntents/FileEntityIdentifier)

An identifier for an app entity that refers to a document or other file.

[`PersistentlyIdentifiable`](/documentation/AppIntents/PersistentlyIdentifiable)

Defines a string that uniquely identifies a type. This is useful for maintaining the identity
of a type, even when its type name is changed.

[`SyncableEntityIdentifier`](/documentation/AppIntents/SyncableEntityIdentifier)

A type-safe wrapper you use to specify different local and stable identifiers for an entity.

[`AttributedEntityIdentifier`](/documentation/AppIntents/AttributedEntityIdentifier)

A unique identifier for an app entity instance within an application.

[`AttributedTypeIdentifier`](/documentation/AppIntents/AttributedTypeIdentifier)

A unique identifier for an app entity or transient app entity type within an application bundle.

[`AppEntityAnnotatable`](/documentation/AppIntents/AppEntityAnnotatable)

An interface that system types adopt and use to manage their relationship to app entities.

### Entity queries

[Entity queries](/documentation/AppIntents/entity-queries)

Implement one or more query types to help the system find your app’s entities.

### Property declarations

[`ComputedProperty()`](/documentation/AppIntents/ComputedProperty())

A macro that adds a computed app entity property with a get accessor and an optional set accessor.

[`ComputedProperty(title:)`](/documentation/AppIntents/ComputedProperty(title:))

A macro that adds a computed app entity property with a get accessor and an optional set accessor.

[`ComputedProperty(indexingKey:)`](/documentation/AppIntents/ComputedProperty(indexingKey:))

A macro that adds a computed app entity property with get and set accessors.

[`ComputedProperty(customIndexingKey:)`](/documentation/AppIntents/ComputedProperty(customIndexingKey:))

A macro that adds a computed app entity property with a get accessor and an optional set accessor.

[`ComputedProperty(title:customIndexingKey:)`](/documentation/AppIntents/ComputedProperty(title:customIndexingKey:))

A macro that adds a computed app entity property with a get accessor and an optional set accessor.

[`ComputedProperty(title:indexingKey:)`](/documentation/AppIntents/ComputedProperty(title:indexingKey:))

A macro that adds a computed app entity property with a get accessor and an optional set accessor.

[`DeferredProperty()`](/documentation/AppIntents/DeferredProperty())

A macro that adds an asynchronous app entity property with an asynchronous get accessor.

[`DeferredProperty(title:)`](/documentation/AppIntents/DeferredProperty(title:))

A macro that adds an asynchronous app entity property with an asynchronous get accessor.

[`DeferredProperty(indexingKey:)`](/documentation/AppIntents/DeferredProperty(indexingKey:))

A macro that adds an asynchronous app entity property with an asynchronous get accessor.

[`DeferredProperty(title:indexingKey:)`](/documentation/AppIntents/DeferredProperty(title:indexingKey:))

A macro that adds an asynchronous app entity property with an asynchronous get accessor.

[`EntityProperty`](/documentation/AppIntents/EntityProperty)

A property wrapper that exposes the associated property to the system.

[`EntityPropertyModifiers`](/documentation/AppIntents/EntityPropertyModifiers)

[Property comparators](/documentation/AppIntents/property-comparators)

Specify the type of comparison to perform during a property-matched query.

### Data representations

[`DisplayRepresentation`](/documentation/AppIntents/DisplayRepresentation)

A type that describes the user interface presentation of a custom type.

[`DisplayRepresentable`](/documentation/AppIntents/DisplayRepresentable)

An interface for providing a dynamic visual representation of a specific type and instances of that type.

[`InstanceDisplayRepresentable`](/documentation/AppIntents/InstanceDisplayRepresentable)

An interface for providing the visual representation for an instance of a specific type.

[`TypeDisplayRepresentable`](/documentation/AppIntents/TypeDisplayRepresentable)

An interface for providing the visual representation of a specific type.

[`TypeDisplayRepresentation`](/documentation/AppIntents/TypeDisplayRepresentation)

A type that describes the user interface presentation of a custom type.

[`StaticDisplayRepresentable`](/documentation/AppIntents/StaticDisplayRepresentable)

An interface for providing a static visual representation of a specific type.

[`CaseDisplayRepresentable`](/documentation/AppIntents/CaseDisplayRepresentable)

An interface for providing the visual representation for an iterable collection of values.

### Type bridging

[`IntentValueRepresentation`](/documentation/AppIntents/IntentValueRepresentation)

A transfer representation that enables bidirectional conversion between app entities
and system intent values.

### Universal link navigation

[`URLRepresentableEntity`](/documentation/AppIntents/URLRepresentableEntity)

An interface you apply to an app entity type so the system can handle it like a universal link.

[`EntityURLRepresentation`](/documentation/AppIntents/EntityURLRepresentation)

The type that provides the URL for an app entity.

[`CustomURLRepresentationParameterConvertible`](/documentation/AppIntents/CustomURLRepresentationParameterConvertible)

An interface that allows a type to express its contents in a URL representation.

### Foundational types

[`AppValue`](/documentation/AppIntents/AppValue)

An interface that describes conceptual types you use in app intents.

[`AnyIntentValue`](/documentation/AppIntents/AnyIntentValue)

A type the system uses to access a parameter or property value.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)