A desktop application for Microsoft Edge browser developers, built with Tauri 2 + React + TypeScript + Fluent UI. Provides a unified interface for managing Edge installs, monitoring processes, launching with flags, managing source repos, and running scripts.
- Installed Browsers — Lists all installed Edge channels (Stable, Beta, Dev, Canary) with version, install type (System/User), and path
- Quick Actions — Launch, open install folder, or uninstall any channel
- Download — Direct download link for channels not yet installed
- Mini Installers — Scans your Downloads folder for
mini_installerfiles and lets you install them with a specific channel flag
- Live Process Tree — Groups all running Edge processes by their root browser process with parent PID tree traversal
- Channel & Instance Detection — Identifies Stable, Beta, Dev, Canary, WebView2, and Copilot instances with color-coded badges
- WebView2 Host App — Shows the hosting application name for WebView2 groups
- Process Type Sorting — Processes sorted by type: Browser → Renderer → Extension → GPU → Crashpad → Utility
- Auto-Refresh — Toggle auto-refresh (persisted to localStorage) with 5-second interval
- Channel Filters — Toggle visibility of each channel/instance type (persisted, WebView2 hidden by default)
- Actions — Terminate or debug (attach debugger) any process. Debug tries WinDbg Preview → WinDbg → VS JIT Debugger
- Launch Edge — Start any installed Edge channel with custom command-line flags
- Common Flags — Quick-add common flags like
--user-data-dir,--disable-extensions, etc. - Presets — Save and load flag presets for repeated use
- Temp User Data Dir — One-click creation of a temporary user data directory
- Multi-Repo Management — Add and manage multiple Edge/Chromium source repositories
- Drag Reorder — Reorder repos via drag handle (pointer events for WebView2 compatibility)
- Lazy Loading — Shows branch on collapse, loads full info (out dirs, commits) on expand
- Build Targets — Build common targets (
chrome,mini_installer, unit tests, etc.) viaautoninja - Autogn Configs — Create new out directories with a dropdown of pre-populated autogn configurations (Developer, Sanitizer, Official builds)
- Edge Dev Environment — Open an Edge dev environment terminal (
initEdgeEnv.cmd) - Gclient Sync — Run
gclient sync -f -Din a new console window - Recent Commits — View the last 15 commits for each repo
- Custom Scripts — Define and run custom scripts or workflows
- Persistence — Scripts are saved and restored across sessions
- Node.js 18+ and npm
- Rust 1.70+ with the MSVC toolchain
- If Rust is installed to a non-default location, you'll need to add it to your PATH before building
- Windows 10/11 — The app uses Windows-specific APIs (registry, process management)
- WebView2 Runtime — Required by Tauri 2 (pre-installed on Windows 10 1803+ and Windows 11)
# If Rust is at the default location (~/.cargo/bin), just run:
npm install
npm run tauri dev
# If Rust is installed to a custom location, prepend it to PATH first:
$env:PATH = "C:\Program Files\Rust stable MSVC 1.93\bin;$env:PATH"
npm run tauri devThis starts Vite on http://localhost:1420 with hot-reload for the frontend. Rust backend changes trigger an automatic recompile.
npm run tauri buildProduces:
- Executable:
src-tauri/target/release/edge-utilities.exe - MSI installer:
src-tauri/target/release/bundle/msi/ - NSIS installer:
src-tauri/target/release/bundle/nsis/
| Issue | Fix |
|---|---|
localhost refused to connect |
Use npm run tauri dev, not cargo build alone |
| Port 1420 already in use | Get-NetTCPConnection -LocalPort 1420 | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force } |
cargo not found |
Add Rust bin directory to PATH (see above) |
EdgeUtilities/
├── src/ # React frontend
│ ├── App.tsx # Main app with FluentProvider + tab navigation
│ ├── App.css # Global styles
│ └── tabs/
│ ├── InstallsTab.tsx # Edge install management
│ ├── ProcessesTab.tsx # Process monitoring & debugging
│ ├── LauncherTab.tsx # Edge launcher with flags
│ ├── ReposTab.tsx # Source repo management & builds
│ └── ScriptsTab.tsx # Custom script runner
├── src-tauri/ # Rust backend
│ ├── Cargo.toml # Rust dependencies
│ ├── tauri.conf.json # Tauri configuration
│ ├── capabilities/ # Tauri security permissions
│ └── src/
│ ├── lib.rs # Tauri entry point & command registration
│ └── commands/
│ ├── installs.rs # Registry scanning, install/uninstall
│ ├── processes.rs # sysinfo process enumeration, debugging
│ ├── launcher.rs # Edge launching, flag presets
│ ├── repos.rs # Git operations, autogn, builds
│ └── scripts.rs # Script persistence & execution
├── index.html
├── package.json
├── vite.config.ts
└── tsconfig.json
| Layer | Technology |
|---|---|
| Framework | Tauri 2.x |
| Frontend | React 19, TypeScript, Vite 7 |
| UI Components | Fluent UI React v9 |
| Backend | Rust with Tokio |
| Process Info | sysinfo 0.33 |
| Registry | winreg 0.55 |
| Windows APIs | windows 0.58 |
- Fork & Clone the repository
- Create a feature branch:
git checkout -b feature/my-feature - Install dependencies:
npm install - Run in dev mode:
npm run tauri dev - Make changes — frontend changes hot-reload, Rust changes auto-recompile
- Type-check:
npx tsc --noEmit - Test a production build:
npm run tauri build - Submit a Pull Request
- Create
src/tabs/MyTab.tsxwith a default export React component - Add the corresponding Rust commands in
src-tauri/src/commands/mytab.rs - Register the module in
src-tauri/src/commands/mod.rs - Register commands in
src-tauri/src/lib.rsvia.invoke_handler(tauri::generate_handler![...]) - Add the tab to the
TabListinsrc/App.tsx
- Rust: Use
#[tauri::command]for all IPC functions. ReturnResult<T, String>for error handling. - TypeScript: Use
invoke<T>()from@tauri-apps/api/coreto call Rust commands. - Styling: Use CSS variables from
App.cssfor theming. The app uses Fluent UI'swebDarkTheme. - Persistence: Use
localStoragefor UI state (filters, toggles). Use JSON files in the app directory for data (repo lists, presets, scripts).
