Apple have just rejected an application being updated on their app store due to “non-public API usage”. This generally means the application used an non-official or undocumented API on their system and this is not allowed. There are a variety of reasons for this, such as guaranteeing the application will run in the future if that API call is changed or removed, or it could be that the app is intended for Apple’s usage only. Why is this relevant at all? Well last month Apple deprecated OpenGL support and using Vulkan with MoltenVK was one such work around for supporting iOS and Mac OS 3D in the future without having to write your own Metal renderer. That makes the timing of this news suspect. This leaves three possible outcomes. First, the developer could have made a mistake. Second, the MoltenVK team may in fact be using APIs they shouldn’t be. Or finally, Apple may be trying to force people into their developer ecosystem by targeting a cross platform tool.
The original notice of the app’s reject and MoltenVK usage was posted on phoronix.com:
We were alerted today by an indie game studio that one of their iOS games is now rejected by Apple over its MoltenVK usage. Specifically, the game was rejected for "non-public API" usage. Apple's rejection letter cites the use of non-public interfaces around IOSurface, which is used directly by MoltenVK.
There is also now an open issue on the MoltenVK github, which is most likely where this story will unfold. If you are looking for alternatives to writing your own Metal renderer, be sure to check out our guide to OpenGL alternatives. Just realize that MoltenVK may not be as good of a recommendation as it was before!