Allowlisted Components in VRChat Worlds

VRChat maintains an allowlist of scripts and components that can be used in uploaded worlds. VRChat's documentation states that a component outside the list will not work in a world.

Use the official Allowlisted World Components list for the current component-by-component answer. This guide explains how to apply that list when importing Unity assets, reading SDK errors, and testing PC and Android builds.

Component Compatibility Check

Inspect unfamiliar components before building a world system around them.

  1. Find the exact component type in the Unity Inspector.
  2. Search VRChat's current allowlist for that type and read any linked restrictions.
  3. Run the SDK Builder and test the uploaded world on every target platform.
VRChat note

Unity Play mode is not proof that a component will work after upload. The Unity editor can execute ordinary MonoBehaviour scripts and editor tooling that VRChat does not permit in a world build.

What the Allowlist Covers

The official list groups permitted components into these categories:

Category Examples on the official list
Unity components Renderers, colliders, audio, particles, terrain, navigation, constraints, UI, and video
VRChat components Scene Descriptor, Pipeline Manager, stations, mirrors, spatial audio, contacts, and PhysBones
TextMesh Pro Text, input, dropdown, submesh, and related UI components
Unity Event System EventSystem, raycasters, input modules, and event triggers
Unity UI Buttons, toggles, sliders, layout groups, masks, images, and scroll views
Post Processing Stack V2 Post-process layer, volume, and debug components
AVPro Media player display, audio output, subtitles, and material/mesh output
Oculus Spatializer Supported Oculus spatial-audio components
Final IK A defined set of Final IK components with VRChat-specific behaviour

The official page is the complete list. Category membership alone does not permit every component from a package or namespace.

Check an Imported Prefab

An asset can be compatible with ordinary Unity projects without being compatible with VRChat worlds.

  1. Import the asset into a backed-up project or a separate test project.
  2. Select the prefab root.
  3. Expand every child in the Hierarchy.
  4. Inspect the components on each GameObject.
  5. Record unfamiliar component type names exactly as Unity displays them.
  6. Search the official VRChat allowlist.
  7. Check the Console for missing scripts or compile errors.
  8. Open the VRChat SDK Builder and read the validation messages.

Imported-asset decision table

Finding Action
Every required component is allowlisted Continue to SDK and runtime testing
A required MonoBehaviour is not allowlisted Replace the system or use a supported Udon/UdonSharp implementation
An optional unsupported component is present Remove it from a test copy and verify the prefab still works
The asset contains editor-only tooling Keep editor tooling out of the runtime scene and validate the built world
A component is deprecated Migrate to the replacement linked by VRChat
The prefab has missing scripts Restore the dependency or remove the broken component deliberately

Do not remove an unknown script from the production prefab before understanding what it controls. Work in a backup or test copy.

Common VRChat World Components

These VRChat components appear on the current official allowlist:

Component Typical role
VRC_SceneDescriptor Defines the scene as a VRChat world and exposes world settings
VRCPipelineManager Stores the content blueprint association used by the SDK
VRC_SpatialAudioSource Adds VRChat-specific spatial-audio configuration
VRC_MirrorReflection Provides a VRChat mirror
VRC_Station Defines a station or seat
VRC_AvatarPedestal Displays an avatar pedestal
VRC_MidiListener Receives supported MIDI input
VRC_UiShape Marks compatible world-space UI interaction surfaces
VRCContactSender and VRCContactReceiver Provide world contact interactions subject to shape limits
VRCPhysBone, VRCPhysBoneCollider, and VRCPhysBoneRoot Provide supported secondary-motion components
Unity Inspector showing a VRChat world object with VRC Scene Descriptor, Pipeline Manager, and Udon Behaviour components.
The Inspector exposes the exact component types that must be checked against VRChat's documentation.

Required World Setup Is a Separate Question

Being allowlisted does not make a component required. A basic VRChat world needs a scene prepared through the Worlds SDK, including a VRC_SceneDescriptor. Other components are added only when the world uses their features.

Likewise, an allowlisted component is not automatically:

  • performant
  • networked
  • supported on every platform
  • configured correctly
  • suitable for the intended interaction

The allowlist answers whether the component can be used. Its own documentation and runtime tests answer how it behaves.

UdonSharp Is Not an Ordinary MonoBehaviour

VRChat includes UdonSharp in the Worlds SDK. An UdonSharp script inherits from UdonSharpBehaviour and compiles C# into Udon Assembly.

This differs from importing an arbitrary Unity script that inherits from MonoBehaviour:

