<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.15.0 -",
    "tvOS: 26.0.0 -",
    "visionOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "RealityKit",
  "identifier" : "/documentation/RealityKit/Component",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "RealityKit"
    ],
    "preciseIdentifier" : "s:17RealityFoundation9ComponentP"
  },
  "title" : "Component"
}
-->

# Component

A representation of a geometry or a behavior that you apply to an entity.

```
protocol Component
```

## Overview

You assemble a particular combination of behavior and appearance for an
entity by adding components to the [`components`](/documentation/RealityKit/Entity/components) set of an
[`Entity`](/documentation/RealityKit/Entity) instance. Each component, represented by a type that conforms to
the [`Component`](/documentation/RealityKit/Component) protocol, defines a single aspect of the entity. For
example, one might define a position in space, while another provides a
visual appearance. You can add at most one component of a given type to an
entity.

![Diagram showing the components present in different kinds of](images/com.apple.RealityKit/Component-1~dark@2x.png)

RealityKit has a variety of predefined component types that you can use to
add commonly needed characteristics. For example, the [`ModelComponent`](/documentation/RealityKit/ModelComponent)
specifies visual appearance with a mesh and materials. The
[`CollisionComponent`](/documentation/RealityKit/CollisionComponent) contains a shape and other information used to decide
if one entity collides with another.

You can also define custom component types. When you do, register that type
with the system by calling the new component’s
[`registerComponent()`](/documentation/RealityKit/Component/registerComponent()) method—a default implementation of which
is provided by the [`Component`](/documentation/RealityKit/Component) protocol. Call this method once before
using the component type. You don’t need to make this call for component
types that RealityKit provides.

> Tip: You can subscribe to ``doc://com.apple.RealityKit/documentation/RealityKit/ComponentEvents`` for events that
> the system triggers when you interact with components.

## Topics

### Registering a component type

[`registerComponent()`](/documentation/RealityKit/Component/registerComponent())

Registers a new component type.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)
