84 comments

[ 4.8 ms ] story [ 70.1 ms ] thread
I installed oh-my-zsh back in early college some 15 years ago, before zsh was even the default on macs, and it is so good I’ve never felt compelled to experiment or try any other shells terminals or configs. It’s the first thing I install on every new computer.
Or simply use fish
I use oh my zsh for exactly one reason: I can get a good shell experience out of the box and immediately start working on stuff productively, whether it's a new machine, a new remote host or a container.

I could spend hours figuring out all those things, bit I'd rather use that time for something more important.

Like many I installed omz and ran it as the default for a long time. After a while I looked to optimize my shell starts and realized I was only using a fraction of the functionality.

So I figured out what I was using and created my own very paired down version of what I needed. My boot times are much faster and I’ve been totally happy with it. I also learned a lot more about shell configs as a result.

I agree, I used omz a while now but I have since also realised that the features I uses are so basic, it really does not warrant a whole software project as a dependency.

So I went and had Gemini make me a zsh config with the features I actually use. Took 15 minutes to get all the autocompelte, aliases and search functionality and done.

I had the same gripe as the author. OhmyZSH seems too bloated for my needs. Added to that, the defaults adds (and oft unnecessary) emojis to prompts & outputs - something I don't find tasteful or appealing.

I stripped out most of the OhMyZsh functions (which is pretty modular given a shell package) and created a smaller, leaner package (leanZSH) having only the known stuff I may use. I have been using it without much complaints.

https://github.com/gradientwolf/leanzsh

They complain about a startup time of 380ms, but with the default configuration it's only 60ms on my laptop. That's faster than the final startup time of 70ms of their custom config, and it has all the features that they added to their config. So with all the features they need OMZ should be fast enough for them? I don't get it.
You probably don't need zsh. POSIX shells are holding us back.
> Once in a while, it also checks for updates, which can take up to a few seconds when you open a new tab.

This can be disabled fairly trivially. I then alias the update command to a homebrew update alias.

https://stackoverflow.com/a/25876379

Like others I don't use too many of the features but Oh-My-Zsh is so easy to install.

Even better recently I discovered that FreeBSD has a package for it!

`pkg install ohmyzsh` and 5 seconds later it's ready. Plus I figure it's a bit more secure and insulated to any ohmyzsh breaches.

I switched to zim years ago and found it has all the features that I need but is much faster and I think easier to install (though I haven’t installed either for some time).

https://zimfw.sh/

I have not a small number of plugins on fish and I've never noticed a problem with startup time. I do wish there was a better way of managing or installing plugins. It just feels so fragile.
zsh is still crazy to me. I use bash for everything. I have no idea what I’m missing out on.
Prezto is faster than OMZ, and has been for over a decade. Starship is faster still. I switched from using Prezto standalone to using Prezto + Starship and relying primarily on Starship several years ago. I'd be surprised if many people are still using Oh My ZSH in 2026 vs using Prezto, anyway.
I may not need this sort of shell bling. And I don't use it. But my first Unix system was an early version of Xenix, which had the original Bourne shell that didn't even support cursor up to get a previous command. (I do use cursor up, C-r, and the shell editing commands.)

But yesterday's conveniences become today's essentials, and those who came in after me have their expectations set by the much more sophisticated things available at the time. Like, I'm still flabbergasted by people—working professionals—who go "I can't program without syntax highlighting, autocomplete, and my IDE generally going bing bing wahoo at me as I work, and I don't know how anybody can." We just type the code in. Like we all had to back in the day.

Anyway I can certainly see where someone younger than about 35, or who came to Linux late, would be completely at sixes and sevens without their colorized racing-stripes shell prompt.

Like many other people, I use oh-my-zsh for default setup and that's it. I literally use a single plugin for git and very actively autoload my custom functions to avoid startup delay. With my 384 line config and oh-my-zsh on, here are the results:

$ hyperfine -N "zsh -lc 'exit 0'" "zsh -c 'exit 0'"

Benchmark 1: zsh -lc 'exit 0'

  Time (mean ± σ):      54.5 ms ±   6.3 ms    [User: 10.2 ms, System: 14.3 ms]

  Range (min … max):    38.1 ms …  64.9 ms    78 runs
Benchmark 2: zsh -c 'exit 0'

  Time (mean ± σ):       6.5 ms ±   1.4 ms    [User: 0.8 ms, System: 1.3 ms]

  Range (min … max):     3.9 ms …  14.2 ms    424 runs
It's crazy how their startup time is 380 ms, and I suspect something else might be the reason, not just oh-my-zsh
Slightly off topic but:

>> My workflows involve opening and closing up to hundreds of terminal or tmux tabs a day.

What?!?

Well yeah, you need antibody https://getantibody.github.io/ and then whatever plugins you desire. Been using it for years and it's never been anything other than fast and reliable.
Surprised no one has shout out zsh4humans, perhaps because it's basically in maintenance mode but it's not like I need any new features. Love the ssh teleport feature.

https://github.com/romkatv/zsh4humans

> My workflows involve opening and closing up to hundreds of terminal or tmux tabs a day. I do everything from the terminal. Just imagine that opening a new tab in a text editor would take half a second every time.

This sounds like overoptimization on a neglible time loss for what is essentially an unique (and dare I say: broken?) workflow.

I use terminals a lot ... but I work with 4-5 day-persistent terminals that I open once a day and keep in the background. The QoL effects of omz outweigh microtuning startup times significantly.

At some point you need to remove the training wheels, otherwise you'll never learn to ride the bike.

At first, you need them. You'll fall without it. But if you still rely on them after a while, it's not a good sign.

Are we really quibbling over 400ms startup delay to open a new terminal?
For command search I've replaced regular search and fzf with atuin. Works especially well with multiple hosts.. https://atuin.sh/

EDIT: The OP fails to mention zsh profiling: zprof. I discovered that atuin is my biggest waster at the moment with like 20ms and rest of the stuff I could clean up.

I agree. And you probably neither need Omarchy, CachyOS, etc. Choose boring and get peace of mind.