2025-11-09
As of November 2025, version 0.12.0 is still a prerelease development build
I'll share some of my thoughts and examples on vim.pack and whether it would be worth doing the switch already. This is primarily just an introductory of basic usage of plugins and of my experience with vim.pack. If you notice any inconsistencies or problems in this article, feel free to contact me with recommendations.
My full neovim config can be found at github.com/proxcb/nvim, It contains a barebone (at the time of this post) configuration for development which is easy to expand on, I'm still primarily using Helix so I will be adding to it over time.
Documentation can be found with :help vim.pack
Installing plugins is very straightforward:
vim.pack.add({
-- Install plugin
"https://github.com/coolplugin-org/coolplugin",
-- Or with a table
{ src = "https://github.com/windwp/nvim-autopairs" },
{ src = "https://github.com/L3MON4D3/LuaSnip" },
{ src = "https://github.com/Saghen/blink.cmp" }
})
You can do more with this, such as defining a version or a name but that is irrelevant for me.
Lazy loading can be done as well:
-- load immediately
-- require("nvim-autopairs").setup({})
vim.api.nvim_create_autocmd("InsertEnter", {
callback = function()
vim.cmd("packadd nvim-autopairs")
require("nvim-autopairs").setup({})
end,
})
File structure:
nvim/
├─ lua/
│ └─ plugins/
│ └─ lsp.lua
└─ init.lua
lsp.lua using mason:
vim.pack.add{
{ src = 'https://github.com/neovim/nvim-lspconfig' },
{ src = 'https://github.com/mason-org/mason.nvim' },
{ src = 'https://github.com/mason-org/mason-lspconfig.nvim' },
{ src = 'https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim' },
}
require('mason').setup()
require('mason-lspconfig').setup()
require('mason-tool-installer').setup({
-- Define languages
ensure_installed = {
"lua_ls",
"clangd",
"pyright"
}
})
And requiring lsp.lua within init.lua
require('plugins.lsp')
Primarily why I wanted to give vim.pack a try is because I wanted something native and fairly straightforward to use. vim.pack has definitely succeeded with that for me even if it is a prerelease build. The roadmap for neovim does show that the 0.12 release will be when vim.pack goes on the main development branch. At the moment we are in 0.11 so it shouldn't be too long of a wait.
I'd suggest anybody to give vim.pack a try if they are not fully content with their current plugin manager.
As I said before there's fairly good documentation already on vim.pack if you run :help vim.pack on the prerelease build of neovim.