Microsoft's Office apps for Android, iOS include surprising ties to Windows API

The Office apps for Android and iOS appear to have deep ties to the Windows API. A programmer going by the name of "Longhorn" and I recently took apart the Office applications for Android and iOS and inspected their code and content. This process is known as reverse-engineering. We found that they have a lot in common with the versions found on Windows 10 Mobile, and in some cases, with Windows 10, depending on the version you use.

Virtualised registry

Longhorn and I noticed that if you dig into the apps, you see that they offer almost identical Virtualized Registry Containers (VRC) as Universal Windows Platform (UWP) apps. What are VRCs? They are essentially copies of a system registry which are sandboxed and secured so they don't have contact with the system itself, so they don't break anything.

And what is a registry? The registry is essentially a database of different system settings and configurations that the apps need to access in order to adjust to specific system configurations and respect settings the user has set. The registry is built deep into Windows itself and has been since Windows 3.1. As this is a Windows component, iOS and Android do not include their own registries in the system, which leads to these VRCs to be present in the Office apps. By having a registry, these apps prove that they have some kind of Windows sub-system built in, which also explains the mediocre performance the Office apps offer.

Every UWP app, including Project Centennial apps, has its own registry so it doesn't mess with the system registry, bloat it down and break functionality like some incompatible legacy programs do. These registry containers are not actually necessary for UWP apps to work, but they are there for security and performance reasons. This is not the case with Android and iOS, making the VRCs obligatory for the apps to function at all.

Microsoft libraries

Image credit:

Image credit:

The performance of the Office apps on both iOS and Android has never been perfect. It's not bad, however, and navigating through the apps is pretty snappy. But the boot times can be slow and take a couple of seconds to open. This could have been blamed on poor coding, but if you count the compatibility layer Microsoft is using, it all fits into the puzzle. Xamarin, a powerful cross-platform tool which Microsoft bought last year, is pretty infamous among developers for its poor performance, because running the same code on completely different platforms is not an easy task.

Microsoft developed a powerful compatibility layer, allowing Windows components to run on other OSes, similarly to what "Wine is not an emulator" (Wine) has been doing for many years on platforms such as Linux, BSDs, macOS and even Android. The concept is the same: Running Windows applications on non-Windows-NT based systems. With this project, Microsoft developed multiple libraries that all bring a small part of Windows, and those libraries are:

  • lib7zofficeassetdecoder.
  • libd2d1.
  • libplat.
  • libd3d10warp.
  • libdwrite.
  • libmsxml.
  • librichedit.
  • libxmllite.
  • libstg.

These names may not tell you much, and while some of them are less interesting, one rendered us speechless: libplat.

libplat includes a good chunk of the Windows API which essentially creates a Windows environment right on your device. We didn't have much luck in capturing the iOS libraries. However, based on the virtual registry found in iOS and the identical behavior of the apps, we suspect that the case is the same for iOS. This Windows-like environment that Office creates is not visible to the user, but it's definitely there in the background. A regular consumer would not notice any difference between UWP-like apps like these and native ones, which is a good thing because it means the porting technology is well done.

lib7zofficeassetdecoder is responsible for the long time spent on the first launch, and a launch after an update. Office on Android is so big that libraries and UI assets are compressed. This is the cause of the huge storage requirement boost after first launching the apps.

These heavy libraries are accompanied by other libraries, such as libd3d10warp, which is the most promising one out of all of these because it includes DirectX rendering, which could lead to something really big one day.


DirectX is a very powerful graphics API. It's the core of virtually every game you've played on Windows or Xbox, and it's one of the biggest reasons why Windows has a gaming dominance over other platforms like macOS and Linux. This API has been discovered in Office for Android and iOS, under the library "libd3d10warp," as well, which is also interesting.

The DirectX rendering found in Office is still only software-based rendering, which means it's far from usable for things like games or GPU intensive tasks, but it does use the Windows Advanced Rasterization Platform (WARP). WARP is a full-featured Direct3D 10.1 renderer device, which is a very efficient implementation of software rendering and it definitely gets the job done for smaller things like rendering Office. The Office apps may be slow, but they are butter smooth with consistent frame rates and enjoyable animations, wall thanks to WARP.

This DirectX rendering could one day evolve from being just a software-based rendering system to a full-fledged hardware-rendered graphics API, which would open up a whole new world of possibilities for iOS and Android developers.

What does this mean for consumers and developers?

There is no official documentation of the technology used behind the Office apps, but this could change in the future. Microsoft already has the Xamarin development environment. However, it's not really a way of running UWP apps on other platforms because it requires writing the applications you want to be cross-platform from scratch. If this project ever gets released to the public, it could mean full UWP apps running on every major platform in the world.

As Windows 10 Mobile is slowly dying, and the chances of it ever reaching a major market share decreasing, Microsoft may be look for a way to boost developer interest in UWP. And putting this trojan horse inside Apple's and Google's popular mobile platforms may be exactly what Microsoft needs.

Dennis Bednarz

