<!--
{
  "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.

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

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

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

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

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

A view for displaying a sticker.

[`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.

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

The principal view controller for iMessage apps.

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

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

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

Presentation styles that describe your iMessage app’s appearance.

### Message content

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

An object that represents a conversation in the Messages app.

[`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

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

A custom message object.

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

A session object used to create and update messages.

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

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

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

A template-based layout for custom messages.

[`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.

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

The user interface for the Critical Messaging API.

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

A structure that describes the recipient of a critical message.

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

A message for critical communications.

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

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

### Errors

[`MSStickersErrorDomain`](/documentation/Messages/MSStickersErrorDomain)

The error domain for stickers.

[`MSMessagesErrorDomain`](/documentation/Messages/MSMessagesErrorDomain)

The error domain for iMessage apps.

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

The error codes that the Messages framework generates.

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

Values that describe errors the Critical Messaging API returns.



---

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)