docs/src/development/feature-process.md
This is for moderate-to-large features — new UI, behavior changes, or work that cuts across multiple parts of Zed. Small keybindings or settings tweaks don't need all of this.
Before you start: If you're an external contributor, make sure the feature is something the team wants before investing significant effort. Please read the Contributing Guide and our Feature Request Guidelines — if there isn't already a GitHub issue with clear staff confirmation, start with a GitHub Discussion. Feature request PRs that skip this process have a very low merge rate. Taking the time to follow our process significantly increases the chances your idea gets picked up and built.
Every feature starts as an idea. Before writing any code, ground it:
Write a short, concrete feature statement, then back it up with the context gathered above. If you can't describe the feature in a few sentences, it might be too big or too vague.
Here's an example format, though adapt it to whatever your feature needs:
Feature: Inline Git Blame
Purpose: Show the last commit author and message for each line directly after the editor text, so developers can understand code history without opening the git blame.
Background: This is standard across all major code editors:
Decisions: We have to decide whether to use the git CLI or a git library. Zed uses a git library but its blame implementation is too slow for a code editor, so we should use the CLI's porcelain interface.
Walk through this list before you start building. Not everything will apply:
If your feature touches the editor specifically: the editor has a lot of coexisting features — gutter elements, inline blocks, multiple cursors, folding, edit predictions, code intelligence popovers, the minimap. Test your changes with different combinations of them active. Features that work in a normal buffer might need to be disabled in a multi-buffer.
Use this as the basis for your GitHub Discussion, issue, or PR description. Good product research gets everyone aligned on goals, the state of the art, and any tradeoffs we might need to consider.