Skip to main content
The Share API allows you to share text content and URLs using the native share dialog on both iOS and Android.

Methods

share()

static share(
  content: ShareContent,
  options?: ShareOptions
): Promise<ShareAction>
Opens a dialog to share text content. Content Parameter: The content object must contain at least one of url or message:
  • url (string, required on iOS): A URL to share
  • message (string, required on Android): A message to share (often includes a URL)
  • title (string, Android only): Title of the message
Options Parameter:
  • iOS:
    • subject (string): Subject to share via email
    • excludedActivityTypes (string[]): Activities to exclude from the share sheet
    • tintColor (ColorValue): Tint color of the share sheet
    • anchor (number): iPad only - anchor point for the popover
  • Android:
    • dialogTitle (string): Title of the share dialog
Returns: A Promise that resolves to an object with:
  • action (string): Either Share.sharedAction or Share.dismissedAction (iOS only)
  • activityType (string | null): The activity type that was used to share (iOS only)
Example:
import { Share } from 'react-native';

const shareContent = async () => {
  try {
    const result = await Share.share({
      message: 'Check out this awesome app!',
      url: 'https://example.com',
      title: 'Amazing App'
    });

    if (result.action === Share.sharedAction) {
      if (result.activityType) {
        console.log('Shared with activity type:', result.activityType);
      } else {
        console.log('Content was shared');
      }
    } else if (result.action === Share.dismissedAction) {
      console.log('Share dialog was dismissed');
    }
  } catch (error) {
    console.error('Error sharing:', error.message);
  }
};
iOS Example with Options:
import { Share } from 'react-native';

const shareWithOptions = async () => {
  try {
    await Share.share(
      {
        message: 'Great content to share',
        url: 'https://example.com'
      },
      {
        subject: 'Email Subject',
        excludedActivityTypes: [
          'com.apple.UIKit.activity.PostToFacebook'
        ],
        tintColor: '#0000ff'
      }
    );
  } catch (error) {
    console.error(error);
  }
};
Android Example:
import { Share } from 'react-native';

const shareOnAndroid = async () => {
  try {
    await Share.share(
      {
        message: 'Check this out: https://example.com',
        title: 'Awesome Content'
      },
      {
        dialogTitle: 'Share this content'
      }
    );
  } catch (error) {
    console.error(error);
  }
};

Constants

Share.sharedAction

The content was successfully shared.
if (result.action === Share.sharedAction) {
  // User shared the content
}

Share.dismissedAction

iOS only - The share dialog was dismissed without sharing.
if (result.action === Share.dismissedAction) {
  // User dismissed the share dialog
}

Platform Behavior

iOS

  • Returns a Promise that resolves with action and activityType
  • If dismissed, the Promise still resolves with action being Share.dismissedAction
  • At least one of url or message is required
  • The subject option is used for email sharing

Android

  • Returns a Promise that always resolves with action being Share.sharedAction
  • activityType is always null
  • The message field is required and often includes the URL
  • Uses Android’s native share intent

Type Definitions

type ShareContent = {
  title?: string;
  url?: string;
  message: string;
} | {
  title?: string;
  url: string;
  message?: string;
}

type ShareOptions = {
  dialogTitle?: string;        // Android
  excludedActivityTypes?: string[];  // iOS
  tintColor?: ColorValue;      // iOS
  subject?: string;            // iOS
  anchor?: number;             // iOS (iPad)
}

type ShareAction = {
  action: 'sharedAction' | 'dismissedAction';
  activityType?: string | null;
}

Build docs developers (and LLMs) love