First, Second and Third Party Apps
4 min read
When building experiences on platforms there are different classes of applications that can exist inside the system. From a technical perspective, systems are built in layers with the lower layers being unopinionated (e,g, the network layer doesn't care what it is sending and receiving it merely moves the bits) to the higher layers being very opinionated (e.g. UI is very specific about its role).
The application layer is a built upon the lower layers provided by the platform. It helps users do things the platform can't. Inside the application layer there are different classes of applications, each having different privileges in the system. These privileges are often subtle to end users (most would not be able to explain them to you) but are profound for the teams working on them.
First party
The most privileged class is first party apps. These are experiences built by the maker of the platform. They get access to the platform at a deep level. They can make calls to private APIs, can access system resources at a deep level and may be able to dictate future features or capabilities of the platform. They are preinstalled and therefore get free distribution. They are often set as the default application for their use cases and in some instances can not be uninstalled or replaced by the user.
The camera app in iOS is a good example of a first party app. It is the default camera, gets privileged entry points on lock screens. It is able to influence hardware in terms of lenses and sensors. It can not be replaced by a third party app as the default.
First party apps behave like extensions of the platform/operating system. They live in the app layer but have a level of integration into the platform that is unique.
Second Party
Second party apps are built by the maker of the platform or built by third party developers in deep collaboration with the platform. This collaboration includes being subsidized or wholly paid to build for the platform. 2nd party developers gain advance access to APIs, hardware or systems. They have some awareness of the future roadmap that enables them to plan features in advance.
Second party applications may be preinstalled but still need to fight for distribution and engagement like any application. They do not get to dictate the roadmap of the platform, especially hardware decisions. They lack the deep platform integrations that first party apps get.
Third Party
Any developer who can access the SDK/API of the platform is a third party developer. They need to compete with every other developer on the platform for market share. They need to generate distribution and engagement with little help from the platform. Occasionally, they will be competing directly with 1st and 2nd party applications. If this is the case they need to find unique value in the system
Each class of developer wants the privileges of the one above it. Even first party developers want the control that the platform/OS team has. Internally, second party teams will be frustrated that they basically have the same privileges as any third party developer. They get resentful that they don't get more free distribution or advantage inside the platform.
This creates a healthy tension between these applications and the platform who needs to balance all the needs across the system. The platform needs to maintain a complex ecosystem where value moves around and requires constant recalibration.