Docs / Guides

Stable

Add the Continue with Atmosphere button

Use the browser SDK to render a consistent button, generate state, and open the hosted picker.

The default button includes the Atmosphere icon and accessible label.Redirect mode is the reliable default; popup mode is optional.The SDK stores state in session storage as a convenience, but your server still verifies the callback.

Install

Use the static browser SDK

Redirect button
<script src="https://login.atmosphereaccount.com/atmosphere-login.js" defer></script>

<button
  data-atmosphere-login
  data-client-id="https://app.example.com/oauth/client-metadata.json"
  data-return-uri="https://app.example.com/auth/atmosphere/selected"
  data-scope="atproto"
  data-app-name="Example App"
  data-app-homepage="https://app.example.com"
></button>
AttributeRequiredPurpose
data-atmosphere-loginYesMarks the button for SDK enhancement.
data-client-idYesAudience for the selection token.
data-return-uriYesCallback that receives the selection token.
data-scopeNoOptional picker context. Your app OAuth still owns scopes.
data-modeNoredirect by default, or popup.
data-app-nameNoLocal accessibility fallback; registered metadata wins in picker identity.

Build the URL yourself

Manual launch
const { url, state } = AtmosphereLogin.buildUrl({
  clientId: "https://app.example.com/oauth/client-metadata.json",
  returnUri: "https://app.example.com/auth/atmosphere/selected",
  scope: "atproto",
});

sessionStorage.setItem("atmosphere_state", state);
location.href = url;
On this page

Next steps

Keep building