Back to Content

Web Share API

files/en-us/web/api/web_share_api/index.md

latest3.2 KB
Original Source

{{DefaultAPISidebar("Web Share API")}}{{securecontext_header}}

The Web Share API provides a mechanism for sharing text, links, files, and other content to an arbitrary share target selected by the user.

[!NOTE] This API is not available in Web Workers (not exposed via {{domxref("WorkerNavigator")}}).

[!NOTE] This API should not be confused with the Web Share Target API, which allows a website to specify itself as a share target.

Concepts and usage

The Web Share API allows a site to share text, links, files, and other content to user-selected share targets, utilizing the sharing mechanisms of the underlying operating system. These share targets typically include the system clipboard, email, contacts or messaging applications, and Bluetooth or Wi-Fi channels.

The API has just two methods. The {{domxref("navigator.canShare()")}} method may be used to first validate whether some data is "shareable", prior to passing it to {{domxref("navigator.share()")}} for sending.

The {{domxref("navigator.share()")}} method invokes the native sharing mechanism of the underlying operating system and passes the specified data. It requires {{Glossary("transient activation")}}, and hence must be triggered off a UI event like a button click. Further, the method must specify valid data that is supported for sharing by the native implementation.

The Web Share API is gated by the web-share Permissions Policy. If the policy is supported but has not been granted, both methods will indicate that the data is not shareable.

Interfaces

Extensions to other interfaces

  • {{domxref("navigator.canShare()")}}
    • : Returns a boolean indicating whether the specified data is shareable.
  • {{domxref("navigator.share()")}}
    • : Returns a {{jsxref("Promise")}} that resolves if the passed data was successfully sent to a share target. This method must be called on a button click or other user activation (requires {{Glossary("transient activation")}}).

Example

The code below shows how you can share a link using {{domxref("navigator.share()")}}, triggered off a button click.

js
const shareData = {
  title: "MDN",
  text: "Learn web development on MDN!",
  url: "https://developer.mozilla.org",
};

const btn = document.querySelector("button");
const resultPara = document.querySelector(".result");

// Share must be triggered by "user activation"
btn.addEventListener("click", async () => {
  try {
    await navigator.share(shareData);
    resultPara.textContent = "MDN shared successfully";
  } catch (err) {
    resultPara.textContent = `Error: ${err}`;
  }
});

The above example is taken from our Web share test (see the source code). You can also see this as a live example in {{domxref("navigator.share()")}}.

Specifications

{{Specifications}}

Browser compatibility

{{Compat}}

See also