# Steam Achievement Notifier: turning an unlock into a customisable overlay

> This Electron application watches Steam for achievement events and puts a notification on top of the game, with three notification types, a customiser for sounds and themes, screenshot overlays and a window you can feed to your streaming software, and its V1.9 release replaced polling with Valve's internal Steamworks API.

**SteamAchievementNotifier/SteamAchievementNotifier** — Steam Achievement Notifier shows fully customisable notifications when you unlock any achievement on Steam!

- Repository: https://github.com/SteamAchievementNotifier/SteamAchievementNotifier
- Website: https://github.com/SteamAchievementNotifier/SteamAchievementNotifier
- Stars: 563 · Forks: 41
- Language: TypeScript
- License: not declared
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/steamachievementnotifier-steamachievementnotifier

## An unlock notification, built to look like it belongs

Steam Achievement Notifier shows fully customisable notifications when you unlock any achievement on Steam. The description is plain, and the application is an Electron app written in TypeScript, with the main entry point at dist/app/app.js.

The category of software is worth naming precisely, because it determines what to expect. This is a desktop utility that watches a game client for events and draws an overlay. It is not a mod, it does not touch the game's memory, and it does not alter gameplay. It is a separate process that observes Steam and reacts.

That has a visible consequence, and the readme documents it in a caution block. Fullscreen display modes are not supported. Games using DirectX 9, 10 or 11 require Borderless or Borderless Windowed mode to be enabled through the in-game display settings for notifications to show above the game window. The exception is written out too: if a game supports and runs using DirectX 12, notifications will usually show above the game window when Fullscreen is enabled.

So the practical rule is that most older games need their display mode changed, and the games most people play today work as they are. It is a real limitation, stated clearly, and it is the kind that decides whether the overlay lands in the middle of your screen or behind the game.

The topics attached to the repository also place it: steam, steamworks, steam-api, notifications, toast notifications, electron, windows and windows10, alongside achievement and playstation and xbox.

## What V1.9 changed: Steamworks tracking with no API key

The V1.9 release is described as the most substantial update yet, and the change is at the core of how events are detected.

The application uses Valve's internal Steamworks API to track achievement progress in realtime, and it displays all the details of the achievement within the notification. The implementation comes from a custom fork of steamworks.js, and the practical consequence is stated in the feature list: the application no longer requires an API Key or a Steam64 ID. You run it and start unlocking achievements, with no configuration required.

That is a meaningful change in kind, not in degree. The previous model of achievement notifiers was to poll a public API keyed by the player's Steam64 ID, which meant asking the user for an identifier and storing it, and which could only report that something unlocked. Using the internal API means the running client reports the event itself, so the app can also show progress, and the user configuration drops to nothing.

The second half of the V1.9 work is in the interface. The in-app user interface had a complete redesign with updated elements, menus and options, the app window is now resizable, and the documentation tells you to minimise the app window to the system tray once you have finished customising, so it keeps running in the background without occupying screen space.

## Three notification types and the customiser

The notification types are the structure the customisation hangs off, and there are three of them.

Main is for regular achievements. Rare is for achievements with a rarity below 10 percent. And 100% fires when you have unlocked all the achievements in any game.

Each type can be personalised through the Steam Achievement Customiser menu, which you open with the Customise button. The options listed are extensive: you choose a Notification Preset, each with its own designs and animations, and then you design further, changing the background, the shape, the colours, the size, the display time, the icons, the position and the font, among other things. The 100% type is fully customisable with the same options as Main and Rare, plus options of its own.

That sounds like decoration, and it is, but the reason it exists is worth stating. A default toast notification is a piece of the operating system, drawn by the operating system, in the operating system's style. What this application offers is a notification that is part of the user's own setup, and the same application can therefore look consistent across games that would each otherwise draw their own toast.

The presets exist because most people want a starting point rather than a blank canvas, and the fine tuning exists because the presets are a starting point rather than an answer.

## Sounds, themes and the media options, with two Linux dependencies

The customisation surface extends beyond the visual style.

Custom notification sounds can be loaded for each notification type, with a Sound Mode of File, which loads a single audio file, or Randomised, which selects a folder containing multiple files which are then played at random. You can adjust the in-app volume and preview the sound, and all in-app sounds can be muted through a new Audio Source settings option.

Themes are new to V1.9. Every customisation made in the customiser can be saved as a custom Theme, reloaded at any time from a new Theme Select menu on the home screen. You name it, give it an icon or load your own with the plus icon in the Save Theme dialog, and switch between saved themes.

The additional media options are the most interesting for anyone who records their gameplay. The application can automatically take a Steam screenshot when any achievement is unlocked. The Screenshot with Notification Overlay option takes a screenshot of your chosen monitor and overlays an image of the achievement notification, including all the customisations. And the Notification Image option, also new in V1.9, generates an image of the notification itself, which can be shared directly or used as an overlay elsewhere.

Two Linux dependencies are called out in warnings, and they are the kind of detail that saves an afternoon. To enable Take Steam Screenshot on Linux, xdotool must be installed. To enable HDR Mode on Linux, libxcb1, libxrandr2 and libdbus-1-3 must be installed.

## Two windows built for streaming software

The features that are about streaming build on the earlier Duplicate Notification to Window option, and they are the reason the application is more than a personal overlay.

Stream Notifications creates a background window that duplicates all on-screen notifications, including all the customisations, and that window is targetable as a source within streaming software such as OBS, Streamlabs or Twitch Studio. Setting that window as your source puts the achievement notifications directly into the stream, rather than on top of the game you are capturing.

