nallwhy
January 13, 2026, 12:31am
1
Hi everyone,
I’m trying to use Zed for Elixir development and recently enabled the expert settings, but I’m not confident my setup is actually working.
The Elixir LSP seems to get stuck showing “Starting Erlang node” repeatedly, as you can see in the attached screenshot, and never fully comes up.
I’d really appreciate help from anyone who’s successfully using Zed with Elixir. In particular:
Which LSP are you using? (expert, elixir-ls, etc.)
Any must-have expert settings for Elixir that aren’t obvious from the docs?
Common gotchas or pitfalls you ran into early on (and how you fixed them)
Here’s the my current Zed settings.
{
"agent": {
"default_model": {
"provider": "zed.dev",
"model": "claude-sonnet-4",
},
"always_allow_tool_actions": true,
"model_parameters": [],
"default_profile": "write",
},
"ui_font_size": 16,
"buffer_font_size": 16,
"theme": {
"mode": "system",
"light": "One Light",
"dark": "One Dark",
},
"formatter": "language_server",
"languages": {
"Elixir": {
"language_servers": [
"expert",
"!elixir-ls",
"!next-ls",
"!lexical",
"tailwindcss-language-server",
],
},
"HEEX": {
"language_servers": [
"expert",
"!elixir-ls",
"!next-ls",
"!lexical",
"tailwindcss-language-server",
],
},
},
}
Thanks in advance!
Eiji
January 13, 2026, 3:35am
2
While expert tend to be the best choice for LSP in future as far as I know it’s still in very early state. I’m using expert so far without a bigger problems, but I’m rather used to work in testing environments as I often check interesting beta/canary/nightly/rc releases. Therefore it’s rather rare that I would mention something as a “big issue”, simply because I often fix it or find a temporary workarounds (for example see my credo issue mention for post in 1.20.0-rc.0 release).
However if you aim for a prod stability you should use other language servers if possible. Look that the only release on their GitHub project is nightly one, so there is absolutely no guarantee that one day everything would suddenly stop working. At least for now I would rather recommend using expert only for feedback/testing purposes.
Here is a link to releases:
Here is also automated PR for 0.1.0 release (pay attention to the number of applied fixes):
main ← release-please--branches--main--components--expert
opened 05:15PM - 01 Aug 25 UTC
:robot: I have created a release *beep* *boop*
---
## [0.1.0](https://github.c… om/elixir-lang/expert/compare/v0.1.0...v0.1.0) (2026-01-12)
### ⚠ BREAKING CHANGES
* add CLI flag handling ([#185](https://github.com/elixir-lang/expert/issues/185))
### Features
* add CLI flag handling ([#185](https://github.com/elixir-lang/expert/issues/185)) ([46713a1](https://github.com/elixir-lang/expert/commit/46713a173b595f1bc2d1ce6e6f747a135291a392))
* add engine subcommands to expert ([#254](https://github.com/elixir-lang/expert/issues/254)) ([d7c348c](https://github.com/elixir-lang/expert/commit/d7c348cd5682dd0fd5fef04b56e8d9058b76ced6))
* add missing require code action ([#283](https://github.com/elixir-lang/expert/issues/283)) ([a9ee0ec](https://github.com/elixir-lang/expert/commit/a9ee0ec8617f8bee70aa9d1431ff4d4930a8fb29))
* create undefined function code action ([#287](https://github.com/elixir-lang/expert/issues/287)) ([9624b3a](https://github.com/elixir-lang/expert/commit/9624b3ab1010b15d6cbb5d238d26a1a922936fbb))
* **engine:** support shorthand notation inside ~H sigil ([#278](https://github.com/elixir-lang/expert/issues/278)) ([e1e5666](https://github.com/elixir-lang/expert/commit/e1e5666dafccc24b1116eed8ad20a34cf667e9b8))
* epmdless clustering ([#205](https://github.com/elixir-lang/expert/issues/205)) ([488d3a9](https://github.com/elixir-lang/expert/commit/488d3a95e2c6eb2deb600ebf6cd5525232997b9b))
* epmdless deployments ([#167](https://github.com/elixir-lang/expert/issues/167)) ([9cfb5cc](https://github.com/elixir-lang/expert/commit/9cfb5cc57ea7458a7e67559e91332dd549b638fc))
* on the fly engine builds ([#24](https://github.com/elixir-lang/expert/issues/24)) ([51eb6f1](https://github.com/elixir-lang/expert/commit/51eb6f1523f7580e060fdc1d494872fb4909a0ee))
* windows support ([#219](https://github.com/elixir-lang/expert/issues/219)) ([d0927ce](https://github.com/elixir-lang/expert/commit/d0927ceea79989c6d9a7508ac18e75f42939627f))
* workspace folders ([#18](https://github.com/elixir-lang/expert/issues/18)) ([1204313](https://github.com/elixir-lang/expert/commit/1204313371da69029eb275235254f4d67905fa47)), closes [#136](https://github.com/elixir-lang/expert/issues/136)
### Bug Fixes
* add lsp logging when failing to find an elixir executable ([#169](https://github.com/elixir-lang/expert/issues/169)) ([4dfba22](https://github.com/elixir-lang/expert/commit/4dfba220c97651c0f2c9eaf4b1c12d22c2055f37))
* avoid crashing when calling `ActiveProjects.active?/1` ([#297](https://github.com/elixir-lang/expert/issues/297)) ([ae352b9](https://github.com/elixir-lang/expert/commit/ae352b98d739b37c6c9d5d63ad29c069425794ef))
* better handling of native<->lsp conversions ([#34](https://github.com/elixir-lang/expert/issues/34)) ([88dc456](https://github.com/elixir-lang/expert/commit/88dc4565c4069923ff958c6b7a6e541d45202806))
* bring back completions for things defined in test files ([#32](https://github.com/elixir-lang/expert/issues/32)) ([8d7a47a](https://github.com/elixir-lang/expert/commit/8d7a47af188d6e54213f704d977e25eff1150b5a))
* clamp start_char for comletion prefix ([#239](https://github.com/elixir-lang/expert/issues/239)) ([46d3446](https://github.com/elixir-lang/expert/commit/46d34461a731d0ef55f0c57980e9b67b1a0716cb))
* Crash when typing english ([#742](https://github.com/elixir-lang/expert/issues/742)) ([697eac9](https://github.com/elixir-lang/expert/commit/697eac93a6cc9e8e0cd3835504c72fcdf6208d0a)), closes [#741](https://github.com/elixir-lang/expert/issues/741)
* Current module not identified in defimpl ([#665](https://github.com/elixir-lang/expert/issues/665)) ([29f1055](https://github.com/elixir-lang/expert/commit/29f10553be303ad16918a14a4fcf96accd99e1e7))
* disable shell sessions when fetching the PATH ([#177](https://github.com/elixir-lang/expert/issues/177)) ([78236ef](https://github.com/elixir-lang/expert/commit/78236ef073c45222720c8e950e618a4289e81650))
* do not clamp character recvd from client ([#123](https://github.com/elixir-lang/expert/issues/123)) ([1a3b843](https://github.com/elixir-lang/expert/commit/1a3b843adb441da80e330d04702e3eda4d9d79ba))
* don't convert to_lsp twice in server specific messages ([#190](https://github.com/elixir-lang/expert/issues/190)) ([33bb850](https://github.com/elixir-lang/expert/commit/33bb85032e53f1adc70c67a7b518047d4f0d352e))
* don't sometimes hang ([5d6bcde](https://github.com/elixir-lang/expert/commit/5d6bcde857a2b318cf19168c7c4b6c8a4dddc63a))
* Edge case for module loading ([#738](https://github.com/elixir-lang/expert/issues/738)) ([dbbef2c](https://github.com/elixir-lang/expert/commit/dbbef2c48f655ecdfe116f157c2ffeb261083757))
* elixir path discovery ([#248](https://github.com/elixir-lang/expert/issues/248)) ([f9b119c](https://github.com/elixir-lang/expert/commit/f9b119c945f4aa3f3be7876ad7931fc52d8bf4c6))
* **engine_node:** error reason not being shown ([#277](https://github.com/elixir-lang/expert/issues/277)) ([c7b7fa8](https://github.com/elixir-lang/expert/commit/c7b7fa849ca1786f62ba2d5bdb034526fae796f0))
* **engine:** code lens exception when mix.exs not found ([#281](https://github.com/elixir-lang/expert/issues/281)) ([f9c81da](https://github.com/elixir-lang/expert/commit/f9c81da38640240e81aa97d51d1ed8ccaee08696))
* **engine:** handle failing build script ([#188](https://github.com/elixir-lang/expert/issues/188)) ([ce9ac22](https://github.com/elixir-lang/expert/commit/ce9ac22542379c8f8164f98213a3a34aad59544c))
* **engine:** support go to definition when function is called via __MODULE__ ([#261](https://github.com/elixir-lang/expert/issues/261)) ([b1d5e17](https://github.com/elixir-lang/expert/commit/b1d5e179c851e60a0308bfeab7cb2661877161d8))
* Erlang function calls in pipes were incorrectly formatted ([#476](https://github.com/elixir-lang/expert/issues/476)) ([92f1434](https://github.com/elixir-lang/expert/commit/92f1434537e6d753c28fe6a8014094ace33204e0)), closes [#475](https://github.com/elixir-lang/expert/issues/475)
* Exclude expert dependencies from completions based on project dependencies ([3a47058](https://github.com/elixir-lang/expert/commit/3a47058975610c9a480e05c4a6473966c8ddf2bf))
* **expert:** print to stderr when no transport argument provided ([#280](https://github.com/elixir-lang/expert/issues/280)) ([fc841e4](https://github.com/elixir-lang/expert/commit/fc841e48be753a5b72e1464c110226dd5f745471))
* **expert:** save new configuration after `workspace/didChangeConfiguration` ([#282](https://github.com/elixir-lang/expert/issues/282)) ([b060d23](https://github.com/elixir-lang/expert/commit/b060d2356f74ad510bb774e4c6be0a5fb5646be3))
* fix release-all command ([492022f](https://github.com/elixir-lang/expert/commit/492022fc962feb3f34fbffce173331ead8700894))
* fixup namespacing and packaging ([#29](https://github.com/elixir-lang/expert/issues/29)) ([69ac8fe](https://github.com/elixir-lang/expert/commit/69ac8fe59469b273957746794873371d01c1673f))
* formatting format incorrectly when contain special character ([#252](https://github.com/elixir-lang/expert/issues/252)) ([b5b001b](https://github.com/elixir-lang/expert/commit/b5b001b97820694256a2b730f891a4e836437437))
* Function definition extractor chokes on macro functions ([#682](https://github.com/elixir-lang/expert/issues/682)) ([ccf355f](https://github.com/elixir-lang/expert/commit/ccf355f8ca53dab5fe86009d6c2ce687ad399476)), closes [#680](https://github.com/elixir-lang/expert/issues/680)
* give proper argument to `TaskQueue.add/2` in Server.handle_message ([#791](https://github.com/elixir-lang/expert/issues/791)) ([34ee071](https://github.com/elixir-lang/expert/commit/34ee0716681eb346bffba67ce77febc047189b61))
* handle string ids in requests ([#120](https://github.com/elixir-lang/expert/issues/120)) ([5d6bcde](https://github.com/elixir-lang/expert/commit/5d6bcde857a2b318cf19168c7c4b6c8a4dddc63a))
* include erlang source files when packaging engine ([580ccc8](https://github.com/elixir-lang/expert/commit/580ccc8c1241e6ae3f8eaf1687ed87d7ab3d1895))
* inherited PATH pollutes project environment ([#298](https://github.com/elixir-lang/expert/issues/298)) ([8e1bb3d](https://github.com/elixir-lang/expert/commit/8e1bb3dc5328ddc6fcab2203767b44a92db0909a))
* Invalid reads for requests that contain multi-byte characters ([#661](https://github.com/elixir-lang/expert/issues/661)) ([f6ca36f](https://github.com/elixir-lang/expert/commit/f6ca36f7b05302e73d76ee2b8b59fa87bfcf6a31))
* let the system figure out the elixir version for the project ([#162](https://github.com/elixir-lang/expert/issues/162)) ([5dacce4](https://github.com/elixir-lang/expert/commit/5dacce456cb111b75c3f1aeeba95b66e1bc07b04))
* make sure asdf shims are in the PATH ([#87](https://github.com/elixir-lang/expert/issues/87)) ([7626f90](https://github.com/elixir-lang/expert/commit/7626f90414c0078eaeda2e03d6aaa05f3383b25e))
* Module suggestion was incorrect for files with multiple periods ([#705](https://github.com/elixir-lang/expert/issues/705)) ([824df66](https://github.com/elixir-lang/expert/commit/824df66203cbd5b4e12846130a4f8dffe0199e3a)), closes [#703](https://github.com/elixir-lang/expert/issues/703)
* nil.__struct__/0 is undefined when receiving shutdown ([#250](https://github.com/elixir-lang/expert/issues/250)) ([849003e](https://github.com/elixir-lang/expert/commit/849003e65cd6bcc5fd91ab5535c854ca4d8412b5))
* **nix:** use eval release command ([#199](https://github.com/elixir-lang/expert/issues/199)) ([25f80c8](https://github.com/elixir-lang/expert/commit/25f80c8e286ac20af5b0a6060795939c4a812859))
* Non-string test names crash exunit indexer ([#676](https://github.com/elixir-lang/expert/issues/676)) ([29373d5](https://github.com/elixir-lang/expert/commit/29373d5816ae161c4cdceb4cce9e8f1c99e065bc)), closes [#675](https://github.com/elixir-lang/expert/issues/675)
* properly log when engine fails to initialize ([#244](https://github.com/elixir-lang/expert/issues/244)) ([81e1184](https://github.com/elixir-lang/expert/commit/81e118462c83e8298c6cb39631431c2f65a1edbf))
* properly set the mix env when building expert ([4caf258](https://github.com/elixir-lang/expert/commit/4caf2581ffa480aa87de70b6b9fef20207873414))
* **release:** don't cd into rel directory before starting app ([#268](https://github.com/elixir-lang/expert/issues/268)) ([3b76e97](https://github.com/elixir-lang/expert/commit/3b76e97539a10fcfdf6a6fd24bba7fedd54fca54))
* remove erts from extra_applications ([#202](https://github.com/elixir-lang/expert/issues/202)) ([aa8bd84](https://github.com/elixir-lang/expert/commit/aa8bd84692222cfd763308815566d261430cd957))
* remove escape sequences from PATH in fish ([#237](https://github.com/elixir-lang/expert/issues/237)) ([b237fd5](https://github.com/elixir-lang/expert/commit/b237fd547a0bc3a34df2574b2d1c1fee47d1f2b6))
* Resolve doesn't recognize zero-arg defs as functions ([#606](https://github.com/elixir-lang/expert/issues/606)) ([38a649c](https://github.com/elixir-lang/expert/commit/38a649c7a6758c0c91dc350f0d7888a7b68017a6)), closes [#604](https://github.com/elixir-lang/expert/issues/604)
* revert "feat: epmdless deployments ([#167](https://github.com/elixir-lang/expert/issues/167))" ([#180](https://github.com/elixir-lang/expert/issues/180)) ([0f66faa](https://github.com/elixir-lang/expert/commit/0f66faa317fdbefd3aed407ce46c294d1f6bdec2))
* revert dev server ([#48](https://github.com/elixir-lang/expert/issues/48)) ([9345e31](https://github.com/elixir-lang/expert/commit/9345e31ea92da54c2124803223f8b50a08a53a00))
* start projects after server is initialized ([#294](https://github.com/elixir-lang/expert/issues/294)) ([76d6cd5](https://github.com/elixir-lang/expert/commit/76d6cd5570232f5725456356c9c4d29e2db090d1))
* stop sending genlsp datastructures to engine ([#31](https://github.com/elixir-lang/expert/issues/31)) ([43d406f](https://github.com/elixir-lang/expert/commit/43d406f6d46faa396269f1c7adb9ccda3e94fa29))
* Stutter when completing inside string interpolations ([#464](https://github.com/elixir-lang/expert/issues/464)) ([c73b0d0](https://github.com/elixir-lang/expert/commit/c73b0d0bf3896c3c8aa33c628d4bc1afea18aeb5)), closes [#462](https://github.com/elixir-lang/expert/issues/462)
* support Fish shell's space-separated PATH format ([#172](https://github.com/elixir-lang/expert/issues/172)) ([9803293](https://github.com/elixir-lang/expert/commit/9803293d4fe87ef1254b580b1e6aa0c833658edc))
* support Nushell for PATH detection ([#272](https://github.com/elixir-lang/expert/issues/272)) ([8a9fd3d](https://github.com/elixir-lang/expert/commit/8a9fd3dbd3552a9378548807b5d13f306ec4a92e))
* trim any quotes wrapping PATH when elixir is managed by mise ([#82](https://github.com/elixir-lang/expert/issues/82)) ([d828966](https://github.com/elixir-lang/expert/commit/d82896631c986ae57bdff47a8906c3d7bcbb22c5))
* trim PATH returned by shell ([#213](https://github.com/elixir-lang/expert/issues/213)) ([735199d](https://github.com/elixir-lang/expert/commit/735199deac03fa8a9de0a992964e9f14a1a35a66))
* use correct build directory when namespacing expert ([b6540dd](https://github.com/elixir-lang/expert/commit/b6540ddffa210acd1ac03f9d7317f8baa3bcdc70))
* use dynamic registrations and start project node asynchronously ([#30](https://github.com/elixir-lang/expert/issues/30)) ([e1ce165](https://github.com/elixir-lang/expert/commit/e1ce1655e7354dae5206e42f4fc10f86ad347b90))
* use project directory when building engine ([#203](https://github.com/elixir-lang/expert/issues/203)) ([c5ac441](https://github.com/elixir-lang/expert/commit/c5ac44164b69b0ec63d5f5b462c40ba787d9fe90))
* utf8_prefix should take into account empty lines ([#164](https://github.com/elixir-lang/expert/issues/164)) ([16c21e0](https://github.com/elixir-lang/expert/commit/16c21e087b1d6753e7fa46c13c67242c69a48e31))
### Miscellaneous Chores
* release as 0.1.0 ([7625d3c](https://github.com/elixir-lang/expert/commit/7625d3cb530897c02657837fad2b4116228346e9))
---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
2 Likes
I just noticed this gotcha with the latest Zed updates (used to work before that): there’s something called Worktree trust and unless you’ve OK’d your project no LSP server will start.
I enabled this and immediately an .expert folder was created again (I tend to delete that by hand when the LSP server is misbehaving and then restart Zed, but that didn’t work now before enabling Worktree trust)
1 Like