The iMessage platform's opportunity lies in the second type of extensions available to developers: iMessage apps.
Like sticker packs, iMessage apps are installed and managed from the iMessage App Store, they live in the Messages app drawer, and they support compact and expanded mode. They can be standalone apps or extensions within a containing iOS app.
Unlike basic sticker packs, however, iMessage apps have to be programmed. They're actual apps that can present a user interface with their own view controller. iMessage apps can:
- Offer more control to developers who want to build an interactive sticker browser;
- Insert text and media files in the input field;
- Display their custom UI;
- Access iOS frameworks;
- Create, send, and update interactive messages.
With iMessage apps, developers can bring their apps' interfaces, data, and experience into Messages.
Because of this, there are no limitations for what an iMessage app should look like. Anything developers can put in a view controller (bearing in mind compact mode and memory constraints) can be an iMessage app. Coming up with a miniaturized app that makes sense in Messages, though, will be just as hard as envisioning Watch apps that are suitable for the wrist.
There are some differences to consider for compact and expanded mode. In compact, apps cannot access the system keyboard and they can't support gestures (horizontal swipes are used to navigate between apps and sticker packs). Only taps and vertical scrolling are available in compact mode.
In expanded mode, both the system keyboard and gestures are supported. Developers can ask users to type information in the expanded layout, they can enable deeper gesture controls, and, generally speaking, they have more freedom in what they present to the user. When running in expanded mode, an iMessage extension that has a container app features an icon in the top left to launch the full app.
The other peculiarity of iMessage apps is that they can create interactive messages with special message bubbles. These bubbles are based on a template with some strict limitations. There's only one layout apps can use. An interactive message can display an image, audio, or video file as the main content; the app's icon is always shown in the top left; at the bottom, developers can set textual properties for the bubble's caption bar including title, subtitle, captions, and subcaptions (the caption bar is optional).
iMessage apps can't alter the standard layout of an interactive message, nor can they inject buttons around it. Any user interaction must be initiated from the bubble itself. iMessage apps can't send interactive messages on the user's behalf: they can only prepare an interactive message and place it in the input field.
GIFwrapped's iMessage app inserts GIFs into the input field.
Castro's message bubble
Do With Me prepares message bubbles that open shared todo lists.
xoxo lets you play tic-tac-toe with message bubbles.
Cipher encrypts your messages in a custom message bubble.
When an interactive message bubble is tapped, an iMessage app can bring up a custom interface to let participants view more information on the shared item or continue a task. Keep in mind, though, that if you tap on an interactive message to open it in full-screen when you don't have the iMessage app to view it on your device, you'll be taken to the iMessage App Store to install it.
The best way to understand what iMessage apps can do is to try some. Since June, I was able to test over 20 iMessage apps from third-party developers, and I have a general idea of what we should expect throughout the year.
Supertop's podcast client, Castro, will soon let you share your favorite episodes with an iMessage app. Castro loads a list of episodes you've recently listened to; tap one, and it'll turn into a rich bubble embedding artwork and episode title.
The best part: you can tap the bubble to open show notes in full-screen (and even follow webpage links inside Messages) and add an episode to your Castro queue. It's a great way to share podcast episodes in iMessage conversations and save them with a couple of taps.
Drafts, Greg Pierce's note-taking app, has added an iMessage app extension to share notes with friends. You can browse all notes from your inbox or switch to Flagged messages.
Drafts places a note's plain text in Messages' input field, ready to be sent. The iMessage app is going to come in handy to share commonly accessed notes and bits of text with colleagues.
I've been using GIFwrapped's iMessage app to send GIFs of dogs smiling to my mom and girlfriend. They love them.
Alongside a widget and rich notifications, CARROT Weather is coming to iMessage with an app to share weather forecasts in conversations. It's a solid example of the flexibility granted to apps: CARROT for iMessage carries its custom UI and hilarious sound effects, and it displays rich graphics and animations. It can access your current location from Messages, and it even lets you search for locations in expanded mode, where you can browse a full-screen forecast of the upcoming week – all without leaving Messages.
CARROT creates interactive messages that are prepared in the input field by tapping a Share button. These are bubbles with a custom preview graphic and text labels for location, temperature, and current conditions. If you receive one and tap on it, you'll open CARROT's expanded preview.
Developed by Sven Bacia, Couchy is another iMessage app that sends interactive bubbles that present a full-screen UI when tapped. Couchy is a TV show tracker; on iMessage, it displays a list of recently watched and upcoming show episodes. Pick one, and Couchy will assemble a bubble with the series' artwork and name of the episode.
When you tap a Couchy message, you get an expanded preview of the episode with metadata and artwork fetched from trakt.tv, plus the ability to view the episode in the main Couchy app.
ETA, a navigation app I covered on MacStories before, is based on a similar design, using small snippets in compact mode for your favorite locations. Tap one, and the app will calculate travel time on the spot, preparing a message bubble to share with someone.
The interactive message can be tapped to view more details about the other person's estimated travel time, as well as get directions to the same address. You can also collaborate on the same travel time and respond with your status (more on collaborative apps below) and search for locations directly from iMessage. ETA is one of the most useful, technically impressive iMessage apps I've tried.
It can get even more advanced than this, though. Snappy, for example, is a web browser for iMessage. You can search Google or paste URLs in a search box, or use search suggestions.
Once you've found a webpage you want to share in a conversation, you can tap a Send button to insert the link in the input field. The link, of course, will expand into a rich preview. Given Messages' lack of Safari View Controller, Snappy can be useful to paste links and view them without leaving the app; it's also a convenient way to look something up on Google while talking to a friend.
Pico, developed by Clean Shaven Apps, can send photos and videos at lower quality with deeper controls than Apple's built-in Low Quality Image Mode for iMessage. After choosing media from the library, Pico opens a dark interface with a preview at the top and quality settings at the bottom. You can choose from four quality presets, compare savings with the original item, and tweak dimensions.
In addition to downscaling, Pico can remove metadata from media, such as location details. The app remembers settings for each conversation, and, overall, it's a great way to save on cellular data with more options than iMessage's default solution.
Touch ID can be integrated with iMessage apps, and Cipher uses the authentication framework to let you send "secret messages" encrypted with AES-256 that don't appear in the transcript as normal text messages. Instead, Cipher generates custom bubbles that hide your text; on the other end, the recipient will have to authenticate with Touch ID (thus confirming the device isn't being used by someone else) to read your message.
You can also send digitally-signed messages to prove it's really you by typing in Cipher and "signing" with your Touch ID.
These are just a few examples of what developers can build with the Messages framework. Starting today, we're going to see an avalanche of iMessage apps, but the best ones will stand out as intuitive utilities suited for sharing.
Collaborative iMessage Apps
Along with single-user apps, Apple has emphasized the ability for developers to build iMessage apps that let users collaborate on a task inside Messages.
In a collaborative iMessage app, an interactive message can be modified by participants in a conversation. As two or more people interact with a message in the same session and update its content, Messages removes the previous message from the transcript, collapsing it into a succinct summary text (so that outdated messages with old data don't pollute the conversation). Only the new message, with the updated content, is displayed at the bottom as normal.
Let's work with a fictional example.
Imagine that you're planning a trip with your friends over iMessage. It's always hard to keep track of everyone's available times, so developer Myke Hurley has created 1-2-3 Trip Planner, an iMessage app that looks into a user's calendar, brings up a custom calendar view in Messages, and lets the user choose up to three available slots in their schedule. Once three times are picked, 1-2-3 Trip Planner generates a message bubble with the user's three choices as a title.
Stephen has created an iMessage conversation with two of his friends, and they want to plan a trip together. Stephen brings up 1-2-3 Trip Planner, finds some available slots in his weekend schedule, selects three of them, and sends a message. The interactive message uses "Available Times – Stephen" in the bubble and the days of the week as title.
On the other end of the conversation, Christina needs to look at her calendar and pick three available times. When she taps the 1-2-3 Trip Planner bubble, Stephen's choices are displayed alongside her calendar events, and she can agree on a same slot, or pick a different one. She then replies with her preferences, sending another message bubble.
John is the third participant in this conversation. In his iMessage transcript, Stephen's first bubble has been collapsed into a summary text that says "Stephen picked three time slots" and Christina's message says "Stephen and Christina's time slots". John is only seeing the latest message bubble with the choices of both users. When he taps on it, a full-screen interface comes up, showing him a calendar view with his events and the times Stephen and Christina previously picked.
John can also agree on previously chosen time slots or pick new ones. When he's done, he sends his reply, and the second message bubble from Christina also turns into a summary text. John's third and final bubble has a title that says "Stephen, Christina, and John". At this point, the three participants are looking at one interactive message; they can look at the results and decide on a time that works for everyone.
Stephen, Christina, and John collaborated on a task within Messages without the back and forth of switching between calendars and texting each other's available times. 1-2-3 Trip Planner has allowed multiple users to easily agree on a shared schedule in less than a minute.
There are two additional aspects worth noting. In my imaginary (but technically accurate) example, 1-2-3 Trip Planner accessed the native iOS EventKit framework; I've tried actual iMessage apps that accessed the camera, location, photos, and the clipboard. Also, Apple is very concerned about user privacy and exposing contact information to iMessage apps. For this reason, the Messages framework doesn't allow apps to see any details about the participants in a conversation, but only local identifiers (alphanumeric strings that don't identify a single person).34
The framework Apple has built into Messages should, in theory35, allow for the creation of moderately complex collaborative apps. Calendar collaboration is just one possible use case; imagine utilities to split bills, todo apps, photo compositions, and even games.
I tested a couple of straightforward collaborative iMessage apps in the past few weeks. The aforementioned ETA iMessage app lets you respond to a friend's travel time with another interactive message.
Another app is ChibiStudio, which lets you assemble "chibi" avatars either by yourself or with a friend choosing from various pieces of clothing and body traits.
When creating a chibi collaboratively, each person can add new details to the character and send an interactive message back. To keep track of progress, the app tells you which items have been added in the title of the message bubble and it collapses previous messages into summaries. I tested ChibiStudio with John, and it was fun.
Do With Me uses collaboration in iMessage effectively, enabling you to create shared todo lists where other people can add and complete items inside a conversation.
I wouldn't use an iMessage todo app as my only task manager, but I think it's useful to have something like Do With Me as an extension of a full task manager to collaborate with others on specific lists (grocery shopping, homework, etc.).
Finally, it wouldn't be a new App Store without a re-interpretation of tic-tac-toe. In xoxo, you'll be able to challenge friends on the classic game with a collaborative iMessage app that uses bubbles and full-screen views to advance the game.
The app works surprisingly well, with a good use of summaries in the transcript and captions to describe player moves. It's a nice way to pass the time during a conversation.36
Collaborative iMessage apps are only one part of the story. For single-user iMessage apps, the Messages framework should be enough to create deep, custom experiences unlike anything we've seen before.
The Future of iMessage
When the App Store opened for business, no one could imagine the extent of developers' imagination. No one could predict what the iPhone would become by letting app makers write software for it. And looking back at that moment today, it's evident that our devices are deeply different, and dramatically more powerful, because of apps.
Apple can attain a similar result with the iMessage App Store. iMessage apps create a new avenue for developers to bring any kind of experience into millions of daily conversations. And by plugging into iOS and the App Store, Apple can leverage the scale of an ecosystem other messaging services don't have.
After using iMessage apps for the past three months, I have the same feeling of the early App Store days. It's a new frontier, it's exciting, and developers are just getting started. Compared to companion App Stores like the Watch and Apple TV ones, I think the iMessage App Store will be a hit among iOS users.
Apple needed to modernize iMessage in iOS 10, but they went beyond mere aesthetic and functional improvements to the Messages app. They've opened the door for apps to reimagine what we share and how we share it.
We're on the brink of a fundamental change to iMessage. If Apple plays its cards right, we could be witnessing the foundation of a second app platform within iOS.
In our case, 1-2-3 Trip Planner wouldn't know about anyone's name – it'd only see their identifiers and the interactive message from the current session.
Identifiers are unique to each user's device and they are scoped to the iMessage app currently in use; if John removes 1-2-3 Trip Planner from his device and reinstalls it, the app will attribute a different set of identifiers to each participant. Apps can store these identifiers and Messages will match them to local contact names – that's how 1-2-3 Trip Planner can use labels such as "Stephen's Available Times". The "Stephen" part is a decoded identifier. ↩︎
- In practice, the use of local identifiers and the fact that apps don't see the contents of individual messages but only a representation of objects in a session could hinder the feasibility of collaborative apps. We'll have to see if Apple's privacy-conscious approach will allow developers to program collaborative environments spread across multiple devices and instances of the same conversation. ↩︎
- It reminds me of when I was in high school and didn't pay attention in my physics class, playing tic-tac-toe with a friend on my notebook. It's a time-filler. ↩︎