Oh My Zsh native plugin loader vs zplug: which should own plugin sourcing when both are configured?
0 reputation · 24 Sept 2026, 17:45 UTC
I run Oh My Zsh with a handful of plugins listed in the plugins array in .zshrc, and I am evaluating zplug to manage a few additional third-party plugins that are not part of the Oh My Zsh repository. The boundary I cannot resolve is who owns sourcing when the same plugin could be loaded by either side.
My understanding is that Oh My Zsh sources plugins strictly in array order, with ~/.oh-my-zsh/custom/plugins overriding same-named built-ins, and that it has no dependency resolution or deduplication of its own. If zplug also sources a plugin that Oh My Zsh already loaded, I expect duplicate sourcing, but I have found no official guidance on whether the native loader should defer to an external manager, or vice versa.
Assume a current Oh My Zsh release and zsh 5.8+. I can verify behavior with zsh -x or temporary echo statements in plugin files, but I want a design decision before testing.
- Is there a documented or de facto convention for partitioning plugins between Oh My Zsh's
pluginsarray and an external manager like zplug? - Does duplicate sourcing of the same plugin cause concrete problems beyond startup time, such as re-registered hooks or doubled PATH entries?
- Should custom overrides in
custom/pluginsbe migrated to the external manager to keep updates clean?