Four Feature Requests to Shape the Future of Zsh

Zsh is already the shell of choice for power users. It’s flexible, scriptable, and packed with customization options. But the more time you spend inside it, the more the edges start to show. Small friction points pile up. Commands slow under heavy load. Autocompletion gets clever but not clever enough. Precision sometimes falls behind speed. These are gaps, and gaps are opportunities.

The first request: native async execution for heavy completions without extra plugins. Raw speed at the core, not as a patched-on improvement.
The second: a richer, persistent undo history for both commands and session context, so workflows can rewind without tangled hacks.
The third: built-in context awareness that adjusts suggestions and completion behavior based on current directories, git states, and command patterns.
The fourth: easier, scriptable sharing of function definitions across projects without fragile symlink forests.

These aren’t wishful tweaks. They’re leverage points. Small shifts that, once built, would smooth the edges for everyone. When a shell feels invisible in the hands, you think less about it and more about the work you’re doing. That’s what efficiency means here—removing the drag until only execution remains.

Submitting a Zsh feature request is simple: write it up on the project’s issue tracker, including the practical use cases, measurable impact, and why an existing plugin can’t truly solve it. Developers respect clarity. Roadmaps bend toward ideas that are sharp and specific.

But even if these changes land someday, improvement cycles take time. If you want to experiment and see living, breathing prototypes for workflow changes in minutes, you don’t need to wait. You can spin up a fully working environment for testing right now with hoop.dev and see your ideas in action before the pull request even exists.

Zsh will grow. The requests you write today might be the defaults tomorrow. Until then, you can start shaping your perfect shell right away. Minutes, not months.