Skip to content

Enforce Windows 10 requirement for NVDA#18688

Merged
seanbudd merged 41 commits intonvaccess:masterfrom
josephsl:win10Requirement
Aug 26, 2025
Merged

Enforce Windows 10 requirement for NVDA#18688
seanbudd merged 41 commits intonvaccess:masterfrom
josephsl:win10Requirement

Conversation

@josephsl
Copy link
Copy Markdown
Contributor

@josephsl josephsl commented Aug 13, 2025

Link to issue number:

Closes #18684

Summary of the issue:

NVDA 2025.3 and earlier requires Windows 8.1. With 2026.1 and with Python 3.13 dropping active support for Windows 8.1, NVDA will now require Windows 10 (1507) or later.

Description of user facing changes:

Notable changes include:

  • System requirement set to Widows 10 (in code and in user-facing documentation)
  • Windows OneCore will be used as default speech synthesizer.

Description of developer facing changes:

The following changes were made:

  • SConscript: Windows subsystem set to Windows 10
  • winVersion: removed recognition of Windows 8.1 (the constant itself is deprecated) and minimum version set to Windows 10
  • Removed winVersion.WIN10 checks from the source code, including speech synthesizer list (OneCore is used by default)

Description of development approach:

Edited the NVDA source code to remove checks on winVersion.WIN10, similar to the approach taken in #15544 and friends.

Testing strategy:

Manual and tests: Windows 10 is set as minimum required Windows release.

Known issues with pull request:

Additional work on Windows 10 system requirments will be done in future pull requests, including making Windows OCR available by default.

Code Review Checklist:

  • Documentation:
    • Change log entry
    • User Documentation
    • Developer / Technical Documentation
    • Context sensitive help for GUI changes
  • Testing:
    • Unit tests
    • System (end to end) tests
    • Manual testing
  • UX of all users considered:
    • Speech
    • Braille
    • Low Vision
    • Different web browsers
    • Localization in other languages / culture than English
  • API is compatible with existing add-ons.
  • Security precautions taken.
  • NV Access note: When merging, also make changes to the server to prevent those on Win 8.1 from being served updates to 2026.1+

@coderabbitai summary

Notes:

  • This is an API breaking change in winVersion module where minimum version will return winVersion.WIN10 (and thus add-on API compatibility checkbox is not checked).

Remove Windows 10 check from text change event check.
Remove RichEdit60 and Windows version check as Windows 10 or later is required to run NVDA.
Remove RichEdit60 and Windows version check as Windows 10 or later is required to run NVDA.
…ure desktop activation.

NVDA runs on Windows 10 and later, therefore remove Widows version check when determining secure desktop activation.
@josephsl josephsl requested review from a team as code owners August 13, 2025 06:01
@josephsl
Copy link
Copy Markdown
Contributor Author

Hi,

Actually, Windows OCR is out of scope as it relies on path availability, not Windows release.

Thanks.

@seanbudd seanbudd added this to the 2026.1 milestone Aug 13, 2025
Review comment from Sena Budd (NV Access): add type hint (returns bool) for isSupportOS. Take this time to add type hints for other functions as well.
Review comment from Sean Budd (NV Access): starting with NVDA 2026.1, Windows 10 will not be under active support from NVDA, therefore update system requirements as follows:
* Minimum: Windows 10 (no active support). Note the fact that Windows 10 is the last release to support 32-bit systems.
* Recommended: Windows 11 and SErver 2025.
@josephsl
Copy link
Copy Markdown
Contributor Author

Hi,

Technically, it is premature to say that Windows Server 2022 is not under active support. But as far as GitHub Actions goes, Server 2025 is the image NV Access uses (Server 2022 is supported until 2031).

Tanks.

Co-authored-by: Leonard de Ruijter <3049216+LeonarddeR@users.noreply.github.com>
@gerald-hartig
Copy link
Copy Markdown
Contributor

