Repository navigation
Share.share copies message and url as a single pasteboard item on iOS - #59653
Draft
janicduplessis wants to merge 1 commit into
Draft
janicduplessis wants to merge 1 commit into
janicduplessis wants to merge 1 commit into
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
When
Share.share({ message, url })(orActionSheetIOS.showShareActionSheetWithOptions) is called with bothmessageandurlon iOS,RCTActionSheetManagerpasses the message and theNSURLtoUIActivityViewControlleras two activity items. Tapping Copy writes them as two separate pasteboard items. A plain-text paste only reads the first one, so the URL is lost. That includes pasting on a Mac through Universal Clipboard.This PR wraps both in
UIActivityItemSourceobjects, but only when bothmessageand a non-data:urlare set:nilfor Copy and the message for every other activity;"<message> <url>"for Copy and theNSURLfor every other activity.Other activities get the same items as before. The share sheet still builds its own link preview, because the URL source's placeholder is the
NSURL. Whensubjectis set, both sources return it from the publicsubjectForActivityType:method. When it isn't set, behavior is the same as today. Message-only, url-only anddata:shares are unchanged.This is the same report as #29425. That issue was closed after the cause was attributed to malformed URLs, but the URL there was valid.
Changelog:
[IOS] [FIXED] - Share.share copies message and url as a single pasteboard item
Test Plan:
RN Tester → APIs → Share → "Share message, URL (iOS) and title (Android)", on an iPhone 18 Pro simulator (iOS 27.0). I tapped Copy and logged
UIPasteboard.generalPasteboardin the completion handler, using a temporary log that isn't in this PR:numberOfItemsxcrun simctl pbpaste<message> https://reactnative.dev/blog/2020/07/17/react-native-principlesShare.shareside by side, and Copy pasted on a Mac through Universal Clipboard included the URL.