RCS is built on the GSMA Universal Profile 2.4 standard. Both Apple (iOS 18.1+) and Google Messages (Android) follow this standard, but each platform built its own renderer. The same message payload can look and behave differently on each device.
This guide compares the iOS and Android experience for each mCommons message type so you can design campaigns that work well on both.
Note: This reflects iOS 26.2 and Google Messages behavior as of September 2026.
Can We Detect iOS versus Android?
No. The carrier capability check returns only whether a number can receive RCS (ENABLED or UNREACHABLE). No device type, no OS, no platform. Delivery reports don't include it either. This is by design in the RCS protocol, the GSMA spec is feature-based, not device-based. Every message must be designed for both platforms from the start.
1. Basic (160 characters)
Plain text with optional suggested replies and/or suggested actions.
iOS experience
Text: Renders identically to Android.
Suggested replies: Appear as a persistent vertical list below the message. Stay visible until tapped. Remain on screen even after the subscriber interacts with one.
Suggested actions (one): Displays as a normal button.
Suggested actions (two or more): Collapses into a vertical dropdown menu labeled "Options." Each action shown in a table-style list with an icon (phone, map, calendar, link). Requires an extra tap to reveal the options.
Mixing actions and replies: All actions are grouped above all replies, regardless of the order you define them.
Android experience
Text: Renders identically to iOS.
Suggested replies: Appear as horizontal transient chips below the message. Disappear after the subscriber responds or a new message arrives.
Suggested actions (any count): All actions display as distinct pill-shaped inline buttons, regardless of how many there are.
Mixing actions and replies: Respects your defined order.
Comparison
Recommendations
- Use 1 suggested action per message to avoid the iOS "Options" dropdown
- Place your primary action first
- Keep suggested reply lists short (3-5 options)
2. Enhanced (up to 3,072 characters, no media)
Longer text with suggested replies and/or suggested actions. Requires a calendar, show_location, or request_location action in mCommons. No media.
iOS experience
Text: Renders the full text. Long messages scroll normally.
Suggested replies: Same as Basic, persistent vertical list below the message.
Suggested actions (one): Normal button. Since Enhanced requires a calendar or location action, the message always has at least one.
Suggested actions (two or more): Same "Options" dropdown as Basic. Adding a second action (like Open URL) alongside the required calendar/location action triggers the dropdown.
Mixing actions and replies: Same as Basic, actions grouped above replies regardless of defined order.
Android experience
Text: Renders the full text. Long messages scroll normally.
Suggested replies: Same as Basic, transient horizontal chips.
Suggested actions (any count): All actions display as inline pill buttons.
Mixing actions and replies: Respects your defined order.
Recommendations
- The required calendar/location action counts toward your total, adding a second action triggers the iOS dropdown
- If you need both a calendar action and a URL, use the calendar as the single suggested action
- Keep suggested reply lists short
3. Rich Card
Media + title + description + suggested actions/replies in one card. Up to 4 suggestions per card, plus up to 11 message-level suggestions.
iOS experience
Card layout: Compact card with truncated text. Grey, low-prominence buttons.
Suggested actions: Render on the card itself.
Suggested replies: Render outside the card as a separate persistent list below it. Visually detached from the card content.
Multiple actions: Same "Options" dropdown behavior, two or more actions collapse into the dropdown menu on the card.
Text: Truncates titles and descriptions at approximately 3 lines. Tapping the card opens a full-text view, but that expanded view shows only text, media and suggestion buttons disappear.
Missing title: Lock screen notification and conversation list show "One Message" instead of card content.
Media height: Ignores the media.height parameter (SHORT/MEDIUM/TALL). All cards render at the same height.
GIFs: Display as static images. First frame only.
Media with large text sizes: iOS prioritizes title and button display. Media can be severely cropped or nearly hidden when subscribers use accessibility text sizes.
Portrait images: Preserves the aspect ratio.
Android experience
Card layout: Full card with more visible text. Full-color buttons that stand out.
Suggested actions: Render on the card as inline buttons.
Suggested replies: Also render on the card as inline buttons, alongside actions. No visual separation between the two types.
Multiple actions: All display as inline buttons on the card.
Text: Shows more text before truncating. The expanded view keeps media and suggestions alongside the text.
Missing title: Shows the body text in previews.
Media height: Respects the SHORT/MEDIUM/TALL setting as specified.
GIFs: Animated. Plays in the card.
Media with large text sizes: Maintains media visibility alongside enlarged text and buttons.
Portrait images: Center-crops to fit the card width.
Comparison
| Element | iOS | Android |
|---|---|---|
| Actions | On the card | On the card |
| Replies | Outside/below the card | On the card with actions |
| Multiple actions | "Options" dropdown | Inline buttons |
| Text overflow | ~3 lines, expand shows text only | More visible, expand includes media |
| No title | "One Message" in preview | Shows body text |
| Height param | Ignored | Respected |
| Buttons | Grey, subtle | Full color |
| GIFs | Static | Animated |
| Large text + media | Media cropped | Media preserved |
| Portrait images | Aspect ratio preserved | Center-cropped |
Media safe zones
Recommendations
- Always include a title (avoids "One Message" on iOS)
- Keep titles and descriptions to 3 lines or less
- Use "vertical tall" as the height setting
- Use 1 suggested action per card
- Write reply text that makes sense when detached from the card (iOS shows replies separately)
- Design GIF creative so the first frame works standalone
- Keep media content inside the 16:9 safe zone
- Use clear button text (don't rely on button color)
- Don't rely on the expanded text view (media and CTAs disappear on iOS)
4. Carousel
Two to ten Rich Cards in one message. Each card has media + title + description + per-card suggestions. Also supports message-level suggestions.
iOS experience
Layout: Cards render as a vertical stack with a "1 of N" counter. Subscribers flip through one card at a time.
Per-card actions: Render on each card.
Per-card replies: Render outside the card area. They update dynamically as the subscriber flips through cards, the replies shown correspond to whichever card is currently in view.
Message-level suggestions: Stay constant regardless of which card is in view.
Text: Same 3-line truncation as standalone Rich Cards. Tap-to-expand hides media and suggestions.
Card sizing: Each card sized based on its content. Cards in the same carousel can appear at different heights.
GIFs: Static.
Media with large text: Same cropping behavior as Rich Cards.
Multiple actions per card: Same "Options" dropdown.
Android experience
Layout: Cards render as a horizontal, swipeable row. Subscribers browse side by side and can compare cards.
Per-card actions: Render on each card as inline buttons.
Per-card replies: Also render on each card as inline buttons within the horizontal row.
Message-level suggestions: Display below the carousel.
Text: More text visible before truncation. Expanded view includes media and suggestions.
Card sizing: Uniform sizing using center-cropping for consistency across cards.
GIFs: Animated.
Media with large text: Maintains visibility.
Multiple actions per card: All display as inline buttons.
Comparison
| Element | iOS | Android |
|---|---|---|
| Layout | Vertical stack, "1 of N" | Horizontal swipeable row |
| Per-card actions | On each card | On each card |
| Per-card replies | Outside card, updates per flip | On each card |
| Card sizing | Varies by content | Uniform via center-crop |
| Text overflow | ~3 lines, expand hides media | More visible, expand includes media |
| GIFs | Static | Animated |
| Large text + media | Cropped | Preserved |
Media safe zones
Carousel cards have less vertical space. Use a 3:2 aspect ratio with a 25:9 safe zone for critical content.
Recommendations
- Design each card to stand on its own (iOS shows one at a time, not side by side)
- Use consistent content lengths and image sizes across cards
- Use 1 suggested action per card
- Write per-card replies that make sense in isolation (iOS shows one card's replies at a time)
- Put navigation actions (menu, help) as message-level suggestions, not per-card
- Place the most important card first
- Keep text to 3 lines or less per card
- Keep media inside the 25:9 safe zone
General Platform Differences
These apply across all message types.
Sender branding
| iOS | Android | |
|---|---|---|
| First message | May briefly show Agent ID while fetching brand assets | Shows brand name immediately |
| Privacy policy | Not visible | Visible |
| Agent banner | Not visible | Visible |
| Contact details | First contact per type only | All entries |
| iMessage on Mac | No agent name or description | N/A |
Put your most important contact entry first. iOS shows only the first per type.
Suggestion persistence
| iOS | Android | |
|---|---|---|
| On-card suggestions | Persist after tapping | Persist after tapping |
| Message-level suggestions | Persist after tapping | Disappear after tapping |
Design Checklist
All message types:
- At most 1 suggested action per message or card
- Primary action listed first
- Tested on both iOS and Android before launch
Basic and Enhanced:
- Suggested reply lists kept short (3-5 options)
Rich Card:
- Title included
- Title and description fit within 3 lines
- Height setting is "vertical tall"
- Reply text makes sense when displayed separately from the card
- GIF creative works as a static image
- Media content inside 16:9 safe zone
Carousel:
- Each card makes sense on its own
- Consistent content lengths and image sizes across cards
- Per-card replies make sense shown one at a time
- Navigation actions placed as message-level suggestions
- Most important card placed first
- Media content inside 25:9 safe zone
Sources
- Postscript: Guide to RCS on iOS versus Android (June 2026, iOS 26.2)
- Dotgo: Bridging the RCS iOS-Android Divide (July 2025)
- InfoBip: Android and iOS Troubleshooting
- InfoBip: Platform-Specific Behavior Summary
- AWS: RCS Best Practices