A calmer, faster Microsoft Teams desktop app with a focused custom UI.
Better Teams is an Electron desktop client for people who want Teams chat without the weight of the full Teams interface. It reads the local macOS Teams 2 session, renders conversations in a lean React UI, and keeps the app shaped around chat, people, presence, and fast switching.
This project is independent and is not affiliated with, endorsed by, or supported by Microsoft.
Better Teams is currently macOS-first and expects Microsoft Teams 2 to be installed and signed in on the same machine. Token extraction, presence cache reads, and packaged-app validation are built around that environment.
- Focused chat workspace with fast conversation switching.
- Local account discovery from the signed-in Teams 2 profile.
- Rich message rendering for links, mentions, reactions, images, and grouped messages.
- Presence and profile cards from Teams data already available on the machine.
- File-backed image caching through a constrained Electron asset protocol.
- Tray behavior for a desktop-native app loop.
- macOS.
- Microsoft Teams 2 installed and signed in.
- Bun 1.1 or newer.
- Xcode command line tools for native Electron dependencies.
Install dependencies:
bun installStart the app:
bun run devRun the normal verification stack:
bun run verifyUseful targeted commands:
bun run typecheck
bun run check
bun run test
bun run test:coverage
bun run package
bun run test:e2eThe packaged smoke test expects out/ to exist, so run bun run package before bun run test:e2e.
Local macOS packaging:
bun run makeTagged releases are handled by GitHub Actions. Push a v* tag, let the release workflow build the DMG/ZIP assets, and publish the generated draft release after checking the artifacts.
Better Teams touches local Teams session data. Do not paste tokens, cookie database contents, screenshots with private chat data, or workspace-specific credentials into public issues.
Report security problems privately through GitHub Security Advisories. See SECURITY.md.
Keep changes tight and behavior-backed. Use Bun or PNPM, not npm. Before opening a PR, run:
bun run verifySee CONTRIBUTING.md for the project workflow.
MIT. See LICENSE.