1. Drop it on the page
Drag
Native Share onto a mobile page. Out of the box it is a finished share button β nothing to size, nothing to wire up. One per page: with two on the same page, the actions talk to the last one placed.
2. Tell it what to shareFill in any of
share_message,
share_link or
share_file_url on the element. Tapping the button opens the phone's share sheet on it. That is the whole setup β no workflow needed.
You can combine them: a message and a link go out together, and on iOS an image and its caption do too.
3. Make it yoursSet
button_color to your brand colour and the label picks its own colour by contrast, so you cannot make it unreadable. Pick a
button_style β
filled,
tinted,
outline,
plain, or
icon for a round icon-only button.
button_icon on
auto draws the box-and-arrow on iOS and the three dots on Android, which is the glyph each user already recognises.
4. Or use your own buttonSet
display_mode to
hidden β the element becomes invisible and takes no space. Put your own button on the page and run
Element Actions β Native Share β Share. Every field on the action is optional and falls back to the element's, so you can fill in just
message, or nothing at all.
5. Share an image or a filePut a public URL in
file_url. For a Bubble file,
This file's URL works exactly as it comes β the protocol-less URL Bubble gives you is repaired automatically. The file is downloaded to the phone and the sheet opens on it.
Add
file_name with an extension β
"Invoice " + This Invoice's number + ".pdf" β if the URL does not end in a readable one.
6. Send it straight to one appShare To App opens WhatsApp, Telegram, SMS, Email, X, Facebook, Messenger, LinkedIn, Reddit, Pinterest, Threads or Tumblr directly. Set
app, and
to for a phone number or an email address. If the app is not installed the phone opens its website, and if that fails the normal sheet opens β it never does nothing.
7. React to what happenedCreate
When Native Share's shared to run after a completed share, and read
Native Share's shared_to to see which app took it. There is also
dismissed (they closed the sheet),
copied and
share_failed, with the reason in
last_error.
This is what makes a referral reward honest:
shared fires when it went out,
dismissed when it did not.
Tips
- Tick two checkboxes: full_width and copy_if_unavailable. A Bubble checkbox arrives as "no" when unticked, and both are better on.
- Leave button_text_color empty unless you really need it β the label colour is worked out from the button colour, and a pale button gets dark text on its own.
- Referral links: put the text in share_message and the URL in share_link, not both in the message. On iOS that is what makes the receiving app show a preview card.
- Sharing an image on Android? The message is not sent with it β Android's sheet takes a file or text, not both. iOS sends both. Put the words in the file name if they matter.
- Disable your own button while it works: bind its condition to is_sharing, which is yes while a large file downloads.
- A "Copy link" button: point it at Copy To Clipboard with nothing filled in, and use When Native Share's copied to show your confirmation.
- Letting the user choose the app: Share To App with app set to system opens the normal sheet, so the field can come straight from your database.
- One element per page. The actions talk to the last one placed.
- If nothing happens, tick debug_overlay: it shows whether this build has a share sheet, whether it can share files, which action arrived last and which fields came in empty. That last line usually points at the workflow, not the plugin.
TestingTest on a real device through BubbleGo. The browser preview runs React Native for Web, where the native share sheet does not exist β you will see the clipboard fallback or an error there, and that is the preview rather than the plugin. Image and file URLs also have to be publicly reachable, so check that a file behind a privacy rule is one your users can actually fetch.