Script type VRChat world workflow
UdonSharpBehaviour Compiles to Udon and uses the APIs exposed to UdonSharp
Udon Graph program Runs through the Udon VM
Ordinary runtime MonoBehaviour Does not become supported merely because it compiles in Unity
Custom editor script May assist authoring in Unity but must not be treated as world runtime behaviour

UdonSharp does not expose every C# or Unity API. Check VRChat's UdonSharp documentation and Class Exposure Tree before designing around a library or method.

Deprecated Components

The official allowlist currently marks these older systems:

Deprecated component Current direction
VRC_IKFollower Use VRChat Constraints or supported Unity Constraints
DynamicBone Use VRChat PhysBones
DynamicBoneCollider Use VRChat PhysBone Colliders
Post Processing Stack v1 Use the supported Post Processing Stack v2 components listed by VRChat

Do not introduce a deprecated system into a new world simply because the component remains listed for compatibility.

Shape and Component Limits

VRChat attaches maximum-shape restrictions to:

  • VRCContactReceiver
  • VRCContactSender
  • VRCPhysBone
  • VRCPhysBoneCollider

An allowlisted type can therefore still fail validation or behave incorrectly when its configuration exceeds a documented limit. Follow the component-specific page linked from VRChat's allowlist.

Final IK Behaviour

VRChat's allowlist includes a defined set of Final IK components, but VRChat states that its Final IK implementation is highly modified. Custom Final IK configurations are not directly supported or tested and may not behave as external Final IK documentation describes.

Test the exact behaviour in an uploaded world. Do not rely on Unity Play mode alone for Final IK validation.

PC and Android Differences

VRChat's allowlist page explicitly notes that Android has exceptions. A component appearing on the main allowlist does not prove that it will behave identically on PC, Android phones, iOS, or Meta Quest.

For a cross-platform world:

  1. Switch the project to the intended platform.
  2. Read the platform-specific SDK validation results.
  3. Build and test the PC version.
  4. Build and test the Android version.
  5. Compare interactions, media, shaders, post processing, audio, and performance.

Use platform-specific alternatives or conditional world design when a feature is unavailable.

Use the SDK Builder

Open VRChat SDK → Show Control Panel → Builder before upload.

VRChat SDK Builder showing world metadata, validation alerts, and build controls.
Resolve validation alerts before treating the world as ready for a runtime test.

For each error:

  1. Read the full message.
  2. Select or locate the referenced GameObject.
  3. Identify the exact component type.
  4. Check whether it is allowlisted.
  5. Follow the component documentation or replace the unsupported system.
  6. Run validation again.

Warnings still require review even when they do not block the build.

Runtime Test Checklist

Test What it proves
SDK validation The project passes the SDK's current pre-build checks
Local Build & Test The component survives the VRChat build and runs in the client
Second client or user Networked behaviour is visible to another player
Late join State is correct for someone joining after interaction
Instance master change Ownership-dependent behaviour recovers correctly
PC build Desktop runtime behaviour works
Android build Mobile runtime behaviour and limitations are understood
Re-enter world Initialization remains correct after a fresh load

The allowlist does not test networking or persistence. Those behaviours must be validated separately.

Troubleshooting

A component works in Unity but is absent after upload.

Find its exact type in the Inspector and search the current official allowlist. Ordinary Unity scripts can execute in Play mode without being permitted in the VRChat runtime.

The SDK reports an unsupported script on an imported prefab.

Identify what the script controls. Replace it with a supported Udon or UdonSharp system, use the publisher's VRChat-specific version, or remove the feature from a backed-up test copy.

The prefab contains missing MonoBehaviour entries.

Check the asset's documented dependencies and import order. Restore the required package when it is supported, or remove the broken component deliberately after confirming the prefab does not need it.

An allowlisted component still fails SDK validation.

Read the full validation message and the component-specific documentation. The type may be permitted while its configuration, count, shape, dependency, or target-platform use is invalid.

The component works on PC but not Android.

Check VRChat's Android exceptions and the platform-specific SDK results. Replace the feature, provide an Android alternative, or remove it from the mobile build.

My UdonSharp script cannot access a Unity class or method.

Check the UdonSharp Class Exposure Tree and supported-language documentation. UdonSharp compiles to Udon and does not expose every normal C# or Unity API.

A deprecated component still appears on the allowlist.

Allowlisting can preserve compatibility without recommending the component for new work. Follow VRChat's linked replacement guidance for the current system.

Final IK behaves differently after upload.

VRChat uses a modified Final IK implementation and does not directly support custom implementations. Test the allowlisted configuration in-world and redesign behaviour that depends on unsupported assumptions.

Next Steps

Official References

Topics: VRChat world components, component allowlist, UdonSharp, SDK validation, Android worlds