App developers and product designers looking to add communications to their apps have a choice, and it’s an important one. They can tack on SMS texting functionality. Or they can build in-app messaging. SMS providers refer to the latter as IP messaging, which correctly describes the underlying technology. However, much like you wouldn’t describe a navigation feature as a collection of vector tiles and geospatial math, we refer to it not as IP messaging, but rather what it is to the user: native messaging. Native messaging describes how these communications are woven natively into your favorite apps’ experiences.

Because we live and breathe this stuff, we thought it’d be helpful to share a few things to keep in mind while making the decision.


For the uninitiated, SMS is short for “Short Message Service.” It was invented 30 years ago as a way to send text-based messages through the phone system. While SMS was an amazing technological feat at the time, to be constrained by its 160-character plain-text limitation that forces users outside of your app today is anachronistic at best.

Here’s what a user experience involving SMS looks like in a ride-sharing app:

alt(Full size image.)

The challenges with SMS

SMS offers little to those looking to implement a tightly controlled and integrated communications experience within their app.

  • Fragmented user experience – as shown in the above example, the user must leave the app in order to respond to an app-related text message. In this case the communication is between the car driver and the rider.
  • Limited functionality – SMS supports only text, no modern day content like emojis, GIFs, photos, videos, audio snippets or location. This limits both the user’s ability to communicate, and the developer’s ability to create a great user experience.
  • Limited control, insight and reliability for app developers — SMS is a complex, external system that apps interact with; one filled with middlemen and governed by mobile carriers. This means that app developers’ visibility into SMS conversations are mediated by many parties, even though it’s acting as a direct communication channel between app and user. Developers have limited access to delivery status and are forced to deal with a narrow delivery window. There’s no guarantee that messages will be delivered in order, or even that they will be delivered at all.
  • User confusion caused by anonymity — messages delivered via SMS originate from a short-code or number owned by the service provider. This obfuscates the message’s origin and forces the developer to waste precious characters providing context to the recipient, so they can understand which app and/or user sent the message. These are decisions that developers and product designers should be allowed to make, rather than a bitter pill they are forced to swallow.

Recommended ways to use SMS in apps

Despite the limitations of SMS, there are still a few useful ways app developers can use the system.

  • Phone number verification – SMS is a great system for authenticating app users via their phone number.
  • Sending messages to non app users – SMS is also a great tool for sending invites to non app users (email also works well for this).

IP messaging

Communications channels that exist as a part of a built-in app experience are defined as IP messaging. “Native messaging” is the term we use here at Layer. Both terms refer to messages that are sent “over the top” — those that rely on mobile TCP/IP data links for delivery rather than the traditional telephony network. As Internet access is available to smartphone applications directly, it is an enabling technology for rich, native in-app communications.

Though native messaging hasn’t been available for nearly as long as SMS, it offers a wealth of additional functionality for app developers, designers, and product people. And not until Layer was there an IP messaging service that made it so easy to build and integrate into an app.

Here’s what a user experience involving native messaging looks like in a ride-sharing app:

alt(Full size image.)

Benefits of native messaging

Native messaging empowers app developers to design and deliver user experiences that are far superior to those shackled by the constraints of SMS technology.

  • Users stay in-app — the example above shows how smoothly the user transitions from ordering the car to chatting with the driver, all inside one app.
  • Rich functionality — IP messaging supports the types of content users have come to expect: emojis, GIFs, photos, videos, audio snippets, and location. In the example above, the user can see the driver’s location and communicate in the context of where and when the driver will arrive. She can also see a photo of the driver and car, and whatever else the app developer chooses. With Layer, developers are perfectly positioned to support any future content types because of our free-form binary message payloads, which can be up to 2GB in size.
  • Control for app developers — keeping the user in the app allows the developer to maintain control of the user experience and keep the user engaged. IP messaging affords app developers complete control over every part of the communication, from look and feel, all the way to data about delivery completions and response rates. The app developer may use this data to iterate and improve the app experience for her users.
  • Context for users — because communications related to the app aren’t presented as text messages from an unrecognized telephone number, but rather as push notifications or chats from the app, the user has appropriate context for the communication.
  • Freedom to create excellent user experiences — the rich functionality of IP messaging unlocks great user experiences. App developers and product designers are able to create whatever experience they desire, without the limitations of SMS.

Recommended ways to use native messaging in apps

Whether an app developer is building a dating app, marketplace app, sports app, content publishing portal, messaging app, a game, or anything in between, native messaging gives them a range of functionality options. Here are just a few:

  • One-to-one chat — let your users connect directly to each other through chat, and enhance personal connection through active typing indicators and read receipts.
  • One-to-many chat — get groups of users talking with rich, multimedia group chat.
  • Photo sharing — allow your users to share experiences by sharing photos in chat.
  • Location sharing — share map locations directly into the conversation.
  • Audio or video chat (asynchronous) — let your users sense the nuance of physical presence with audio and video.
  • Information-rich messages — enrich your app experience by enabling users to send restaurant information, reservation confirmations, concert tickets, music, and more.
  • Application-to-user messaging — send messages from your backend like game scores, news updates, and marketing messages, as in-conversation messages or direct-to-user announcements with push notifications.
  • Cross-platform experiences — craft beautiful experiences for each platform and device, be it desktop or mobile.

Try native messaging for your app

Native messaging is easy to build into your app with Layer. Get started for free today and build a prototype to help your team understand how transformative native messaging could be for your product.

Get A Free Demo