Skip to content

Releases: golang/vscode-go

Release v0.51.1

27 Oct 15:22

Choose a tag to compare

Release v0.51.1 Pre-release
Pre-release

This is the pre-release version of v0.52.0.

Date: 2025-10-27

Full Changelog: v0.50.0-rc.1...v0.51.1
Milestone: https://github.com/golang/vscode-go/issues?q=milestone%3Av0.52.0

Changes

  • Added a new field, 'compilerDetails', on the 'go.editorContextMenuCommands' setting that when set to true will show the "Go: Toggle compiler optimization details" command in the context menu.

Important

  • To ensure the extension remains fully compatible and stable, the required
    minimum Go version remains Go 1.23. A new notification will now be sent to help
    users running older versions upgrade to Go 1.23+.

Changse

  • Tool Management Refactoring: The extension now correctly uses the tools
    specified in the "go.lintTool" and "go.formatTool" settings.

    • Linting: The extension will now run the linter specified in "go.lintTool"
      in addition to gopls's diagnostics. If you have staticcheck enabled in both
      "go.lintTool" and gopls, you may see duplicate diagnostics. For better
      performance, we recommend using the gopls integration for staticcheck.
      You can learn more in the gopls analyzer.

      • To run the partial set of staticcheck analyzers from gopls, leave
        "go.lintTool" and "gopls.ui.diagnostic.staticcheck" unset.
      • To run the full set of staticcheck analyzers from gopls, leave
        "go.lintTool" unset and configure it through gopls:
        "gopls": {
          "ui.diagnostic.staticcheck": true
        }
      • To run the staticcheck binary, set through "go.lintTool" and disable staticcheck analyzers from gopls.
        "go.lintTool": "staticcheck",
        "gopls": {
          "ui.diagnostic.staticcheck": false
        }
    • Formatting: The extension will now use the formatter specified in
      "go.formatTool". We recommend using gopls for formatting, as it includes
      support for both gofmt and gofumpt. For configuration details, see the
      gopls formatting.

      • To format with gofumpt via gopls, leave "go.formatTool" unset or
        "default" and configure it through gopls:
        "gopls": {
          "formatting.gofumpt": true
        }
      • To format with gofmt, simply leave "go.formatTool" unset or "default".
      • To format with gofumpt binary, configure it through "go.formatTool"
        "go.formatTool": "gofumpt"