The Achievement Stats Overlay is a separate window with a different job. It displays a configurable list of locked achievements and a completion progress bar for the current game. You can configure the order of the list, limit the number of achievements displayed, and set the opacity of the window, and any achievement that gets unlocked is moved to the top of the list, regardless of the display order you configured.

The design intent is clear from the two features together. One window is for the moment, the achievement that just unlocked, and the other is for the session, the list of what is left. Both are separate windows rather than part of the main application window, which is what makes them usable as capture sources.

## The build: Electron, electron-builder and a separate beta configuration

The build scripts in the package manifest show how the application is produced, and the shape is the standard Electron one.

```json
    "scripts": {
        "dev": "npx tsc && electron ./dist/app/app.js --ozone-platform=x11",
        "win": "npx tsc --build --clean && npx tsc && electron-builder --win=nsis --x64",
        "win:beta": "npx tsc --build --clean && npx tsc && electron-builder --win=nsis --x64 --config beta.json",
        "linux": "npx tsc --build --clean && npx tsc && electron-builder --linux",
        "linux:beta": "npx tsc --build --clean && npx tsc && electron-builder --linux --config beta.json",
        "publish": "npx tsc --build --clean && npx tsc && electron-builder -p always",
        "postinstall": "patch-package"
    },
```

Every build target compiles the TypeScript first and then runs electron-builder, and the Windows target produces an NSIS installer for x64. The beta variants differ only by pointing at a separate beta.json configuration, which is how a pre-release channel is kept apart from the stable artefacts without duplicating the build logic. The publish target builds for every platform and the postinstall hook runs patch-package, so the patches directory is applied to dependencies at install time.

The runtime dependencies describe the feature set. electron-updater is the self update mechanism, electron-store holds the configuration, electron-log the logging, adm-zip and jpeg-js the archive and image handling, icojs the icon generation, and the RetroAchievements API client is present, which is how the rarer achievements are cross referenced. The dev script passes the ozone-platform x11 flag to Electron, which is what makes the Linux build work under Wayland as well as X11.

## Where it is the wrong tool, and the licence gap

Four limits, and the first is about the environment rather than the software.

It is a Steam application, and there is nothing here for other platforms. The topics list playstation and xbox, which tells you the scope of interest, but the mechanism is Valve's internal Steamworks API, and the Windows NSIS installer and the Linux package are the only two builds the scripts produce. Anyone hoping for a console notifier is looking at the wrong repository.

The second is the fullscreen caveat again, and it deserves repeating because it is the most common reason a user concludes the application does not work. The overlay is an operating system window, and a game in exclusive fullscreen owns the display. The fix is to set the game to borderless windowed, which is a per-game setting the user has to change.

The third is that it is a background process by design. The documentation tells you to minimise the application to the system tray after customising, which means the application stays running, watching for events, for as long as you play. That is the point of the software, and it is also a real cost in memory and in an always-on background process.

The fourth is the licence position, and it is the one to raise before you redistribute anything. The repository records the licence as unknown, and there is no licence file in the top level listing, which contains the source, the patches, the dependencies, the sounds, the fonts and the documentation but no LICENSE. The project is presented as free software with a donation link and a Discord server, so the intent is clear, but the terms are not written down in the repository, and a company shipping a modified build needs them to be.

## Conclusion

Steam Achievement Notifier is the right tool for a Steam player who wants an unlock notification that looks like part of their setup rather than the default toast, and for a streamer who wants achievements to appear inside the broadcast instead of on top of the game. It is the wrong tool for anything that is not Steam, and it is the wrong tool for a user who will not install a background application that watches their client. Before adopting, check the directX 9, 10 and 11 caveat, because a fullscreen game will hide the notification, install xdotool on Linux if you want the screenshot feature, and note that the repository publishes no licence file even though the project is distributed as free software.

## FAQ

### Does Steam Achievement Notifier need an API key or a Steam64 ID?

No. The V1.9 release uses Valve's internal Steamworks API, provided by a custom fork of steamworks.js, to track achievement progress in realtime, so the application no longer requires an API Key or a Steam64 ID and needs no configuration before you start unlocking achievements.

### Why do notifications not appear over a fullscreen game?

Fullscreen display modes are not supported, so games using DirectX 9, 10 or 11 need Borderless or Borderless Windowed mode enabled in their display settings. Games that support and run using DirectX 12 will usually show notifications above the game window with Fullscreen enabled.

### What can I customise in the Steam Achievement Notifier?

Each of the three notification types, Main, Rare for achievements below 10 percent rarity and 100% for completing a game, can be personalised through the Customiser: a notification preset, the background, shape, colours, size, display time, icons, position and font, plus custom sounds with a File or Randomised sound mode, and saved themes that can be reloaded from a Theme Select menu.

### Can Steam Achievement Notifier show achievements inside a stream?

Yes. Stream Notifications creates a background window that duplicates all on-screen notifications, including the customisations, and that window can be targeted as a source in streaming software such as OBS, Streamlabs or Twitch Studio. A separate Achievement Stats Overlay window shows a configurable list of locked achievements and a completion progress bar.

## Sources

- [Issues](https://github.com/SteamAchievementNotifier/SteamAchievementNotifier/issues)
- [Project website](https://github.com/SteamAchievementNotifier/SteamAchievementNotifier)
- [README](https://github.com/SteamAchievementNotifier/SteamAchievementNotifier/blob/master/README.md)
- [Releases](https://github.com/SteamAchievementNotifier/SteamAchievementNotifier/releases)
- [SteamAchievementNotifier/SteamAchievementNotifier on GitHub](https://github.com/SteamAchievementNotifier/SteamAchievementNotifier)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/steamachievementnotifier-steamachievementnotifier
