TestMDM 2.0 is now live!

It’s been two years since the release of TestMDM 1.0. Today, I unleash version 2.0 onto the world!

Whilst the aim and core functionality of TestMDM hasn’t changed, I’ve completely overhauled the UI, both from a visual perspective and a usability persepective.


TestMDM 1 used the popular Bootstrap CSS framework and relied on KnockoutJS for interactivity in the UI.

With version 2.0, I decided to use the opportunity to learn ReactJS. This provides what’s called a Single Page Application approach. When you open the dashboard, you should notice that opening a device is very fast and smooth. The UI is completely self contained and doesn’t reply on ASP.Net to generate it each time.

I’ve also opened for the CSS framework called Semantic-UI. Bootstrap is great, but I fancied a change and I like the clean lines and components offered by Semantic-UI.


The biggest change to TestMDM is the way you interact with it. In version 1.0, the focus was around commands. Creating them, sending them, waiting for them to be acknowledged. This was an effort to keep the app aligned with the actualy behaviour of the MDM protocol that underpins iOS.

Whilst it worked well and nobody complained, it always seemed a little repedative. For example, when you are testing configuration, you had to constantly select PList files and queue them, in spite of the fact you probably only made a tiny change to the configuration itself.

In version 2.0, I decidd to move the focus back to the devices and apps, which is what you actually work, rather than commands.

Devices are easier to add now, you only need to scan a QR code or send an SMS. This should make the process a whole lot easier


Once the device has been added, you’ll see a dashboard.


The Device dashboard now shows some detail. You can see what apps are installed, delete the device or clear any pending commands (I’m going to get rid of this soon!).

This will be the place where you can also install configuration profiles and potentially alter other bits and pieces, depending on what you, the user, wants.

When you install an app, you’ll see a clear indication of what’s actually happening






This, I hope, will clear up any confusion about what’s going on and should the installation fail, you’ll get feedback pretty quickly. I should point out that this progress bar isn’t finished and does report some odd stuff, but I’m working on improving this.

When you select an app, you’ll now be taken to a dedicated app page, giving you a single place to manage configuration and feedback.


This let’s you tinker with the configuration directly, without needing to edit a file and resubmit.


In my own testing, this has been the biggest time saver of all.

Another benefit of having a the application broken out like this is the fact you can now bookmark pages for devices and even apps. This will it easy to get back to where you were and carry on testing.

What’s Next?

This is just the initial release, so some features are missing. I’ve turned off the VPP part, since I want to rework it in the same fashion, making it easier to understand (and hiding some of the complexity).

I’m also building an internal admin page for myself, which will let me respond to user issues with more speed.

With this tool proving pretty useful, I’ve got some ideas for exposing an external API and potentially creating an OS X Client so that builds of your IPA can be automatically passed to TestMDM for processing. Think of how TestFlight used to monitor for builds. I’ve never written an OS X app before, so that would be interesting, if nothing else.

All in all, I hope you like this update. Please keep the feedback coming.

Thanks for your support and custom!