HomeKit is a powerful tool and arguably the best Smart Home System out there. It’s even more powerful than most users know because Apple Home isn’t showing you everything HomeKit can do. Some Features of HomeKit are not part of Apple Home but can be used with 3rd-party apps. On the other hand, there are things Apple Home can do but other apps can’t. These are features of HomeKit that Apple keeps to itself. By doing so, they refrain app developers from making HomeKit better.

Why should I care?

Apple keeps a monopoly on HomeKit by preventing app developers from using crucial HomeKit functions. At the same time, Apple doesn’t offer a comprehensive HomeKit experience. Leaving you as a HomeKit user with two lacking options:

Either embrace Apple Home’s take on HomeKit and miss out on many powerful features or use restrained 3rd-party apps and live with inconsistencies between them and Apple Home.

Your smart home could become better when Apple lifts these restrictions. If Apple lets us, we can build features that HomeKit users have requested for years. Of course, that’s in Apple’s interest too. They profit most from happier HomeKit users and earn money every time we sell our apps.

How can I help?

This text is part of a petition we started to make Apple aware that there are issues that harm the HomeKit community. If you care about HomeKit and want it to improve, please go to change.org. Sign and share our petition. Everyone interested in HomeKit will benefit from better 3rd-party apps, and every signature helps.

What features are restricted?

Here’s a breakdown of restricted features and why they matter.

Hidden Scenes

In 3rd-party apps, all Automations must activate a Scene. On the other hand, Apple Home can directly automate Accessories. They do this by using hidden Scenes.

That leads to a few issues for other apps:

  1. Every Automation needs a Scene, but there can only be 100 Scenes in a Home. Apple’s hidden Scenes don’t count here. Because of that, HomeKit apps are limited in how many Automations they can create.
  2. Creating Automations with hidden Scenes is often more user-friendly because users can avoid unnecessary extra steps.
  3. When an Automation uses a hidden Scene, users can see it in a 3rd-party app, but they can’t edit it.

Multiple developers, including us, have repeatedly asked Apple about this feature and why they don’t make it public. There are questions about it online going back as far as 2016. Yet there never was an adequate answer or hint of an explanation.

It’s frustrating because this issue has a considerable impact but is easily fixable. The necessary code is in HomeKit. Apple simply needs to mark it as public.

Hidden Accessories

Another issue that we constantly get feedback about is HomePods, Apple TVs, and HomeKit TVs. They are part of HomeKit and managed in Apple Home, yet Apple hides them from other apps. As a result, we cannot tell if a user has one of these devices, let alone use them for your home automation. We also can’t find out if a Scene or Automation uses a hidden Accessory. Due to this, they will inevitably be displayed incompletely in 3rd-party apps leading users to believe the apps are broken.

Again, it’s a severe limitation for 3rd-party apps, and Apple doesn’t explain it. This might be more work for Apple than the hidden Scenes, but the foundation is already part of HomeKit.

Hidden Actions

In an extension of the hidden Accessories problem, there is the problem of hidden Actions. If we can’t see an Accessory, we also can’t control it. For this reason, media playback is Apple-exclusive. Speakers and media playback are part of HomeKit, but 3rd-party apps don’t get to play with them.

However, it’s worth noting that there are also hidden Actions for Accessories that aren’t hidden. For example, iOS 14 introduced Adaptive Lighting, allowing lamps to change their color over the day. For some reason, Apple has chosen to make this an exclusive feature, even though all other Actions on lights are unrestricted.

Hidden Automation Triggers

Unlike many users believe, HomeKit apps can’t offer arbitrary triggers. Instead, HomeKit defines the supported triggers, and we use them for your Automation. Interestingly Apple doesn’t offer all options in Apple Home and even omits some commonly used triggers. But using the arrival or departure of a specific person as a trigger is something only Apple can do. 

Accessory Notifications

Apple Home allows you to receive notifications if specific characteristics of an Accessory change. Unfortunately, other apps can’t manage them or offer their own notifications. It’s only possible to access HomeKit information while an app is running. Because of this, we can’t know when to send a notification while our app is closed. We believe that Apple Home gets informed by your HomeHub when it is supposed to notify you. The other option we can think of is that Apple can access HomeKit in background mode. Either way, 3rd-party apps are not able to do the same.