Dennis Bednarz is a former writer for Windows Central and the guy behind ModMy. He has been a recognised member of the Microsoft community for years and owns everything from Lumia phones to Surface PCs. He occasionally likes to rant about Windows Phone and drink tea. You can go ahead and follow him on Twitter at @DennisBednarz

  • IF MS can provide a development environment that allows developers to target all mobile platforms with a single code base using the UWP API, and.. IF perforamnce doesn't suck, and IF that is built in a way that can viably be released to 3rd party developers.. then that would instantly bring Windows 10 Mobile back, because that's when a platform that is restricted to running only pure UWP apps again becomes viable. Still, those are very big IF's.  
  • These IFs are enormous! I've never seen......Look at the sheer size of them!
  • How is an OS dying when it is in active development? The whole Windows 10 on phones project is in active development. Dennis, are you confusing software development (the life of an OS) with OS market share? If so, please don't. Software development (the "life" of software) is determined by it's creator and Windows 10 Mobile, more importantly, Windows on phones, as of today, isn't any where near dying as Microsoft is actively developing Windows for phones, whether it will be Windows 10 Mobile, full Windows 10 on ARM or whatever Microsoft names it. Marketshare does not kill a product. The maker of that product can keep it going with 0% marketshare if they decide to or they can kill it with 90% marketshare, if they decide to. An OS slowly dying would mean that the creator of the OS is ceasing development and Microsoft, as of today, has not ceased development of Windows 10 Mobile and all info thus far points to the continued presence of Windows on phones as a part of Microsoft's broad Windows 10 vision.
  • Again,  I can use my RT devices...however that does NOT mean that RT is NOT dead.   I even got an update for it.   But,  im not silly enough,  or dumb enough to think RT is ALIVE AND KICKING.....Its the same thing with windows 10 Mobile.  There is no active development at this time...thats why they moved to featureless 2.
  • The Windows RT OS is dead. Just like Windows Phone 8.1 is dead (last OS development was 8.1 Update). There isn't any OS development for RT, if anything at all, a security patch may have been released. You using RT has nothing to do with the OS being alive or dead, OS development or lack thereof is life or death of an OS. I still use Symbian and Symbian is dead. It doesn't matter who uses it or the marketshare, what matters is if the OS is in development by the creator of the OS. Windows 10 Mobile is not dead as it is still in development. When development of Windows 10 Mobile ceases, then, it too, will be dead. I didn't say anything about "alive and kicking" so you can use a play on words and expressions all you you want to but the fact of the matter is that Windows 10 Mobile and on a larger scale, Windows on phones is not dead. We all have an opinion, I choose to state, and stick to the facts.
  • Buy don't worry now. Their leak means we'll get 16212+ builds.
  • He said "active in developpement" right ?
  • We just had RS3 build on HP X3 with CShell running. W10M is alive and kicking.
  • 10 Mobile is dying. That doesn't mean there's nothing new being developed, of course.
  • It's in active development, sheesh.
  • W10M is dead, but Windows 10 CShell and Windows 10 UWP apps are in active development ;)
  • CShell is not an OS, it is a shell, or UI that runs on top of Windows 10, just like explorer.exe has ran on top of desktop Windows for decades. Without the underlying OS CShell cannot run. To have CShell on phones, you need an OS, whether that OS is Windows 10 Mobile or full Windows 10 for ARM, that is the question. As of today, the OS is Windows 10 Mobile that CShell is running on for phones.
  • You are confusing an alive OS and an OS that's still supported just because it's a side product of the bigger ecosystem. W10M not dead but slowly dying that's reality.
  • It's a Bednarz article. He's the anti-Ward of WC. Much more of a pessimist when compared in that regard. His assertion is that it is dying. Others disagree. Matter of (fruitless) opinion at this point. Don't get me wrong, I appreciate the contrast. Sometimes some of the other contributors write pieces that are a bit too "glowing".
  • MS will provide a development environment for every platform and Office apps are only the showcase apps from Microsoft. Wait some time before MS officially announce this.
  • Let's hope the emulation layer is fast enough...
  • It's NOT emulation, and that's what makes it so incredible.
  • It still needs to access (a lot of?) special libraries, doesn't it?
  • Correct. It has a lot of libs included, and the performance is okay at best, but it's definitely not emulation. Emulating something is so much easier than running it natively on another OS.
  • Good article.
  • Except someone that reports on Windows would know that the registry was introduced in Windows 95 and NT.
  • Except that the registry was introduced in COM components for Windows 3.X, not Windows 95. It became consumer available in Windows 95, indeed but it wasn't it's first debut.
  • Very nice article. I believe what you're thinking will come true. MS has already shown us some of that during build 2017.
  • You make specific choices in this article that make me not like you... 😒
  • I'm always having an opinion about Microsoft that they are having a strategy to run UWP apps on Android and iOS. If Windows on arm comes to life, we will get some more sight into this.
  • Hmm, can you back up this statement? > Xamarin, a powerful cross-platform tool which Microsoft bought last year, is pretty infamous among developers for its poor performance, because running the same code on completely different platforms is not an easy task. See,    
  • Exactly. As soon as i read that statement I had to come and see if anybody else has challenged it. Here is another article from 2015. I can only assume things have improved more since then.
    These benchmarks show that Xamarin has very good performance (beating Java on Android, and Objective-C on iOS -- slower than Swift though)
  • I'm backing this up with the countless discussions with Developers I had, and their complaints about it. Benchmarks don't mean much. It's about the app responsiveness, boot speed and more, which is what the user cares about. Virtually, every Xamarin developer I've spoken too complains that it's sluggish.
  • Hi
  • My Nokia Lumia 720 not support to windows 10 what to do give me an idea to other techniques to install..
  • Still hoping for a new Windows phone someday. Used pixel for a year and went back my backup HTC Windows. Couldn't play games I wanted to and all the ads were BS. Come on you guys almost $700 for that phone shouldn't see one ad. Such crap!!!;
  • Smule