Unofficial. Catalyst is a community project and is not affiliated with, endorsed by, or supported by Boot.dev. It reads only your own Boot.dev session data, locally in your browser.
A Manifest V3 Chrome extension that augments Boot.dev with a few quality-of-life additions:
- All-time XP leaderboard - adds a global all-time XP section to the leaderboard page.
- Cumulative profile XP - adds lifetime XP and current-level XP progress to public user profile pages.
- Boss-event tracker - tracks current, event-high, and all-time-high Boots Aura, boss damage, and chest progress.
- Next Lesson nav button - adds a top-nav shortcut to the current next lesson when the extension can infer it.
- Personal leaderboards - lets you save Boot.dev handles and compare them in custom daily XP, all-time XP, and all-time karma boards.
- Download the latest
catalyst-v<version>.zipfrom thereleases/folder. - Unzip it.
- In Chrome, open
chrome://extensions, enable Developer mode, click Load unpacked, and select the unzippedcatalyst-v<version>folder. - Visit
https://www.boot.dev.
catalyst/
bootdev-extension/ Chrome "Load unpacked" target
manifest.json
popup.html Settings popup (toolbar icon)
options.html Settings options page (adds per-board comparisons)
popup.js Shared settings UI logic
popup.css Shared settings UI styles
icons/ Extension toolbar icons
assets/frames/ Bundled avatar role frames (0-9.png)
src/
utils.js Shared helpers (loaded first)
settings.js Feature on/off model (loaded second)
leaderboard.js All-time and personal leaderboard feature
profile.js Cumulative XP on public profile pages
boss.js Boss-event tracker
nextLesson.js Next Lesson nav link and Alt+N shortcut
content.js postMessage listener and URL router (loaded last)
injected.js Page-context fetch/XHR interceptor
styles.css
docs/
branding/ Logo assets referenced by this README
scripts/
package-extension.sh Builds releases/catalyst-v<version>.zip
CLAUDE.md Agent guidance and development conventions
CHANGELOG.md
README.md
Only bootdev-extension/ is needed by Chrome.
Chrome loads unpacked extension folders, not zip files directly. Unzip first, then load the folder.
- Unzip
catalyst-v<version>.zip.- macOS/Windows: double-click the zip file or use the built-in Extract option.
- Terminal:
unzip catalyst-v<version>.zip- Open Chrome and go to:
chrome://extensions
- Turn on Developer mode.
- Click Load unpacked.
- Select the unzipped
catalyst-v<version>folder (e.g.catalyst-v0.5.1). - Open or refresh
https://www.boot.dev.
Catalyst is installed manually, so it does not update itself. The installed version is shown at the bottom of the settings popup and options page; compare it against the latest release on the releases page. You can also turn on Automatic update checks in the options page (off by default) to be notified in-app when a newer release is available — this makes one request a day to GitHub and nothing else.
To update:
- Remove or replace the old unzipped
catalyst-v<old-version>folder. - Unzip the new
catalyst-v<version>.zip. - Go to
chrome://extensions. - Click the reload button on Catalyst for Boot.dev.
- Refresh any open Boot.dev tabs.
The extension runs automatically on www.boot.dev. No extra sign-in flow is required — it reads JSON responses that the Boot.dev page fetches using the existing Boot.dev session.
- Every feature below can be turned on or off. Click the Catalyst toolbar icon to open the settings popup. Chrome hides extension icons until they're pinned, so pin Catalyst from the puzzle-piece menu if you don't see it; a one-time prompt points this out on first run.
- The popup toggles the seven features: Boss event tracker (off by default), Boss event reminders, Top All-Time Learners Leaderboard, Personal Leaderboards, profile cumulative XP, the Next Lesson shortcut, and leaderboard comparisons (XP/karma).
- The options page (toolbar icon → right-click → Options, or the link in the popup) adds per-board control over the XP/karma comparisons: a master toggle plus a checkbox for each of the six boards, so you can show comparisons on just the boards you want.
- Settings sync across your devices (
chrome.storage.sync) and apply instantly — no page reload. Turning a feature off also stops its background work, so it places no load on Boot.dev.
- A Next Lesson link is added to the top nav on all Boot.dev pages once the extension learns your current lesson from
/v1/dashboard_content. The dashboard Continue Learning button is used as a same-page fallback. - Press
Alt+Nfrom any Boot.dev page to open the Next Lesson link directly. The shortcut is ignored while typing in inputs or editors. - Lesson progress responses trigger a delayed dashboard refresh so the link updates automatically after you complete a lesson.
- On
https://www.boot.dev/leaderboard, a Top All-Time Learners section is added below the native Top Daily Learners section, sourced from/v1/leaderboard_xp/alltime. - Entries use role-tier avatar frames and highlight your own row. The latest response is cached so repeat visits render faster while fresh data loads.
- Also on the leaderboard page, a Personal Leaderboards section lets you track specific Boot.dev handles across three boards: daily XP, all-time XP, and karma. Handles are stored in
chrome.storage.local. - On any public profile page (
https://www.boot.dev/u/<username>), an Add to Personal Leaderboards button lets you save that user directly. - Top All-Time Learners uses public profile XP. Top Community Members uses public stats karma. Both are exact.
- Personal Top Daily Learners is a best-effort estimate for users other than yourself, because Boot.dev's daily board is a rolling last-24-hours window and there is no public API for another user's daily XP unless they are on a daily leaderboard (global top-25, or your league's). Each value is labeled with how it was obtained (the label sits to the left of the value), in decreasing accuracy:
- Plain value — exact: the user is on the live global or league daily leaderboard right now, so Catalyst shows the same number Boot.dev does.
past Nhrnote — measured: the difference between Catalyst's own oldest and newest total-XP observations of that user within the last 24 hours. Accurate for what it saw, but blind to XP earned before the window started. Seeing a user on a daily board even once seeds a full 24h window (the board response reveals their total from exactly 24h ago), so these get good fast.est.note — estimated from the user's public activity heatmap: completions today x an average XP per lesson (ESTIMATED_XP_PER_LESSON, currently a placeholder of 115 — being calibrated against real base-XP data), plus the daily first-clear bonus and streak multiplier. Resubmitted lessons count as activity but grant no XP, so this can overestimate. The heatmap buckets by calendar day, so activity from late yesterday that is still inside the rolling 24h window is not counted.–— unavailable: Catalyst does not have enough data to show a value yet. Values improve the more you (and the Boot.dev page itself) load data Catalyst can observe; hover any value for an explanation.
- All observations stay on your device (see Privacy); Catalyst never reports anything anywhere.
- Invalid, empty, duplicate, or nonexistent handles are rejected before being saved. If Boot.dev returns an auth error, Catalyst retries once and then asks you to refresh the page.
- Every leaderboard entry other than your own shows a comparison — how far ahead (green) or behind (red) you are in the same unit as that board's value.
- Comparisons appear on all extension panels (Top All-Time Learners and all three Personal Leaderboards boards) and on all four native Boot.dev boards: League Top Daily Learners, League Top League Learners, Global Top Daily Learners, and Global Top Community Members. Recent Archmages is left untouched.
- Your comparison value is read from the same API response that feeds each board, with a fallback to your saved personal record when absent.
- Comparisons are toggleable per board from the options page (see Settings), with a master switch in the popup to hide them all at once.
- The boss tracker is off by default so nothing floats over the page until you ask for it. Turn it on from the settings popup — or just wait: when a boss event is live and the tracker is hidden, Catalyst shows a small reminder toast with a Show Tracker button (turns the tracker on) and a Don't remind me for this event button (silences reminders for that event only). The reminder appears at most once a day per event, and the Boss event reminders toggle turns reminders off entirely.
- While the tracker is off, Catalyst makes no boss-event requests of its own — event detection piggybacks on the responses the Boot.dev page already fetches. The last tracked event's stats are kept, so re-enabling the tracker after an event still shows them until newer event data arrives.
- Once enabled, the tracker appears on Boot.dev pages when boss-event data has been loaded. It tracks current Boots Aura bonus %, event-high %, all-time-high %, boss damage dealt, XP to the next chest, and XP to defeat the boss.
- Drag the tracker header to reposition it anywhere on screen. The position persists across pages.
- Use the − / + button to minimize or expand the tracker. The minimized view still shows the current aura percentage.
- Use the × button to close the tracker — it switches the Boss event tracker setting off in one click (turn it back on anytime from the popup). Closing also mutes reminder toasts for the current event.
- Use the gear button to open the high settings panel. You can manually edit the event high and all-time high percentages — useful if you missed a high while the extension wasn't watching. Saving an event high above the all-time high also raises the all-time high.
- The settings panel also includes a Refresh button and a Reset button. Reset clears the current event stats while keeping the all-time high.
- Boss-event data refreshes in the background roughly every 2 minutes, and pauses while the tab is hidden. Navigating within Boot.dev resets that timer and triggers a fresh fetch immediately.
- On public profile pages (
https://www.boot.dev/u/<username>), Catalyst adds Total XP, current-level XP progress, and XP remaining to the next level, displayed below the native level line in the profile header.
- If the extension does not appear, confirm that Chrome loaded the unzipped
bootdev-extensionfolder, not the zip file. - If changes do not show up after an update, click reload on the extension in
chrome://extensions, then refresh Boot.dev. - If a feature says a user is unavailable, try refreshing the leaderboard page. Invalid usernames are rejected and are not saved.
- Some console messages are normal page or browser noise, such as blocked ad/analytics requests or Boot.dev hydration warnings.
- If the extension was reloaded while Boot.dev was already open, refresh the Boot.dev tab to make sure the newest content script is active.
Boot.dev is a Nuxt/Vue single-page app with rebuilt CSS class names, so the extension reads its data from intercepted API responses rather than scraping the DOM (DOM scraping is a last resort, used only for the one value Boot.dev exposes nowhere else — the platform-wide student count). The main flow:
page fetch/XHR -> injected.js clone -> window.postMessage -> content.js router -> UI/storage
injected.js runs in the page context and wraps fetch plus XMLHttpRequest. It clones JSON responses from api.boot.dev and relays them to content.js. content.js runs as the content script, routes each response by URL, injects UI, stores boss-event state in chrome.storage.local, and requests route-specific refreshes through the page-context script when needed.
For Next Lesson, /v1/dashboard_content is treated as the authoritative source because its CurrentLessonUUID matches the dashboard Continue Learning target. Lesson-page APIs such as /v1/users/lessons/{lessonId} and /v1/course_progress_by_lesson/{lessonId} are used only as signals to refresh dashboard content.
Catalyst is built to keep your data on your device:
- It reads only your own Boot.dev session data. The extension observes the JSON responses that the Boot.dev page already fetches with your existing session (leaderboards, public profiles, boss progress, dashboard content) and, on the leaderboard page, requests a few of those same public endpoints itself. It never asks for or handles your password, and your auth token is never stored, logged, or copied out of the page.
- It stores only settings and small caches locally. Feature on/off flags live in
chrome.storage.sync(so they roam across your Chrome profile) as plain booleans — no personal data. Small caches (boss state, saved personal-leaderboard handles, your current handle, the next-lesson link) live inchrome.storage.localon your machine. - It transmits nothing off-device — with one opt-in exception: if you enable Automatic update checks, it makes one request a day to GitHub's public API to compare version numbers. That request contains no personal data. It is off by default.
- Permissions are minimal:
storage, and host access tohttps://www.boot.dev/*only. Catalyst adds no analytics and no tracking.
- Catalyst's own source code is released under the MIT License © Aaron Fleming.
- Some Boot.dev visual assets are bundled with permission and are not covered by the MIT License. See ATTRIBUTION.md for details.
- "Boot.dev" is a trademark of its owner. Catalyst is an unofficial, unaffiliated project (see the note at the top of this README).
Useful checks from the loadable extension directory:
cd bootdev-extension
node --check src/utils.js
node --check src/leaderboard.js
node --check src/profile.js
node --check src/boss.js
node --check src/nextLesson.js
node --check src/injected.js
node --check src/content.js
node -e "JSON.parse(require('fs').readFileSync('manifest.json', 'utf8')); console.log('manifest.json ok')"To build a release zip, run bash scripts/package-extension.sh from the repo root. See CLAUDE.md for architecture details and agent guidance.
This project uses semantic versioning:
MAJOR: breaking changes or major rewrites.MINOR: backwards-compatible features.PATCH: bug fixes, graceful handling, docs, packaging, and polish.
See CHANGELOG.md for full version history.
