Skip to content

Steam Rich Presence

Show game status in Steam friends list.

Methods

setRichPresence(key, value)

Set a rich presence key.

javascript
await steam.setRichPresence('status', 'In Battle');
await steam.setRichPresence('level', '42');

clearRichPresence()

Clear all rich presence data.

javascript
await steam.clearRichPresence();

Examples

Basic Status

javascript
async function updatePresence(state) {
  switch (state) {
    case 'menu':
      await steam.setRichPresence('status', 'In Menu');
      break;
    case 'playing':
      await steam.setRichPresence('status', 'Playing');
      break;
    case 'paused':
      await steam.setRichPresence('status', 'Paused');
      break;
  }
}

Detailed Status

javascript
async function updateGamePresence(level, score, mode) {
  await steam.setRichPresence('status', `Playing ${mode}`);
  await steam.setRichPresence('level', `Level ${level}`);
  await steam.setRichPresence('score', `Score: ${score}`);
}

Multiplayer Status

javascript
async function updateMultiplayerPresence(lobbyName, playerCount, maxPlayers) {
  await steam.setRichPresence('status', 'In Multiplayer');
  await steam.setRichPresence('lobby', lobbyName);
  await steam.setRichPresence('players', `${playerCount}/${maxPlayers}`);
}

Clear on Exit

javascript
async function onGameExit() {
  await steam.clearRichPresence();
}

Localization

Use Steamworks localization for rich presence:

  1. Define tokens in Steamworks dashboard
  2. Use token keys in setRichPresence
javascript
// In Steamworks, define:
// #Status_InBattle = "In Battle"
// #Status_InMenu = "In Menu"

await steam.setRichPresence('steam_display', '#Status_InBattle');

Best Practices

  1. Update on state changes - Menu, gameplay, pause
  2. Keep it brief - Status is shown in small space
  3. Clear on exit - Don't leave stale status
  4. Use localization - For international users