Accessory Identifiers

Each Accessory has a unique identifier. With it, it’s possible to store information about an Accessory. For example, use the icon “Lamp” for the Accessory with the identifier “x”. Unfortunately, this identifier is internal and only for Apple. Other developers are not allowed to use it because of privacy concerns. Instead, there is another identifier with two severe drawbacks.

First, when you install the same app on your iPhone and iPad, the identifier for an Accessory will be different on both devices. In other words, you can’t identify an Accessory with its identifier on different devices.

Secondly, even on a single device, the identifier for an Accessory can change. We don’t know when they change, but it occurs regularly and can happen anytime. In other words, you can’t identify an Accessory on a single device over time.

Together this makes it surprisingly hard to tell Accessories apart, which is crucial for many features.

Other than most features on this list, there is a good explanation for this. A global, stable, unique identifier would make it easy to track users across apps. For example, suppose an app associates a user with such an identifier. Then other apps can identify the user if they find an Accessory with the same identifier. To avoid this, Apple decided to randomize these identifiers and, by doing so, rendered them almost useless.

However, we think there is a middle ground to be found here. Identifiers should be stable and unique for an app vendor. However, they shouldn’t be global. So, each app from the same creator gets the same identifiers. They don’t change and are the same on other devices. However, apps from another creator would get different identifiers. Alternatively, at least the identifiers for a single app should be stable to give it a functional identifier without making user tracking between apps possible.

Permission Management

Another thing only Apple can do is manage the people invited to your Home. While 3rd-party apps can open a view from Apple to invite new people, they can’t see who is invited or manage their permissions.

This could potentially be a privacy issue. However, it shouldn’t be more problematic than when you give apps access to your contacts.

Adding Accessories

3rd-party apps can add Accessories to HomeKit by opening a view from Apple that manages the process. This wasn’t much of an issue until recently when they started to force users to complete the setup process. While this can be helpful in some cases, it can also be infuriating when you add a bunch of devices. Many users dislike that behavior in Apple Home, but other apps cannot provide their own way of doing this.

What should Apple do?

I hope that explains why 3rd-party HomeKit apps can’t do some things that seem essential. While we do our best to make great apps, Apple prevents us from providing you with a complete HomeKit app.

Your smart home could become better when Apple lifts these restrictions. If Apple lets us, we can build features that HomeKit users have requested for years. Of course, that’s in Apple’s interest too. They profit most from happier HomeKit users and earn money every time we sell our apps.

So, Apple should level the playing field and give us access to all HomeKit features. The necessary code is already part of the HomeKit framework. But it’s private, so we can’t use it. There is no good reason Apple is keeping this code confidential, and Apple isn’t offering us any explanation either. 

The reasons that might be a credible explanation are security and privacy. But many of the restrictions are much less relevant here than the features already included in HomeKit. That makes this reasoning at least an inconsistent argument.

There’s also a very concerning trend here. When HomeKit first came out, everything was possible with 3rd-party apps. In fact, Apple launched Home two years after HomeKit. However, when Apple introduces new features, they increasingly tend to keep them private. HomeKit TVs, HomeKit Secure Video, and Adaptive Lighting are three recent examples. As a result, HomeKit is becoming more restrictive, and 3rd-party apps have become less viable. With iOS 16, Apple will introduce a redesigned Home App. However, there isn’t a single useful public change in the HomeKit API.

To be clear, HomeKit is a great system, but without 3rd-party apps, it’s much less attractive. Apple’s choice to restrict features is weakening HomeKit. It hurts HomeKit users, app developers, and, in the end, Apple too.

If we look into the near future, Matter is coming up. I hope Apple breaks the trend and gives the HomeKit framework some love. Matter will disrupt the Smart Home landscape, as well as HomeKit. However, with a solid 3rd-party ecosystem, I believe HomeKit will flourish.

If you agree, please sign and share our petition. Help us make HomeKit better.