Why Can’t NVDA run on Windows 10 Mobile and Windows 10 S?

With the recent news about Microsoft’s new Windows 10 S, which can only run third party apps from the Windows Store, we’ve been asked by several users whether we can make NVDA available in the Windows Store. In the past few years, users have also asked about making NVDA available for Windows 10 Mobile. Unfortunately, neither is possible. Some of you are no doubt curious as to why, so we thought we’d take a few paragraphs (and a major deviation from our normal In-Process format) to explain.

Windows 10 S is a feature-limited edition of Windows 10 targeted at education. Like Windows 10 Home and Pro, it runs on devices with Intel processors. Although it can only install apps from the Windows Store, it can run desktop apps converted using the Desktop to UWP Bridge. It was recently announced that Apple’s iTunes is coming to the Windows Store, very probably using this Desktop Bridge. This is in contrast to the earlier Windows RT, which runs on ARM processors and cannot run third party desktop apps at all.

Although the Desktop to UWP Bridge does allow many desktop apps to be converted, this is not possible for screen readers and some other assistive technology software. Screen readers such as NVDA require special privileges which are not permitted in the Windows Store, even for apps converted using the Bridge. For those interested in the technical details, this Microsoft article details the restrictions on converted desktop apps. Specifically, NVDA requires UIAccess, loads modules in-process to processes outside the app and modifies the HKEY_LOCAL_MACHINE registry hive (in order to install as an Ease of Access service). It is impossible for a screen reader to function fully without these facilities.

Windows 10 Mobile runs on devices with ARM processors. Windows 10 Mobile cannot run desktop apps at all, even those converted using the Desktop Bridge. It can only run pure UWP apps. First, it’s not possible to use Python in UWP apps, so a Windows 10 Mobile version of NVDA would have to be written from scratch; there would be no common code. Second, UWP does not provide sufficient facilities for implementing a screen reader, such as intercepting keyboard keys and touch gestures while in the background or responding to accessibility events from other apps while in the background.

We strongly believe in the importance of competition in the screen reader space. Unfortunately, it is simply not possible for third party screen readers to be made available on these platforms as things currently stand. It is our sincere hope that Microsoft will make it possible for third party screen readers to be offered on these platforms in future.