StreamFusion is a unified, cross-platform desktop application designed to bring the best of Twitch and Kick live streaming into a single, cohesive interface. Built with modern web technologies and packaged via Electron, StreamFusion offers a lightweight, meaningful, and feature-rich viewing experience.
- Unified Dashboard: seamlessly browse and watch streams from both twitch.tv and kick.com in one place.
- Custom Chat Integration: Interact with chats from both platforms directly within the app.
- Enhanced Player: Features an advanced video player with HLS support, offering low latency and high quality.
- Auto-Retry Mechanism: Robust handling of stream interruptions with automatic retries for continuous playback.
- Ad-Block Capabilities: Built-in mechanisms to provide a cleaner viewing experience (Twitch only).
- Cross-Platform: Available for Windows, macOS (Intel & Apple Silicon), and Linux (AppImage).
- Performance Focused: optimized for low resource usage compared to running multiple browser tabs.
StreamFusion uses one root npm workspace and lockfile:
- Core Framework: Electron & React
- Build Tooling: Vite & Electron-Vite
- Language: TypeScript
- Styling: Tailwind CSS
- State Management: Zustand
- Data Fetching: TanStack Query
- Routing: TanStack Router
- Database: Better-SQLite3 (for local data persistence)
- APIs: Twitch (tmi.js), Kick (Pusher-js), and typed Electron IPC through the preload bridge.
This project is organized as a monorepo:
StreamFusion/
├── apps/
│ ├── desktop/
│ └── worker/
├── packages/
│ └── core/
├── package-lock.json
└── package.jsonEnsure you have the following installed:
- Node.js (v22 or later)
- npm 11.19.0
- Git
-
Clone the repository:
git clone https://github.com/TheDarkSkyXD/StreamFusion.git cd StreamFusion -
Install dependencies:
npm install --global npm@11.19.0 npm run install:dependencies
The install command uses the root workspace lockfile. It installs with lifecycle scripts disabled, checks the seven-day release-age policy and registry signatures, then runs only the version-pinned scripts in
allowScripts. Usenpm install <package>for the root. Usenpm install --workspace streamfusion <package>for the desktop app,npm install --workspace @streamfusion/mobile <package>for the Android app, andnpm install --workspace streamfusion-worker <package>for the Worker. Mobile dependencies and tooling belong toapps/mobile. Shared-core tooling belongs to the@streamfusion/coreworkspace underpackages/core. See the npm security research for the policy and its limits.
To choose Electron, Browser, Mobile, or an E2E Preview session:
npm startRun npm run desktop to start Electron without the picker. Run npm run mobile to
build, install, and start the Android development client on a connected device or
emulator. Mobile source, Expo configuration, generated Android files, tests, assets,
and dependency declarations stay under apps/mobile.
Choose 4) E2E Preview to build and run the compiled Electron artifact in an isolated
verification session. It is opt-in. Normal development proof remains the default. See
the Electron E2E guide for controller commands and
evidence rules.
Contributions are welcome! Please feel free to check out the issues page if you want to contribute.
- Fork the repository.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
The desktop app uses ESLint for linting and Prettier for formatting.
- Check for errors:
npm run lint - Auto-fix errors:
npm --prefix apps/desktop run lint:fix - Format code:
npm --prefix apps/desktop run format - Check formatting:
npm --prefix apps/desktop run format:check
Distributed under the License. See LICENSE for more information.
Project Link: https://github.com/TheDarkSkyXD/StreamFusion