Frameworks
Javascript
JavaScript and TypeScript
Use createPresenceClient() for framework-free apps, web components, Node.js programs, or custom renderers.
terminalbash
bun add @iconical/presencekitOne request
main.tstypescript
import { createPresenceClient } from "@iconical/presencekit";
const client = createPresenceClient();
const result = await client.getPresence("123456789012345678");
document.querySelector("#presence")!.textContent =
`${result.profile.displayName}: ${result.presence?.status ?? "pending"}`;Subscribe in the browser
live-status.tstypescript
const element = document.querySelector("#presence")!;
const stop = client.subscribePresence("123456789012345678", {
onUpdate(result) {
element.textContent = result.presence?.status ?? "Waiting for data";
},
onError() {
element.textContent = "Presence unavailable";
},
}, { transport: "auto" });
window.addEventListener("pagehide", stop, { once: true });Multiple activities
helpers.tstypescript
import { getPlayingActivities, getSpotifyNowPlaying } from "@iconical/presencekit";
const games = getPlayingActivities(result.presence);
const spotify = getSpotifyNowPlaying(result.presence);
console.log(games.map((a) => a.name));
console.log(spotify?.song);The SDK requires no consumer API key. Avoid injecting raw activity fields into innerHTML; use textContent or your framework's safe text rendering.
Was this page helpful?