---
title: Messages
framework: Messages
role: collection
role_heading: Framework
platforms: [iOS 10.0+, iPadOS 10.0+, Mac Catalyst 14.0+]
path: messages
---

# Messages

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

## Overview

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. 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. 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 NSCameraUsageDescription to access the device’s camera, and it must include NSMicrophoneUsageDescription to access the device’s microphones. Use iMessage apps to: Present a custom user interface inside the Messages app; see MSMessagesAppViewController. Create a custom or dynamic sticker browser; see MSStickerBrowserViewController. Insert text, stickers, or media files into the Messages app’s input field; see MSConversation. Create interactive messages that carry app-specific data; see MSMessage. Update interactive messages (for example, to create games or collaborative apps); see MSSession. For more information on submitting iMessage Apps to the App Store, see Preparing Your iMessage App for Submission. 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 touchesBegan(_:with:), touchesMoved(_:with:), and touchesEnded(_:with:), you can do either of the following: Change your manual touch handling code to use a gesture recognizer instead. Use your UIView to override 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.

## Topics

### Default messaging app

- [Preparing your app to be the default messaging app](messages/preparing-your-app-to-be-the-default-messaging-app.md)

### Custom sticker packs

- [Adding Sticker packs and iMessage apps to the system Stickers app, Messages camera, and FaceTime](messages/adding-sticker-packs-and-imessage-apps-to-the-system-stickers-app-messages-camera-and-facetime.md)
- [Adding your sticker packs to Messages](messages/adding-your-sticker-packs-to-messages.md)
- [MSStickerBrowserViewController](messages/msstickerbrowserviewcontroller.md)
- [MSStickerBrowserView](messages/msstickerbrowserview.md)
- [MSStickerView](messages/msstickerview.md)
- [MSStickerSize](messages/msstickersize.md)

### Custom iMessage app interface

- [IceCreamBuilder: Building an iMessage Extension](messages/icecreambuilder-building-an-imessage-extension.md)
- [Creating a Sticker App with a Custom Layout](messages/creating-a-sticker-app-with-a-custom-layout.md)
- [MSMessagesAppViewController](messages/msmessagesappviewcontroller.md)
- [MSMessagesAppTranscriptPresentation](messages/msmessagesapptranscriptpresentation.md)
- [MSMessagesAppPresentationStyle](messages/msmessagesapppresentationstyle.md)

### Message content

- [MSConversation](messages/msconversation.md)
- [MSSticker](messages/mssticker.md)

### Interactive messages

- [MSMessage](messages/msmessage.md)
- [MSSession](messages/mssession.md)
- [MSMessageLayout](messages/msmessagelayout.md)
- [MSMessageTemplateLayout](messages/msmessagetemplatelayout.md)
- [MSMessageLiveLayout](messages/msmessagelivelayout.md)

### Critical messages

- [Sending SMS messages from an app](messages/critical-messaging-api.md)
- [MSCriticalSMSMessenger](messages/mscriticalsmsmessenger.md)
- [MSRecipient](messages/msrecipient.md)
- [MSCriticalMessage](messages/mscriticalmessage.md)
- [MSCriticalMessagingAuthorizationStatus](messages/mscriticalmessagingauthorizationstatus.md)

### Errors

- [MSStickersErrorDomain](messages/msstickerserrordomain.md)
- [MSMessagesErrorDomain](messages/msmessageserrordomain.md)
- [MSMessageErrorCode](messages/msmessageerrorcode.md)
- [MSCriticalMessagingError](messages/mscriticalmessagingerror.md)

### Classes

- [MSUPIRequest](messages/msupirequest.md)
