---
description: Capacitor plugin to open the native SMS composer prefilled with recipients and a message body on Android and iOS.
title: Capacitor SMS Composer Plugin for Android & iOS - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/sms-composer.png
---

<!doctype html> 

[Skip to content ](#capacitor-sms-composer-plugin) 

[🔐 Introducing the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode. ](/blog/announcing-the-capacitor-vault-plugin/) 

* [ SDKs ](/docs/sdks/)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* SMS Composer [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Type Aliases ](#type-aliases)
* [ Result Status ](#result-status)
* [ Multiple Recipients ](#multiple-recipients)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Type Aliases ](#type-aliases)
* [ Result Status ](#result-status)
* [ Multiple Recipients ](#multiple-recipients)
* [ Changelog ](#changelog)
* [ License ](#license)

# Capacitor SMS Composer Plugin[¶](#capacitor-sms-composer-plugin "Permanent link")

Capacitor plugin to open the native SMS composer prefilled with recipients and a message body.

[ ![Deliver Live Updates to your Capacitor app with Capawesome Cloud](../../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://cloud.capawesome.io/) 

## Features[¶](#features "Permanent link")

* ✉️ **Compose**: Open the native SMS composer prefilled with recipients and a message body.
* ✅ **Capability check**: Check whether the device is able to compose and send SMS messages.
* 🔒 **Privacy-friendly**: The user always reviews and sends the message. The plugin never sends SMS on its own.
* 📦 **CocoaPods & SPM**: Supports CocoaPods and Swift Package Manager for iOS.
* 🔁 **Up-to-date**: Always supports the latest Capacitor version.

Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!

## Newsletter[¶](#newsletter "Permanent link")

Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).

## Compatibility[¶](#compatibility "Permanent link")

| Plugin Version | Capacitor Version | Status         |
| -------------- | ----------------- | -------------- |
| 0.x.x          | \>=8.x.x          | Active support |

## Installation[¶](#installation "Permanent link")

You can use our **AI-Assisted Setup** to install the plugin. Add the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:

`[](#%5F%5Fcodelineno-0-1)npx skills add capawesome-team/skills --skill capacitor-plugins
`

Then use the following prompt:

`` [](#%5F%5Fcodelineno-1-1) Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-sms-composer` plugin in my project.
 ``

If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:

`[](#%5F%5Fcodelineno-2-1)npm install @capawesome/capacitor-sms-composer
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

This plugin is only available on **Android** and **iOS**. On Web, all methods reject as unimplemented.

### Android[¶](#android "Permanent link")

No additional configuration is required. The plugin declares the necessary `<queries>` element for the `smsto` scheme in its `AndroidManifest.xml`, so the SMS capability can be detected on Android 11 (API level 30) and higher.

## Configuration[¶](#configuration "Permanent link")

No configuration required for this plugin.

## Usage[¶](#usage "Permanent link")

`[](#%5F%5Fcodelineno-3-1)import { SmsComposer } from '@capawesome/capacitor-sms-composer';
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)const canComposeSms = async () => {
[](#%5F%5Fcodelineno-3-4)  const { canCompose } = await SmsComposer.canComposeSms();
[](#%5F%5Fcodelineno-3-5)  return canCompose;
[](#%5F%5Fcodelineno-3-6)};
[](#%5F%5Fcodelineno-3-7)
[](#%5F%5Fcodelineno-3-8)const composeSms = async () => {
[](#%5F%5Fcodelineno-3-9)  const { status } = await SmsComposer.composeSms({
[](#%5F%5Fcodelineno-3-10)    recipients: ['+41791234567'],
[](#%5F%5Fcodelineno-3-11)    body: 'Hello from Capacitor!',
[](#%5F%5Fcodelineno-3-12)  });
[](#%5F%5Fcodelineno-3-13)  return status;
[](#%5F%5Fcodelineno-3-14)};
`

## API[¶](#api "Permanent link")

* [canComposeSms()](#cancomposesms)
* [composeSms(...)](#composesms)
* [Interfaces](#interfaces)
* [Type Aliases](#type-aliases)

### canComposeSms()[¶](#cancomposesms "Permanent link")

`[](#%5F%5Fcodelineno-4-1)canComposeSms() => Promise<CanComposeSmsResult>
`

Check whether the device is able to compose and send SMS messages.

On devices without SMS capability (e.g. Wi-Fi-only tablets or iPads), this resolves with `canCompose` set to `false`.

Only available on Android and iOS.

**Returns:** `Promise<[CanComposeSmsResult](#cancomposesmsresult)>`

**Since:** 0.1.0

---

### composeSms(...)[¶](#composesms "Permanent link")

`[](#%5F%5Fcodelineno-5-1)composeSms(options: ComposeSmsOptions) => Promise<ComposeSmsResult>
`

Open the native SMS composer prefilled with the given recipients and body.

The user reviews the message and decides whether to send it. The plugin never sends the message itself.

The call resolves once the composer is dismissed. If the device is not able to compose SMS messages, the call rejects as unavailable.

Only available on Android and iOS.

| Param       | Type                                    |
| ----------- | --------------------------------------- |
| **options** | [ComposeSmsOptions](#composesmsoptions) |

**Returns:** `Promise<[ComposeSmsResult](#composesmsresult)>`

**Since:** 0.1.0

---

### Interfaces[¶](#interfaces "Permanent link")

#### CanComposeSmsResult[¶](#cancomposesmsresult "Permanent link")

| Prop           | Type    | Description                                                  | Since |
| -------------- | ------- | ------------------------------------------------------------ | ----- |
| **canCompose** | boolean | Whether the device is able to compose and send SMS messages. | 0.1.0 |

#### ComposeSmsResult[¶](#composesmsresult "Permanent link")

| Prop       | Type                                  | Description                                                                                                                                                      | Since |
| ---------- | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| **status** | [SmsComposeStatus](#smscomposestatus) | The status of the SMS composer after it was dismissed. On Android, the status is always unknown because the system does not report whether the message was sent. | 0.1.0 |

#### ComposeSmsOptions[¶](#composesmsoptions "Permanent link")

| Prop           | Type       | Description                                                | Since |
| -------------- | ---------- | ---------------------------------------------------------- | ----- |
| **body**       | string     | The message body to prefill in the composer.               | 0.1.0 |
| **recipients** | string\[\] | The recipients (phone numbers) to prefill in the composer. | 0.1.0 |

### Type Aliases[¶](#type-aliases "Permanent link")

#### SmsComposeStatus[¶](#smscomposestatus "Permanent link")

The status of the SMS composer after it was dismissed.

* `sent`: The user sent the message.
* `canceled`: The user canceled the composer without sending the message.
* `unknown`: The result is unknown. This is always the case on Android.

`'canceled' | 'sent' | 'unknown'`

## Result Status[¶](#result-status "Permanent link")

The `composeSms(...)` method resolves with a `status` once the composer is dismissed:

* On **iOS**, the status reflects the actual outcome (`sent`, `canceled`).
* On **Android**, the status is always `unknown` because the system does not report whether the message was sent.

## Multiple Recipients[¶](#multiple-recipients "Permanent link")

Multiple recipients are joined with a semicolon (`;`) in the underlying `smsto:` URI on Android. Some messaging apps expect a comma (`,`) instead, so multi-recipient prefilling may not work reliably across all Android messaging apps.

## Changelog[¶](#changelog "Permanent link")

See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/sms-composer/CHANGELOG.md).

## License[¶](#license "Permanent link")

See [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/sms-composer/LICENSE).

July 7, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/sms-composer/#article", "headline": "Capacitor SMS Composer Plugin for Android & iOS", "name": "Capacitor SMS Composer Plugin for Android & iOS", "description": "Capacitor plugin to open the native SMS composer prefilled with recipients and a message body on Android and iOS.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/sms-composer/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/sms-composer/", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "about": {"@id": "https://capawesome.io/docs/sdks/capacitor/sms-composer/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/sms-composer/#software", "name": "Capacitor SMS Composer Plugin for Android & iOS", "description": "Capacitor plugin to open the native SMS composer prefilled with recipients and a message body on Android and iOS.", "url": "https://capawesome.io/docs/sdks/capacitor/sms-composer/", "programmingLanguage": "TypeScript", "runtimePlatform": "Capacitor", "codeRepository": "https://github.com/capawesome-team", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}}]}
```
