A lightweight, cross-platform Electron desktop app for discovering, launching, and managing Unreal Engine installations and projects โ no Epic Games Launcher required.
Quick Links:
Unreal Launcher is a full replacement for the Epic Games Launcher for day-to-day Unreal Engine development. It auto-scans your drives for installed engines and .uproject files, lets you launch them with one click, browses your Fab marketplace assets, and stays completely out of your way. No bloat, no login, no waiting.
Supports Windows, macOS, and Linux with native performance optimizations and platform-specific features.
Tech Stack: TypeScript ยท React 19 ยท Electron 39 ยท Vite 7 ยท Tailwind CSS 4 ยท Zustand ยท Framer Motion ยท Rust (napi-rs)
- Auto-Scan Engines โ Discovers UE4 & UE5 installations across common paths
- Windows Registry Discovery โ Reads registry via
reg.exeto find Epic-installed engines automatically - Manual Engine Add โ Browse and validate any custom engine folder
- Engine Alias โ Set custom nicknames for engine instances to tell duplicates apart
- One-Click Launch โ Start any engine version instantly
- Background Size Calculation โ Folder size computed without blocking the UI
- Marketplace Plugin Browser โ Lists all installed marketplace plugins per engine
- Engine Deletion โ Remove engines from the list (files remain untouched)
- Auto-Scan Projects โ Recursively finds all
.uprojectfiles across your drives - Batch Import โ Add up to 20 projects at once from a single folder
- One-Click Launch โ Open any project in its matching engine editor
- Game Mode Launch โ Launch projects directly in
-gamemode - List & Grid View โ Toggle between flat list and thumbnail grid (preference persisted)
- Favorites System โ Pin projects with a star; dedicated Favorites tab
- Hidden Projects Tab โ Hide projects non-destructively; restore any time
- Advanced Sorting โ Sort by name, last opened, date created, size, or engine version (asc/desc, persisted)
- Real-Time Search โ Filter projects by name instantly
- Per-Project Size Calculation โ Background calculation with live progress
- Log Viewer โ Tail the latest
.logfile fromSaved/Logs/directly in the app - Git Integration โ Detect branch, remote URL, initialize repos with UE-ready
.gitignore - File Editor โ Edit
DefaultEngine.iniand.uprojectfiles in-app with find/replace - Rich Context Menu โ Git tools, project tools, organize options via right-click menu
- Open in Explorer โ Jump to project folder or open in terminal
- Auto-Detect Fab Cache โ Finds Epic/Fab vault cache in common paths
- Custom Folder Support โ Point to any custom Fab download directory
- Asset Scanning โ Extracts name, version, description, icon, compatible UE versions
- Asset Type Detection โ Classifies assets as Plugin, Content Pack, or Project
- Asset Thumbnails โ Browse with visual previews
- Direct Fab Links โ Click to open assets on Fab marketplace
- Background Tracking โ Rust executable runs silently and records engine/project usage
- Data Merging โ Tracer data merged with saved data on every scan
- Windows Startup โ Optionally auto-start tracer with Windows via registry
- Process Detection โ Check if tracer is currently running
- Data Directory Access โ View and manage tracer data from Settings
- Built-in Themes โ Dark, Darker, Midnight Blue, Warm Dark presets
- Per-Token Color Overrides โ Customize any individual color token
- Saveable Theme Profiles โ Save, rename, apply, and delete custom combinations
- Font Customization โ Choose font family and size for the entire UI
- Border Radius Control โ Slider syncs border radius across all UI elements
- UI Scale Adjustment โ Adjust overall UI scale factor
- One-Click Reset โ Reset all appearance customizations to defaults
- Auto-Updates โ GitHub Releases-based updates via
electron-updater - Manual Version Check โ Compare against latest GitHub release
- Single Instance Lock โ Second launch focuses existing window
- Animated Splash Screen โ Loading screen on startup
- Resizable Sidebar โ Drag handle to resize or collapse
- Stacking Toasts โ Real-time notifications with auto-dismiss and close button
- Error Boundary โ Recoverable crash screen instead of blank window
- Auto-Close on Launch โ Optionally close app when launching engine/project
- Discord Feedback โ Send bug reports directly to Discord via webhook
- Cross-Platform Support โ Windows, macOS, and Linux with platform-specific optimizations
| Category | Count |
|---|---|
| Engine Management | 8 |
| Project Management | 14 |
| Fab Marketplace Browser | 6 |
| UE Tracer | 5 |
| Appearance & Theming | 7 |
| System & UX | 10 |
| Total | 50 |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Renderer Process (React) โ
โ React 19 + TypeScript + Tailwind CSS + Zustand โ
โ Pages: Engines ยท Projects ยท Settings ยท About โ
โ Components: Cards ยท Toolbars ยท Dialogs ยท Toasts โ
โโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ IPC (contextBridge)
โโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Main Process (Node.js) โ
โ Electron 39 + TypeScript โ
โ IPC Handlers: engines ยท projects ยท fab ยท tracer ยท misc โ
โ Data Store: engines.json ยท projects.json ยท settings.json โ
โ Worker Threads: scan ยท size calculation โ
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโโผโโโโโโโโโโโ โโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโ
โ Rust N-API Module โ โ Rust Tracer (Windows only) โ
โ native/dist/*.node โ โ resources/unreal_launcher_ โ
โ - scan_engines โ โ tracer.exe โ
โ - find_uproject โ โ - Tracks engine/project usage โ
โ - get_folder_size โ โ - Writes to Tracer/*.json โ
โ - git_status โ โ - Runs detached in background โ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- App launches โ single instance lock acquired
- Chromium memory optimizations applied (V8 heap cap, disabled background networking)
local-asset://custom protocol registered (serves local files to renderer)- Main window created with custom frameless titlebar
- IPC handlers registered across 7 modules
- Saved data loaded from
%APPDATA%/Unreal Launcher/save/(or platform equivalent) - Tracer data merged if
tracerMergeEnabledis set - Renderer loads โ splash screen shown โ React app bootstraps
- Default route navigates to Engines page
- Background tasks deferred: native module warmup, tracer startup, update check
When you click Scan for engines or projects:
- Main process spawns a Worker Thread (off the main thread)
- Worker loads the Rust N-API native module
- Native module performs fast filesystem traversal
- Results returned to main process via
worker.once('message') - Tracer data merged into results (if enabled)
- Saved to
engines.json/projects.json - Renderer receives the array and updates the UI
Size calculation runs entirely in the background:
- Worker thread spawned per engine/project (or batch for all projects)
- Rust
get_folder_size()walks the directory tree (skips.git,node_modules) - Results pushed back to renderer via
onSizeCalculatedIPC event - Cards update in-place without re-rendering the full list
All data lives in Electron's userData directory:
Windows: %APPDATA%\Unreal Launcher\
macOS: ~/Library/Application Support/Unreal Launcher/
Linux: ~/.config/Unreal Launcher/
Structure:
โโโ save/
โ โโโ engines.json โ saved engine list
โ โโโ projects.json โ saved project list
โ โโโ settings.json โ app settings + fab path
โ โโโ engine-scan-paths.json โ custom engine scan paths (Linux)
โ โโโ project-scan-paths.jsonโ custom project scan paths (Linux)
โโโ Tracer/
โโโ engines.json โ tracer-collected engine data
โโโ projects.json โ tracer-collected project data
On each scan, tracer data is merged with saved data. Tracer provides lastOpenedAt timestamps; saved data takes precedence for all other fields.
| Library | Version | Purpose |
|---|---|---|
| React | 19 | UI framework |
| TypeScript | 5.9 | Type safety |
| Tailwind CSS | 4 | Styling |
| Zustand | 5 | State management (navigation) |
| Framer Motion | 12 | Animations |
| Lucide React | 1.8 | Icons |
| React Router | 7 | Page routing |
| React Window | 2 | Virtualized lists (large project sets) |
| Library | Version | Purpose |
|---|---|---|
| Electron | 39 | Desktop shell |
| Node.js | 18+ | Runtime |
| electron-updater | 6.8 | Auto-updates |
| discord-rpc | 4.0 | Rich presence |
| Tool | Version | Purpose |
|---|---|---|
| Vite | 7 | Bundler |
| electron-vite | 5 | Electron + Vite integration |
| electron-builder | 26 | Packaging & distribution |
| Prettier | 3 | Code formatting |
| ESLint | 9 | Linting |
| Crate | Purpose |
|---|---|
| napi / napi-derive | N-API bindings for Node.js |
| serde / serde_json | JSON serialization |
The main process exposes the following IPC channels to the renderer:
| Channel | Description |
|---|---|
scan-engines |
Scan filesystem + registry + merge tracer data |
select-engine-folder |
Open dialog, validate, add engine |
launch-engine |
Spawn engine executable |
delete-engine |
Remove from store |
calculate-engine-size |
Background folder size |
scan-marketplace-plugins |
List plugins in Engine/Plugins/Marketplace |
| Channel | Description |
|---|---|
scan-projects |
Find .uproject files + merge tracer data |
select-project-folder |
Open dialog, batch import (max 20) |
launch-project |
Open in editor |
launch-project-game |
Launch in -game mode |
open-directory |
Open folder in Explorer/Finder/File Manager |
delete-project |
Remove from store |
calculate-project-size |
Background folder size |
calculate-all-project-sizes |
Batch size calculation with push events |
| Channel | Description |
|---|---|
project-read-log |
Tail latest .log file (64KB chunks) |
project-git-status |
Read branch, remote URL from .git/ |
project-git-init |
git init + create UE .gitignore |
project-read-file |
Read file content (config, uproject) |
project-write-file |
Write file content with validation |
open-terminal |
Launch terminal in project directory |
| Channel | Description |
|---|---|
fab-get-default-path |
Find first existing Fab cache path |
fab-select-folder |
Open dialog for custom Fab folder |
fab-scan-folder |
Scan folder, extract asset metadata |
fab-save-path |
Persist custom path to settings |
fab-load-path |
Load saved Fab path |
| Channel | Description |
|---|---|
tracer-get-startup |
Check Windows registry Run key |
tracer-set-startup |
Enable/disable + registry sync + spawn |
tracer-is-running |
Check via tasklist |
tracer-get-data-dir |
Return tracer data directory |
tracer-get-merge |
Get merge-on-scan setting |
tracer-set-merge |
Set merge-on-scan setting |
engines-get-registry |
Get registry scan setting |
engines-set-registry |
Set registry scan setting |
| Channel | Description |
|---|---|
check-for-updates |
Trigger electron-updater check |
download-update |
Download pending update |
install-update |
Quit and install |
get-app-version |
Return current version string |
check-github-version |
Compare against latest GitHub release |
| Channel | Description |
|---|---|
window-minimize |
Minimize window |
window-maximize |
Maximize / restore window |
window-close |
Quit app |
window-is-maximized |
Check window state |
open-external |
Open HTTPS URL in browser |
send-discord-webhook |
Proxy webhook with multipart support |
get-native-status |
Check if Rust module loaded |
clear-app-data |
Wipe engines, projects, settings |
clear-tracer-data |
Wipe tracer data |
UnrealLauncher/
โโโ docker/ # Docker build files
โ โโโ Dockerfile
โ โโโ .dockerignore
โ โโโ build-docker.sh
โ โโโ build-docker.ps1
โโโ docs/ # Documentation
โ โโโ BUILD.md
โ โโโ BUILD_INSTRUCTIONS.md
โ โโโ CONTRIBUTING.md
โ โโโ CODE_OF_CONDUCT.md
โ โโโ DONATE.md
โ โโโ SECURITY.md
โ โโโ OPTIMIZATION_REPORT.md
โโโ native/ # Rust N-API native module
โ โโโ src/lib.rs # scan_engines, find_uproject, get_folder_size, git_status
โ โโโ Cargo.toml
โ โโโ dist/ # Compiled .node binary
โโโ resources/ # Packaged assets
โ โโโ icon.ico / icon.png
โ โโโ unreal_launcher_tracer.exe (Windows only)
โโโ scripts/ # Build helper scripts
โ โโโ build-admin.ps1 # Windows โ elevate + build:win
โ โโโ build-installer.bat # Windows โ admin installer build
โ โโโ build-installer.ps1 # Windows โ PowerShell installer build
โ โโโ build-linux.sh # Linux โ AppImage + deb build
โโโ src/
โ โโโ main/ # Electron main process
โ โ โโโ index.ts # Entry, protocol, single instance, memory opts
โ โ โโโ ipcHandlers.ts # Registers all IPC modules
โ โ โโโ store.ts # Data persistence (engines/projects/settings)
โ โ โโโ storeTracerMerge.ts
โ โ โโโ updater.ts # electron-updater setup
โ โ โโโ types.ts # Shared TypeScript types
โ โ โโโ logger.ts # Logging system
โ โ โโโ discordPresence.ts # Discord Rich Presence
โ โ โโโ ipc/ # IPC handler modules (25+ files)
โ โ โโโ utils/ # Utility modules (15+ files)
โ โ โโโ scanWorker/ # Worker thread implementations
โ โ โโโ window/ # Window management (4 files)
โ โโโ preload/
โ โ โโโ index.ts # contextBridge โ exposes electronAPI to renderer
โ โ โโโ index.d.ts # Type definitions for window.electronAPI
โ โโโ renderer/
โ โโโ src/
โ โโโ App.tsx
โ โโโ main.tsx
โ โโโ pages/ # Engines, Projects, Settings, About
โ โโโ components/ # Organized by feature (engines/, projects/, settings/, layout/, ui/)
โ โโโ hooks/ # Custom React hooks
โ โโโ types/ # Renderer-side type aliases
โ โโโ store/ # Zustand state management
โ โโโ utils/ # Theme, settings, asset resolution
โโโ tracer/ # Rust tracer source (Windows only)
โโโ build/ # electron-builder assets (icons, entitlements)
โโโ CHANGELOG.md
โโโ README.md
โโโ LICENSE
โโโ package.json
โโโ electron-builder.yml
โโโ electron.vite.config.ts
โโโ tsconfig*.json
- Node.js 18+ (check with
node --version) - Rust toolchain (for native modules & tracer) โ Install
- npm (comes with Node.js)
git clone https://github.com/NeelFrostrain/UnrealLauncher.git
cd UnrealLauncher
npm installnpm run devThe app will launch in development mode with hot reload enabled.
npm run start# Build tracer + app for current platform
npm run buildnpm run build:win # Windows NSIS installer (.exe)
npm run build:mac # macOS DMG (.dmg) โ Coming Soon
npm run build:linux # Linux AppImage + DEBnpm run build:unpackBuild Status Badges:
See docs/BUILD.md for the full build guide including native modules and the Rust tracer.
| Command | Description |
|---|---|
npm run dev |
Start in development mode |
npm run start |
Preview production build |
npm run build |
Build for current platform |
npm run build:win |
Windows installer |
npm run build:mac |
macOS package |
npm run build:linux |
Linux package |
npm run build:native |
Build Rust N-API native module |
npm run build:tracer |
Build Rust tracer executable |
npm run typecheck |
TypeScript type checking |
npm run lint |
Run ESLint |
npm run lint:fix |
Fix ESLint issues |
npm run format |
Format with Prettier |
npm run clean |
Remove build artifacts |
| Platform | Format | Architecture | Status | Badge |
|---|---|---|---|---|
| Windows | NSIS installer .exe |
x64 | Stable | |
| macOS | .dmg |
x64, arm64 | Coming Soon | |
| Linux | AppImage | x64 | Stable | |
| Linux | .deb |
x64 | Stable |
Published to GitHub Releases: NeelFrostrain/UnrealLauncher/releases
See docs/CONTRIBUTING.md for the full guide.
- Fork the repo
- Create a feature branch:
git checkout -b feature/your-feature - Run type checking and linting:
npm run typecheck && npm run lint - Commit your changes
- Open a pull request
Copyright (c) 2026 NeelFrostrain. All rights reserved.
This project uses a proprietary license. You may download and run the compiled binary for personal use, but you may not copy, modify, redistribute, or use the source code in your own projects.
See LICENSE for full terms.
| Channel | Contact & Support Link |
|---|---|
| ๐ Bug Reports | |
| ๐ฌ Q&A & Ideas | |
| ๐ฎ Community | |
| โ๏ธ Direct Mail | |
| โ Support Me |
Community Badges:
Built with by Neel Frostrain
Special thanks to the Unreal Engine community and all contributors who have helped shape this project.