Optimizing Oh My Zsh Startup by Selecting Plugins and Disabling Auto‑Updates
Speed up Oh My Zsh by loading only needed plugins and turning off daily auto‑updates.
03 Jul 2026, 14:13 UTC

Keep Oh My Zsh fast by limiting plugins and turning off auto‑updates
Start with the useful answer: enable only the plugins you need and set DISABLE_AUTO_UPDATE=true to stop the daily update check.
Worked configuration
Edit ~/.zshrc and change the plugin list and add the disable flag:
# Which plugins would you like to load?
# Standard plugins can be found in ~/.ohmyzsh/plugins/
# Custom plugins may be added to ~/.ohmyzsh/custom/plugins/
plugins=(git docker)
# Stop Oh My Zsh from checking for updates each day
DISABLE_AUTO_UPDATE=true
After saving, reload the file:
source ~/.zshrc
How it works
Oh My Zsh sources every enabled plugin’s *.plugin.zsh file from ~/.ohmyzsh/plugins/ during shell initialization. Each sourced file adds functions, aliases, and completions, which increases the time the shell takes to become ready. By limiting the list to git and docker only those two scripts are read, reducing the workload.
The auto‑update mechanism is implemented in ~/.ohmyzsh/tools/upgrade.sh. Oh My Zsh runs this script automatically unless the environment variable DISABLE_AUTO_UPDATE is set to a non‑empty value. Setting it prevents the daily check and the associated network call.
Limits and common mistakes
- Adding many plugins (e.g., a full‑featured suite) can noticeably slow startup, especially on slower machines or when plugins source heavy dependencies.
- Forgetting to run
source ~/.zshrcafter editing leaves the old plugin list active, so changes appear inert. - Mixing case‑sensitive completion (
CASE_SENSITIVE=true) with the default insensitive behavior can cause unexpected tab‑completion results; keep the setting consistent across sessions. - Disabling auto‑updates means you must manually run
upgrade.shor check for new releases to stay current.
Verification
- Run
source ~/.zshrcto apply changes. - Check the loaded plugins with
echo $plugins; the output should show(git docker). - Confirm the update check is disabled by inspecting the environment:
printenv DISABLE_AUTO_UPDATEshould return a non‑empty value (true). - Start a new terminal and notice the prompt appears promptly; you can time the startup with
time zsh -i -c exitfor a rough comparison.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.