# Use Unity as a Library in other applications

> Integrate Unity as a Library in other applications for platforms that support this feature, and learn about the known limitations.

Use Unity as a Library to insert Unity-powered features into applications built with native platform languages, such as Java, Swift, or C++.

You can integrate your content and the Unity runtime components in native platform projects. This allows 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.

## Prerequisites

You must have experience developing for native platform technologies such as Java/Android, Objective C/iOS, or Windows Win32/UWP. You also need familiarity with the project structure, language features, and specific platform configuration options, such as user permissions.

## Supported platforms

The following platforms currently support Unity as a Library:

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

To determine platform versions and other dependencies, refer to the [system requirements](/engine/6000.6/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:

### General limitations\*\*

* You can't load or integrate more than one instance of the Unity runtime.
* You might need to adapt your [native](/engine/6000.6/manual/scripting/compilation-and-code-reload/plug-ins/native.md) and [managed](/engine/6000.6/manual/scripting/compilation-and-code-reload/plug-ins/managed.md) plug-ins to work properly with this feature.

### Android and iOS

* Unity supports only full-screen rendering. If you're a Unity Industry customer, these features and limitations differ.
* When Unity is in an unloaded state (after you call [`Application.Unload`](/engine/6000.6/script-reference/unityengine/application/unload.md)), it retains memory (between 80 and 180 MB) to instantly switch back and run again in the same process. The amount of retained memory depends on the device's graphics resolution.

### iOS only

* If the Unity runtime quits entirely (after you call [`Application.Quit`](/engine/6000.6/script-reference/unityengine/application/quit.md)), you can't reload Unity again in the same app session.

## Additional resources

* [Troubleshooting common cross-platform issues](/engine/6000.6/manual/platform-specific/cross-platform-features/considerations.md)
* [Cross-platform features and considerations](/engine/6000.6/manual/platform-specific/cross-platform-features.md)
