Skip to content

Publish regular pre-release builds to VS Code Marketplace #1751

Description

@eitsupi

We currently publish a development VSIX to a GitHub pre-release on every push to master, but users cannot opt into automatic pre-release updates through the VS Code Marketplace.

We cannot simply publish the current version such as 3.0.0-rc.0: Marketplace pre-releases still require a plain major.minor.patch version and do not support SemVer pre-release identifiers.

I propose that we:

  • define a Marketplace-compatible versioning scheme for 3.x pre-releases;
  • regularly publish development builds with vsce publish --pre-release;
  • keep normal stable releases unchanged.

This would make testing upcoming 3.x releases much easier without requiring users to manually download and install VSIX files.

Activity

  1. added this to the 3.x milestone on Sep 22, 2026
  2. grantmcdermott commented on Sep 22, 2026

    @grantmcdermott
    Contributor

    I support this. But if not (or perhaps in addition), we should at least do a better job of telling people how to install the development version from GitHub. I'd probably just add a folded details section to the README, e.g.

    Install dev version from GitHub
    curl -fsSL \
      https://github.com/REditorSupport/vscode-R/releases/download/latest/vscode-R.vsix \
      -o vscode-R.vsix
    code --install-extension vscode-R.vsix
  3. self-assigned this
    on Sep 26, 2026
  4. removed their assignment
    on Oct 4, 2026
  5. renkun-ken commented on Oct 6, 2026

    @renkun-ken
    Member

    Publishing development builds through the VS Code Marketplace's pre-release channel would make it easier for users to try the latest features and give maintainers more timely feedback before stable releases.

    The existing pre-release workflow already updates the GitHub latest release after successful verification of a push to main. The README documents downloading that VSIX and installing it manually, but users still need to repeat those steps to stay current.

    I suggest extending this workflow to publish verified builds to the pre-release channel of the existing REditorSupport.r Marketplace listing. Users could then select Switch to Pre-Release Version in VS Code and receive subsequent pre-release updates automatically.

    The implementation should:

    • Preserve the existing build, lint, and test gates before publication.
    • Assign unique, increasing Marketplace-compatible versions, accounting for version ordering between pre-release builds and stable releases.
    • Document how to opt in, return to the release version, and report feedback with the extension version and reproduction steps.

    This would make testing upcoming features more accessible and help us catch regressions earlier across users' real environments.

  6. eitsupi commented on Oct 6, 2026

    @eitsupi
    MemberAuthor

    I looked into how some existing VS Code extensions handle Marketplace-compatible pre-release versions.

    I think a daily pre-release, published only when main has changed since the previous one, would be sufficient. We could reserve odd minor versions for pre-releases and even minor versions for stable releases, for example:

    3.0.1          stable
    3.1.20261006   pre-release
    3.1.20261007   pre-release
    ...
    3.2.0          stable
    

    This follows the odd/even minor scheme recommended by VS Code while keeping the patch useful as the build date. A future major release could similarly reserve a high odd minor such as 3.999.<date> before 4.0.0.

    Some prior art:

    • GitHub Pull Requests generates nightly versions programmatically as <major>.<odd minor>.<YYYYMMDDHH>. Its build script creates a temporary package manifest rather than changing the committed stable version.
    • Python has code for generating a numeric timestamp-derived patch version (1<Julian day><hour><minute>) for pre-release builds; its current pipeline delegates versioning to Microsoft's shared build templates.
    • Konveyor Editor Extensions also reserves odd minors for pre-releases, but computes the patch by scanning existing Git tags and incrementing it sequentially.
    • TypeScript-Go injects the Marketplace version only while packaging, using vsce ... --pre-release --no-update-package-json, so the generated pre-release version does not need to be committed to package.json.

    For vscode-R, I would favor the GitHub Pull Requests approach: generate a date-based version in the release workflow and use it only for the Marketplace artifact. The existing development VSIX could still be updated on every verified push, independently of the daily Marketplace pre-release.

  7. modified the milestones: 3.x, 3.2.0 on Oct 6, 2026
  8. Fred-Wu commented on Oct 6, 2026

    @Fred-Wu
    Contributor

    Would that distinguish stable but bug fix and feature updates?

  9. eitsupi commented on Oct 6, 2026

    @eitsupi
    MemberAuthor

    Would that distinguish stable but bug fix and feature updates?

    Looks like:

    3.0.1          stable
    3.1.20261006   pre-release
    
    3.0.2          stable bug-fix release
    3.1.20261007   pre-release
    
    3.0.3          stable bug-fix release
    3.1.20261008   pre-release
    
    3.2.0          next stable feature release
    3.3.20261009   pre-release
    
  10. added a commit that references this issue on Oct 7, 2026
    32f198e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions