<!--
{
  "availability" : [
    "iOS: 10.0 -",
    "iPadOS: 10.0 -",
    "macCatalyst: 14.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Messages",
  "identifier" : "/documentation/Messages",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "Messages"
    ],
    "preciseIdentifier" : "Messages"
  },
  "title" : "Messages"
}
-->

# Messages

Create app extensions that allow users to send text, stickers, media files, and interactive messages.

## Overview

You can use the Messages framework to create sticker packs and iMessage apps. You can create sticker packs and iMessage apps as either standalone apps or as app extensions within a containing iOS app. For more information on creating and working with app extensions, see [App extensions](https://developer.apple.com/app-extensions/).

iMessage apps and stickers help people interact and communicate in the context of a Messages conversation. For design guidance, see [Human Interface Guidelines > iMessage apps and stickers](https://developer.apple.com/design/human-interface-guidelines/imessage-apps-and-stickers).

### iMessage apps

iMessage apps leverage the full framework to interact with the Messages app.

> Note:
> To avoid a crash, an iMessage app linked on or after iOS 10 must include usage description keys for the device features it needs to access in its `Info.plist` file. Specifically, it must include <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSCameraUsageDescription> to access the device’s camera, and it must include <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSMicrophoneUsageDescription> to access the device’s microphones.

Use iMessage apps to:

- Present a custom user interface inside the Messages app; see [`MSMessagesAppViewController`](/documentation/Messages/MSMessagesAppViewController).
- Create a custom or dynamic sticker browser; see [`MSStickerBrowserViewController`](/documentation/Messages/MSStickerBrowserViewController).
- Insert text, stickers, or media files into the Messages app’s input field; see [`MSConversation`](/documentation/Messages/MSConversation).
- Create interactive messages that carry app-specific data; see [`MSMessage`](/documentation/Messages/MSMessage).
- Update interactive messages (for example, to create games or collaborative apps); see [`MSSession`](/documentation/Messages/MSSession).

For more information on submitting iMessage Apps to the App Store, see [Preparing Your iMessage App for Submission](https://developer.apple.com/app-store/imessage-app-submissions/).

In iOS 17, Messages allows you to interactively resize iMessage apps with a vertical pan gesture. Messages handles any conflicts between resize gestures and your custom gestures. If your app uses manual touch handling such as <doc://com.apple.documentation/documentation/UIKit/UIGestureRecognizer/touchesBegan(_:with:)>, <doc://com.apple.documentation/documentation/UIKit/UIGestureRecognizer/touchesMoved(_:with:)>, and <doc://com.apple.documentation/documentation/UIKit/UIGestureRecognizer/touchesEnded(_:with:)>, you can do either of the following:

- Change your manual touch handling code to use a gesture recognizer instead.
- Use your <doc://com.apple.documentation/documentation/UIKit/UIView> to override <doc://com.apple.documentation/documentation/UIKit/UIGestureRecognizerDelegate/gestureRecognizerShouldBegin(_:)> and return `NO` when your iMessage app doesn’t own the gesture.

### Become the default messaging app

In iOS and iPadOS 18.2 and later, a person may select an app other than the Messages app to send instant messages. If you wish to make your app the default messages app, see [Preparing your app to be the default messaging app](/documentation/Messages/Preparing-your-app-to-be-the-default-messaging-app).

## Topics

### Default messaging app

[Preparing your app to be the default messaging app](/documentation/Messages/Preparing-your-app-to-be-the-default-messaging-app)

Configure your messaging app so people can set it as the default on their device.

### Custom sticker packs

[Adding Sticker packs and iMessage apps to the system Stickers app, Messages camera, and FaceTime](/documentation/Messages/adding-sticker-packs-and-imessage-apps-to-the-system-stickers-app-messages-camera-and-facetime)

Enable your Sticker pack or iMessage app in the media context.

[Adding your sticker packs to Messages](/documentation/Messages/adding-your-sticker-packs-to-messages)

Drag and drop your sticker pack into the Stickers asset catalog to let people access your stickers from Messages.

[`class MSStickerBrowserViewController`](/documentation/Messages/MSStickerBrowserViewController)

A view controller that provides dynamic content to the standard sticker browser.

[`class MSStickerBrowserView`](/documentation/Messages/MSStickerBrowserView)

A browser view that displays a dynamically generated list of stickers.

[`class MSStickerView`](/documentation/Messages/MSStickerView)

A view for displaying a sticker.

[`enum MSStickerSize`](/documentation/Messages/MSStickerSize)

The size of the stickers in the browser view.

### Custom iMessage app interface

[IceCreamBuilder: Building an iMessage Extension](/documentation/Messages/icecreambuilder-building-an-imessage-extension)

Allow users to collaborate on the design of ice cream sundae stickers.

[Creating a Sticker App with a Custom Layout](/documentation/Messages/creating-a-sticker-app-with-a-custom-layout)

Expand on the Messages sticker app template to create an app with a customized user interface.

[`class MSMessagesAppViewController`](/documentation/Messages/MSMessagesAppViewController)

The principal view controller for iMessage apps.

[`protocol MSMessagesAppTranscriptPresentation`](/documentation/Messages/MSMessagesAppTranscriptPresentation)

A protocol that provides support for displaying live messages in the transcript of the Messages app.

[`enum MSMessagesAppPresentationStyle`](/documentation/Messages/MSMessagesAppPresentationStyle)

Presentation styles that describe your iMessage app’s appearance.

### Message content

[`class MSConversation`](/documentation/Messages/MSConversation)

An object that represents a conversation in the Messages app.

[`class MSSticker`](/documentation/Messages/MSSticker)

A sticker that can be sent as a new message or attached to an existing balloon in the Messages app’s  transcript.

### Interactive messages

[`class MSMessage`](/documentation/Messages/MSMessage)

A custom message object.

[`class MSSession`](/documentation/Messages/MSSession)

A session object used to create and update messages.

[`class MSMessageLayout`](/documentation/Messages/MSMessageLayout)

An abstract base class that defines the appearance of [`MSMessage`](/documentation/Messages/MSMessage) objects in the conversation transcript.

[`class MSMessageTemplateLayout`](/documentation/Messages/MSMessageTemplateLayout)

A template-based layout for custom messages.

[`class MSMessageLiveLayout`](/documentation/Messages/MSMessageLiveLayout)

A layout that provides a custom, interactive view inside the transcript.

### Critical messages

[Sending SMS messages from an app](/documentation/Messages/critical-messaging-api)

Send critical messages from inside your app using the Critical Messaging API.

[`class MSCriticalSMSMessenger`](/documentation/Messages/MSCriticalSMSMessenger)

The user interface for the Critical Messaging API.

[`struct MSRecipient`](/documentation/Messages/MSRecipient)

A structure that describes the recipient of a critical message.

[`struct MSCriticalMessage`](/documentation/Messages/MSCriticalMessage)

A message for critical communications.

[`enum MSCriticalMessagingAuthorizationStatus`](/documentation/Messages/MSCriticalMessagingAuthorizationStatus)

Values that describe the authorization status for the Critical Messaging API.

### Errors

[`let MSStickersErrorDomain: String`](/documentation/Messages/MSStickersErrorDomain)

The error domain for stickers.

[`let MSMessagesErrorDomain: String`](/documentation/Messages/MSMessagesErrorDomain)

The error domain for iMessage apps.

[`enum MSMessageErrorCode`](/documentation/Messages/MSMessageErrorCode)

The error codes that the Messages framework generates.

[`enum MSCriticalMessagingError`](/documentation/Messages/MSCriticalMessagingError)

Values that describe errors the Critical Messaging API returns.

### Classes

[`class MSUPIRequest`](/documentation/Messages/MSUPIRequest)

---

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)