Fixes

  • Corrected an issue where clicking on a failing test in the Test Explorer would
    open a non-existent Go file (#3853). This occurred when the test
    entry point (e.g., .../foo_test.go) was in a different directory than the file
    where the failure actually occurred (e.g., .../bar/bar_test.go).

  • Fixed an issue where "go.formatTool" and "go.lintTool" were not correctly
    overridden by tools specified in "go.alternateTools" (#3861,
    #3862).

  • Resolved a problem where staticcheck was being installed automatically even
    when it was not in use (#3898).

Release v0.51.0

04 Sep 18:47

Choose a tag to compare

Release v0.51.0 Pre-release
Pre-release

This is the pre-release version of v0.52.0.

Date: 2025-09-04

Full Changelog: v0.50.0-rc.1...v0.51.0
Milestone: https://github.com/golang/vscode-go/issues?q=milestone%3Av0.52.0

v0.51.0 is a pre-release version identical to the official release v0.50.0, incorporating all the same bug fixes and improvements. This may include additional, experimental features that are not yet ready for general release. These features are still under development and may be subject to change or removal.

See release https://github.com/golang/vscode-go/releases/tag/v0.50.0 for details.

Release v0.50.0

04 Sep 14:36

Choose a tag to compare

Release v0.50.0-rc.1

03 Sep 18:49

Choose a tag to compare

Release v0.50.0-rc.1 Pre-release
Pre-release

Date: 2025-09-03

Full Changelog: v0.48.0...v0.50.0-rc.1
Milestone: https://github.com/golang/vscode-go/issues?q=milestone%3Av0.50.0

  • How to test release candidate:
    • Download the .vsix file from this Releases page.
    • Navigate to the Extensions view in VS Code (Ctrl+Shift+X). Click on the "..." in the top-right corner, select "Install from VSIX", and select the .vsix file you downloaded. Alternatively, you can run code --install-extension Go-latest.vsix or open the Command Palette and run the "Extensions: Install from VSIX..." command.
    • If prompted, reload VS Code.

Release v0.49.1

21 Aug 16:43

Choose a tag to compare

Release v0.49.1 Pre-release
Pre-release

This is the pre-release version of v0.50.0.

Date: 2025-08-21

Full Changelog: v0.48.0-rc.1...v0.49.1
Milestone: https://github.com/golang/vscode-go/issues?q=milestone%3Av0.50.0

Release v0.49.0

07 Jul 14:20

Choose a tag to compare

Release v0.49.0 Pre-release
Pre-release

This is the pre-release version of v0.50.0.

Date: 2025-07-07

Full Changelog: v0.48.0-rc.1...v0.49.0
Milestone: https://github.com/golang/vscode-go/issues?q=milestone%3Av0.50.0

v0.49.0 is a pre-release version identical to the official release v0.48.0, incorporating all the same bug fixes and improvements. This may include additional, experimental features that are not yet ready for general release. These features are still under development and may be subject to change or removal.

See release https://github.com/golang/vscode-go/releases/tag/v0.48.0 for details.

Release v0.48.0

30 Jun 14:18

Choose a tag to compare

Date: 2025-06-30

Full Changelog: v0.46.1...v0.48.0
Milestone: https://github.com/golang/vscode-go/issues?q=milestone%3Av0.48.0

Changes

  • Introduced quick pick separator in command Go: Choose Go Environment showing
    diff between options locally discovered and options available for download.
  • Added support for golangci-lint v2 (Issue 3732)
    • Added a new lint tool, golangci-lint-v2. It's added as an installable tool, so you can install it via the Go: Install/Update Tools command.
    • You can switch v1 and v2 per workspace by using golangci-lint and golangci-lint-v2 option. You must keep the golangci-lint executable version on your machine to v1 for that.
    • You can also use golangci-lint executable updated to v2. Just keep using the golangci-lint option for that.
    • The path-mode flag set by vscode-go can be overridden by thego.lintFlags option.
    • Looking for a way to format your code with golangci-lint v2 on VS Code? Check the golangci-lint documentation.

Fixes

  • Addressed an issue that caused a Cannot read properties of null (reading 'Token')
    error during command execution when the command result did not include a token.
    (Issue 3698)
  • Addressed an issue that broke the Debug Subtest At Cursor command. (Issue 3718)

Thank you to our contributors!

@logica0419 @firelizzard18 @aarzilli @madelinekalil @h9jiang

Release v0.48.0-rc.1

27 Jun 17:37

Choose a tag to compare

Release v0.48.0-rc.1 Pre-release
Pre-release

Date: 2025-06-27

Full Changelog: v0.46.1...v0.48.0-rc.1
Milestone: https://github.com/golang/vscode-go/issues?q=milestone%3Av0.48.0

  • How to test release candidate:
    • Download the .vsix file from this Releases page.
    • Navigate to the Extensions view in VS Code (Ctrl+Shift+X). Click on the "..." in the top-right corner, select "Install from VSIX", and select the .vsix file you downloaded. Alternatively, you can run code --install-extension Go-latest.vsix or open the Command Palette and run the "Extensions: Install from VSIX..." command.
    • If prompted, reload VS Code.

Release v0.47.4

23 Jun 17:21

Choose a tag to compare

Release v0.47.4 Pre-release
Pre-release

This is the pre-release version of v0.48.0.

Date: 2025-06-23

Full Changelog: v0.46.0-rc.1...v0.47.4
Milestone: https://github.com/golang/vscode-go/issues?q=milestone%3Av0.48.0

Changes

  • Introduced quick pick separator in command Go: Choose Go Environment showing
    diff between options locally discovered and options available for download.
  • Added support for golangci-lint v2 (Issue 3732)
    • Added a new lint tool, golangci-lint-v2. It's added as an installable tool, so you can install it via the Go: Install/Update Tools command.
    • You can switch v1 and v2 per workspace by using golangci-lint and golangci-lint-v2 option. You must keep the golangci-lint executable version on your machine to v1 for that.
    • You can also use golangci-lint executable updated to v2. Just keep using the golangci-lint option for that.
    • The path-mode flag set by vscode-go can be overridden by thego.lintFlags option.
    • Looking for a way to format your code with golangci-lint v2 on VS Code? Check the golangci-lint documentation.

Fixes

  • Addressed an issue that caused a Cannot read properties of null (reading 'Token')
    error during command execution when the command result did not include a token.
    (Issue 3698)
  • Addressed an issue that broke the Debug Subtest At Cursor command. (Issue 3718)

Release v0.47.3

05 Jun 17:14

Choose a tag to compare

Release v0.47.3 Pre-release
Pre-release

This is the pre-release version of v0.48.0.

Date: 2025-06-05

Full Changelog: v0.46.0-rc.1...v0.47.3
Milestone: https://github.com/golang/vscode-go/issues?q=milestone%3Av0.48.0

Changes

  • Introduced quick pick separator in command Go: Choose Go Environment showing
    diff between options locally discovered and options available for download.
  • Added support for golangci-lint v2 (Issue 3732)
    • Added a new lint tool, golangci-lint-v2. It's added as an installable tool, so you can install it via the Go: Install/Update Tools command.
    • You can switch v1 and v2 per workspace by using golangci-lint and golangci-lint-v2 option. You must keep the golangci-lint executable version on your machine to v1 for that.
    • You can also use golangci-lint executable updated to v2. Just keep using the golangci-lint option for that.
    • The path-mode flag set by vscode-go can be overridden by thego.lintFlags option.
    • Looking for a way to format your code with golangci-lint v2 on VS Code? Check the golangci-lint documentation.

Fixes

  • Addressed an issue that caused a Cannot read properties of null (reading 'Token')
    error during command execution when the command result did not include a token.
    (Issue 3698)
  • Addressed an issue that broke the Debug Subtest At Cursor command. (Issue 3718)