Performance Troubleshooting
Slow File Tree Rendering
Symptom: Explorer view takes seconds to load or scrolling is janky.
Solutions:
- Large directories: Directories with 10k+ files use streaming. If the initial load is slow, check network/disk speed.
- Disable file watcher for noisy dirs: Add patterns to Settings → Workspace → Ignored Patterns (e.g.,
node_modules/,target/,.venv/) - Collapse deep trees: Use the "Collapse All" button to reduce rendered nodes
High Memory Usage
Symptom: The app uses > 2 GB RAM.
Common causes and fixes:
| Cause | Fix |
|---|---|
| Many terminal sessions | Close unused terminals (each holds scrollback in memory) |
| Large scrollback | Reduce in Settings → Memory → Terminal Scrollback (default 10,000 lines) |
| Many open repos | Close repos you're not actively using |
| File previews | Large Parquet/SafeTensors previews are cached. Close preview tabs. |
The app has a built-in heap watcher that evicts cached data at 80% memory pressure.
Slow Git Operations
Symptom: Status, diff, or log operations take > 1 second.
Check:
- Repository size: Very large repos (> 1M files) are inherently slower. The app uses virtual scrolling to stay responsive.
- Disk speed: Git operations are I/O bound. SSDs make a significant difference.
- Background indexer: The first time you open a repo, the indexer builds its cache. Subsequent opens are faster.
- Antivirus: Some AV software scans every file git touches. Exclude your repo directory.
Slow Clone
Symptom: Cloning takes much longer than expected.
For Crab URLs: Clone only downloads metadata (refs + pack). If it's slow, check network bandwidth to your cloud storage region.
For HTTPS/SSH URLs: The full repository content is downloaded. Large repos with history take time. Use --depth 1 for shallow clones if you don't need history.
Terminal Lag
Symptom: Keystrokes in the terminal have visible delay.
Solutions:
- WebGL rendering: Ensure GPU acceleration is working. If not, the terminal falls back to canvas (slower). Check: Settings → About → GPU Status.
- Large output: Commands that produce massive output (e.g.,
caton a large file) can temporarily lag. The terminal buffers and catches up. - Font rendering: Complex fonts with ligatures are slower. Try disabling ligatures in Settings → Terminal → Font → Ligatures.
Slow Diff Loading
Symptom: Opening a diff takes > 1 second.
Solutions:
- Large files: Diffs for files > 10,000 lines show a warning before loading. This is intentional to prevent UI freezes.
- Syntax highlighting: Highlighting is async but can be slow for unusual languages. It doesn't block the initial render.
- Monaco lazy load: The first diff you open loads the Monaco editor (~500 KB). Subsequent diffs are instant.
Reducing Resource Usage
For constrained environments (low RAM, slow disk):
- Reduce terminal scrollback: Settings → Memory → 1,000 lines
- Disable file watcher: Settings → Workspace → File Watcher → Off (manual refresh only)
- Disable prefetch: Settings → Prefetch → Off
- Close unused repos: Each open repo maintains a connection to the sidecar