Thanks everyone for the discussion, and great work on this PR @josephsl.
We've reached a decision on the Windows support policy. We will be moving forward with a two-tiered model:

  • Minimum requirement: Windows 10 (all versions) and Windows Server 2016.
  • Recommended: Windows 11 (Windows Server 2025) and Windows 10 22H2 (Windows Server 2022).

The key reasons for this are:

  1. It aligns with our mission to support users for as long as is technically feasible.
  2. The "Recommended" tier clarifies for users where our focus is for testing and bug triage.

@josephsl, can you please update this PR to:

  • Set the minimum required version in the code to Windows 10 (1507).
  • Update the user documentation (user guide, changelog) to reflect the new Minimum and Recommended policy.

Removing the blocked/needs-product-decision label.

@gerald-hartig gerald-hartig removed blocked blocked/needs-product-decision A product decision needs to be made. Decisions about NVDA UX or supported use-cases. labels Aug 20, 2025
@josephsl
Copy link
Copy Markdown
Contributor Author

Hi,

The code already requires Windows 10 (1507), so all that needs to be done would be editing docs (user guide and what's new) and the PR should be ready for another round of review. The bit on removing Windows 8.x start screen workaround would be the follow-up to this (I need to separate these two tasks for now so I can concentrate on school first, then once things settle (likely in September), I'll work on start screen workaround removal upon NV Access's blessing).

Thanks.

…10 and 11 (and 10 22H2) are minimum and recommended versions, respectively.
* Minimum: Windows 10 (Version 1507), Server 2016 and later
* Recommended: Windows 10 22H2, Windows 11, Server 2022 and 2025
@josephsl
Copy link
Copy Markdown
Contributor Author

Hi,

Follow-up task: in addition to Start screen workaround removal (Windows 8.x), can we review the NVDA source code and mark (and remove) code needed for Windows releases prior to Windows 10 please?

Thanks.

@seanbudd
Copy link
Copy Markdown
Member

@josephsl - Feel free to open an issue or PR to remove legacy Windows 8 code. Please make sure to do it in small PRs/issues rather than all in one.

@Qchristensen
Copy link
Copy Markdown
Member

In the changes.md document it has: "We recommend using Windows 11, or if that is not possible, the latest Windows 10 release (Version 22H2). (#18684, @josephsl)"

In the recommended system requirements of the user guide, it has:
Operating Systems: Windows 10 (Version 22H2), Windows 11, and Windows Server 2022 and 2025.

Should we use similar wording in both places? IE, the way I read the changes doc clearly tells me "You should definitely have Windows 11 or failing that, the latest Windows 10", whereas reading the user guide recommended specs says to me "Either Windows 10 22h2 or Windows 11 is fine - no preference either way".

Or are we happy for that changes comment explicitly preferencing Windows 11 to be simply a comment even though it reads slightly differently to what is in the user guide? (Personally yes if someone asked me what they should look for in a new computer, I would encourage them to Windows 11, but in terms of which we actively work on fixes for, as Gerald noted, both Windows 10 22h2+ and Windows 11. (I'm not sure if I have a recommendation, so just making this a comment rather than a specific suggestion for a change of wording)

Co-authored-by: Sascha Cowley <16543535+SaschaCowley@users.noreply.github.com>
@seanbudd
Copy link
Copy Markdown
Member

@josephsl - do you have any thoughts on @Qchristensen latest comment?

@josephsl
Copy link
Copy Markdown
Contributor Author

Hi,

I think using the same wording across what's new and the user guide would be better, although what's new is less verbose and less detailed than the user guide (and keeping the wording the same can hep translators).

Thanks.

@seanbudd seanbudd merged commit 47a2cbf into nvaccess:master Aug 26, 2025
1 of 2 checks passed

#### Deprecations

* `winVersion.WIN81` constant has been deprecated from the `winVersion` module. (#18684, @josephsl):
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* `winVersion.WIN81` constant has been deprecated from the `winVersion` module. (#18684, @josephsl):
* `winVersion.WIN81` constant has been deprecated from the `winVersion` module. (#18684, @josephsl)

@josephsl josephsl deleted the win10Requirement branch September 11, 2025 13:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support Windows 10 or later

6 participants