Neovim Config Broke After Updating to 0.12

Workaround available Windows, macOS, Linux Updated October 21, 2026

Quick answer

Neovim 0.12 removed APIs deprecated in 0.10 and changed several defaults, so old plugins and copied configs can throw Lua errors. Update plugins, fix deprecated calls from the 0.12 news, and check health.

Most likely fix: Update every plugin first.

Symptoms

E5108 Lua errors on startup, missing diagnostic signs, broken highlighting or plugins failing in setup() after upgrading.

Why it happens

  • Diagnostic signs defined with sign_define() (no longer supported)
  • Calls to vim.diagnostic.disable()/is_disabled() (removed) or old vim.diagnostic.enable() signature
  • vim.diff renamed to vim.text.diff; get_parser() returns nil instead of throwing
  • Outdated plugins, especially nvim-treesitter on the frozen master branch

How to fix it

Try these in order — the most common fix is first.

  1. 1. Update every plugin first

    1. Run :Lazy sync (or vim.pack.update())
    2. Switch nvim-treesitter to the 'main' branch config
  2. 2. Fix removed diagnostic APIs

    1. Define signs via vim.diagnostic.config({ signs = { text = { ... } } }) instead of sign_define
    2. Replace vim.diagnostic.disable() with vim.diagnostic.enable(false)
  3. 3. Find the culprit

    1. Read the full error with :messages
    2. Run :checkhealth and look for deprecation warnings
    3. Search your config for vim.diff and change it to vim.text.diff
  4. 4. Roll back if you're on a deadline

    1. Install Neovim 0.11.7 from GitHub releases and pin your plugins
    2. Upgrade later with :help news-0.12 open

This guide also covers

  • neovim 0.12 broke config
  • neovim update broke plugins
  • neovim e5108 error after update
  • neovim 0.12 breaking changes

Still not working?

If Neovim keeps failing, you're not alone. See every Neovim problem users report or the alternatives people switch to.

Other Neovim errors