# Using Unity as a Library in other applications

> Includes information about integrating Unity as a library in other applications, the platforms that support this feature, and known limitations.

Unity as a Library is intended for specialist users who use native platform technologies such as Java/Android, Objective C/iOS, or Windows Win32/UWP, and want to include Unity-powered features in their games or applications.

This documentation assumes that you have experience with developing for native platform technologies such as Java/Android, Objective C/iOS, or Windows Win32/UWP, and that you are familiar with the structure of the project, language features and specific platform configuration options (for example, user permissions).

You can use Unity as a Library in other applications by integrating your content and the Unity runtime components in a native platform project. This enables you to embed content that uses 3D or 2D real-time rendering, like AR experiences, interaction with 3D models, and 2D mini-games. The Unity Runtime Library exposes ways to manage loading, activating, and unloading within the native application.

The following platforms currently support Unity as a Library:

* [Android](/engine/6000.3/manual/platform-specific/android/developing/unityasa-library.md)
* [iOS](/engine/6000.3/manual/platform-specific/iphone/ios-developing/unityasa-library-ios.md)
* [Windows](/engine/6000.3/manual/platform-specific/windows/unityasa-library.md) and [Universal Windows Platform](/engine/6000.3/manual/platform-specific/windows-store/uwp-introducing/unityasa-library-uwp.md)

To determine platform versions and other dependencies, see the [system requirements](/engine/6000.3/manual/get-started/install-and-upgrade/getting-started-installing-unity/system-requirements.md) page.

## Limitations

When hosted by another application, Unity doesn't control the runtime lifecycle, so it might not work in all scenarios. Known limitations include:

* On Android and iOS:

  * Only full-screen rendering is supported. However, if you are a Unity Industry customer, the limitations and features might differ.
  * When Unity is in an unloaded state (after calling [`Application.Unload`](/engine/6000.3/script-reference/unityengine/application/unload.md)), it retains some amount of memory (between 80-180Mb) to be able to instantly switch back and run again in the same process. The amount of memory that's not released largely depends on the device's graphics resolution.

* On iOS, if the Unity runtime quits entirely (after calling [`Application.Quit`](/engine/6000.3/script-reference/unityengine/application/quit.md)), it's not possible to reload Unity again in the same app session.

* You can't load more than one instance of the Unity runtime, or integrate more than one Unity runtime.

* You might need to adapt your [native](/engine/6000.3/manual/scripting/compilation-and-code-reload/plug-ins/native.md) and [managed](/engine/6000.3/manual/scripting/compilation-and-code-reload/plug-ins/managed.md) plug-ins to work properly.
