Speeding up my ZSH shell

Oh-My-Zsh (OMZ) Bloat & Impact on Zsh

  • Many commenters say “zsh is fine; OMZ is the problem.” OMZ is seen as huge, slow, alias-heavy, and cluttering the namespace for little gain.
  • Several note that new zsh users are funneled into OMZ by online guides, then blame zsh for OMZ’s slowness.
  • Some consider OMZ borderline unsafe or “supply-chain risk” due to its size, auto-update behavior, and dependence outside the system package manager.
  • Others say OMZ works fine for them and prefer its convenience over hand-tuning zsh.

Lean Configs & Alternative Zsh Frameworks

  • Multiple people report large speedups by:
    • Removing OMZ entirely and re-implementing just the 3–4 features they actually use.
    • Using minimal plugin managers (Antidote, Antigen, ZimFW, Prezto, zgen, zimfw, zsh4humans) instead of OMZ.
    • Building small “lean” OMZ forks, or manually copying only needed OMZ plugins.
  • Advice: start with no plugins and add only what’s necessary; profile first to find real bottlenecks.

Prompts, Plugins, and Performance

  • Powerlevel10k is widely praised (instant prompt, transient prompt); concern that it’s “discontinued,” but others say it’s feature-complete and mostly in maintenance mode.
  • Starship is frequently recommended: fast, cross-shell, compiled; some warn it can be slow if language integrations call heavy tools (git, pyenv, etc.), so they disable many modules.
  • Spaceship users are encouraged to switch to Starship; fish users are pointed toward Tide or async prompt plugins.
  • Tools like fzf, Atuin, zoxide, and syntax-highlighting/autosuggestion plugins are cited as powerful but can add latency if overused or poorly configured.

Version Managers as Major Culprits

  • nvm is repeatedly identified as a top source of zsh startup lag.
  • Remedies:
    • Lazy-loading nvm via OMZ options or zsh-nvm.
    • Switching to faster alternatives: fnm, mise, or custom znvm; mise praised for supporting many languages.
  • For Python in Starship, replacing pyenv with uv is suggested for speed.

Zsh vs Fish vs Bash (and Others)

  • Several switched to fish (often with Starship) and report great UX and speed out of the box.
  • Strong pushback from users who need POSIX/bash syntax compatibility, copy-pasting from bash-based playbooks, or frequent SSH into bash-only servers; they find fish’s different syntax (variables, heredocs) too annoying.
  • A few revert to bash (or mksh/ksh) for minimal latency and maximal predictability, delegating “fancy” behavior to external tools.

Completion & compinit Handling

  • Some skepticism about only regenerating the completion cache once per day; key point is to run compinit exactly once after all fpath changes.
  • Others note quirks like zcompdump mtime not updating unless you explicitly touch it.
  • Several argue that if zsh shipped with its advanced completion fully enabled by default, frameworks like OMZ would be largely unnecessary.