If Zed shows no Swift completions or diagnostics, the cause is usually a SourceKit-LSP setup or indexing issue. Here is how to diagnose and fix it step by step.
You open a Swift file in Zed and get no completions, no hover info, and no diagnostics. Typing feels like a plain text editor.
This almost always means the Swift language server, SourceKit-LSP, is not running or not indexing your project correctly.
Zed relies on SourceKit-LSP for all Swift intelligence. If that connection breaks, the smart features disappear even though the editor still works.
The good news is that the causes are limited and fixable. Work through them in order and you will usually restore completions.
SourceKit-LSP comes with the Swift toolchain that ships with Xcode. If Xcode or the command line tools are missing, the server cannot start.
Check that Swift is available by running swift --version in Terminal. An error here means the toolchain is not set up.
Confirm the language server binary exists by running xcrun --find sourcekit-lsp. It should print a path.
If either command fails, install Xcode or run xcode-select --install, then verify the active tools path with xcode-select -p.
Zed needs its Swift language support to associate .swift files with SourceKit-LSP. Without it, Zed will not launch the server.
Open Zed's extensions panel and confirm the Swift extension is installed and enabled.
If it is missing, install it, then close and reopen your Swift file so Zed re-evaluates language support.
After installing, give the server a few moments to start and index before expecting completions to appear.
SourceKit-LSP needs build information to provide accurate completions. On a fresh checkout, that index may not exist yet.
For Swift Package Manager packages, run swift build once in the project directory. This produces artifacts the server can use.
For iOS app targets, build the app in Xcode first. App targets often need Xcode-generated build products before indexing works.
After building, reopen the file in Zed. Completions frequently appear once the index is populated.
SourceKit-LSP resolves modules most reliably for Swift packages. Full iOS app projects are harder because they depend on Xcode's build context.
If completions work in a test package but not your app, this is likely the reason.
Try building the app in Xcode so the SDK, module maps, and build products are available on disk.
Where practical, factor logic into local Swift packages. Package code indexes cleanly and gives you reliable completions in Zed.
Sometimes the server starts but gets into a bad state, especially after dependency changes or interrupted builds.
Restart Zed entirely. A clean restart clears stale language server processes and cached state.
After restarting, reopen the project and let the server re-index before testing completions again.
If you changed dependencies, run swift build or rebuild in Xcode so the index reflects the new modules.
Open a Swift file and type a known symbol. The completion popup should appear within a moment.
Hover over a type to confirm you get documentation or type information. Then try go-to-definition on a symbol.
If all three work, SourceKit-LSP is connected and indexing correctly.
Run through this quick check any time completions vanish. It tells you fast whether the server is alive and indexed.
If you opened just one Swift file rather than the project folder, the language server has no project context to work from.
Close the lone file and open the containing directory instead, so Zed can see the manifest or project structure around your code.
For Swift packages, that means opening the folder with Package.swift. For an app, open the folder that holds your sources and project files.
This single change fixes a surprising number of no-completion cases, because context is what SourceKit-LSP needs to resolve symbols.
If you have installed multiple Xcode versions or a standalone toolchain, xcode-select may point at the wrong one.
Check the active developer directory with xcode-select -p and confirm it matches the Xcode you actually use.
If it is wrong, switch it with sudo xcode-select -s pointed at the correct Xcode, then rebuild so the index regenerates.
A mismatched toolchain can start SourceKit-LSP against the wrong SDK, which quietly breaks completions even though everything looks installed.
When completions vanish, run through a short checklist before diving deeper. First, confirm swift --version and xcrun --find sourcekit-lsp both succeed.
Second, confirm the Swift extension is installed and the project folder, not a single file, is open.
Third, build once with swift build or in Xcode so an index exists, then reopen the file.
Fourth, if all else looks right, restart Zed to clear stale state. Most completion failures fall into one of these four buckets.
Outdated software is an easy thing to rule out early. An old Zed build or an outdated Swift extension can behave unexpectedly with the current toolchain.
Update Zed to the latest version so its language server handling matches current behavior.
Update or reinstall the Swift extension as well, then reopen your project so the fresh version takes effect.
Keeping both current removes a whole category of hard-to-diagnose issues before you spend time chasing deeper causes.
When you are chasing a completion problem, simplify the situation so the cause is easier to see. Close unrelated projects and windows in Zed.
Open a small, known-good Swift package and confirm completions work there. If they do, the toolchain and extension are fine and the issue is project-specific.
Then return to the problem project with that knowledge, focusing on its build context rather than the editor itself.
Isolating variables this way turns a vague failure into a specific, fixable one.
It also saves time, because you stop guessing about the editor and start looking at the one thing that actually differs between the working and broken cases.
If completions remain broken after all steps, check Zed's log or language server output for a crash or error message.
Confirm your Xcode command line tools selection with xcode-select -p and switch it if it points to the wrong location.
Consult Zed's documentation and the SourceKit-LSP repository for known issues, since both projects evolve.
Remember the boundary: even with completions working, Zed does not build or run your app. Use Xcode for building, the Simulator, signing, and App Store submission.
Usually SourceKit-LSP is not running. Confirm the Swift toolchain and the Swift extension are installed, then build the project once so it can index.
Run xcrun --find sourcekit-lsp in Terminal. If it prints a path, the language server is available to Zed.
App targets need Xcode build products for full indexing. Build the app in Xcode first, or factor code into Swift packages that index cleanly.
Often, yes. A restart clears stale language server state, which is a common cause of completions suddenly stopping.
No. Completions are an editing feature. Building, running, signing, and shipping still require Xcode and the Apple Developer Program.