<!--
{
  "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/Event",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "RealityKit"
    ],
    "preciseIdentifier" : "s:17RealityFoundation5EventP"
  },
  "title" : "Event"
}
-->

# Event

A type that can be sent as an event.

```
protocol Event : Sendable
```

## Overview

RealityKit provides a number of events you can subscribe to.
The system notifies you whenever the event type occurs.

For example, you can subscribe to [`CollisionEvents.Began`](/documentation/RealityKit/CollisionEvents/Began)
to know when two objects begin colliding,
or [`SceneEvents.Update`](/documentation/RealityKit/SceneEvents/Update) every time the scene redraws.

To subscribe to an event from inside of a [`RealityView`](/documentation/RealityKit/RealityView) builder, call
one of the [`RealityViewContentProtocol`](/documentation/RealityKit/RealityViewContentProtocol) `subscribe` methods, for example
[`subscribe(to:on:_:)`](/documentation/RealityKit/RealityViewContentProtocol/subscribe(to:on:_:)).

Here’s an example of subscribing to the event [`CollisionEvents.Began`](/documentation/RealityKit/CollisionEvents/Began), which occurs when two entities collide:

```swift
struct RealityGame: View {

    @State var collisionSubscription: EventSubscription?

    var body: some View {
        RealityView { content in
            // Create an entity with model and collision components.
            let model = ModelComponent(
                mesh: MeshResource.generateBox(size: .one / 10),
                materials: [SimpleMaterial(color: .red, isMetallic: false)]
            )
            let collision = CollisionComponent(shapes: [ShapeResource.generateBox(size: .one / 10)])
            let collisionEntity = Entity(components: model, collision)
            content.add(collisionEntity)

            // Subscribe to collision began event.
            collisionSubscription = content.subscribe(
               to: CollisionEvents.Began.self,
               on: collisionEntity,
               self.onCollisionBegan
           )
        }
    }
    private func onCollisionBegan(_ event: CollisionEvents.Began) {
        print("collision started")
        let firstEntity = event.entityA // The entity whose collisions you're subscribing to.
        let secondEntity = event.entityB // Another entity in the scene.
        // Respond to collision event...
    }
}
```

> Note: Add a ``doc://com.apple.RealityKit/documentation/RealityKit/CollisionComponent`` to any entities you want to detect collisions for.

## Relationships

### Conforming Types

[`CustomAction`](/documentation/RealityKit/AccessibilityEvents/CustomAction)

[`DidAdd`](/documentation/RealityKit/ComponentEvents/DidAdd)

[`Activate`](/documentation/RealityKit/AccessibilityEvents/Activate)

[`OwnershipChanged`](/documentation/RealityKit/SynchronizationEvents/OwnershipChanged)

[`ViewingModeDidChange`](/documentation/RealityKit/VideoPlayerEvents/ViewingModeDidChange)

[`RotorNavigation`](/documentation/RealityKit/AccessibilityEvents/RotorNavigation)

[`ImmersiveViewingModeDidTransition`](/documentation/RealityKit/VideoPlayerEvents/ImmersiveViewingModeDidTransition)

[`TransitionStarted`](/documentation/RealityKit/ImagePresentationEvents/TransitionStarted)

[`DidUpdateTransform`](/documentation/RealityKit/ManipulationEvents/DidUpdateTransform)

[`WillBegin`](/documentation/RealityKit/ManipulationEvents/WillBegin)

[`VideoComfortMitigationDidOccur`](/documentation/RealityKit/VideoPlayerEvents/VideoComfortMitigationDidOccur)

[`Decrement`](/documentation/RealityKit/AccessibilityEvents/Decrement)

[`WillRemoveEntity`](/documentation/RealityKit/SceneEvents/WillRemoveEntity)

[`BeforeUpdate`](/documentation/RealityKit/ClothSimulationEvents/BeforeUpdate)

[`PlaybackStarted`](/documentation/RealityKit/AnimationEvents/PlaybackStarted)

[`PlaybackLooped`](/documentation/RealityKit/AnimationEvents/PlaybackLooped)

[`Updated`](/documentation/RealityKit/CollisionEvents/Updated)

[`PlaybackCompleted`](/documentation/RealityKit/AnimationEvents/PlaybackCompleted)

[`RenderingChanged`](/documentation/RealityKit/GaussianSplatEvents/RenderingChanged)

[`ContentTypeDidChange`](/documentation/RealityKit/VideoPlayerEvents/ContentTypeDidChange)

[`WillSimulate`](/documentation/RealityKit/PhysicsSimulationEvents/WillSimulate)

[`NewBodyCollisions`](/documentation/RealityKit/ClothColliderEvents/NewBodyCollisions)

[`WillDeactivateEntity`](/documentation/RealityKit/SceneEvents/WillDeactivateEntity)

[`OwnershipRequest`](/documentation/RealityKit/SynchronizationEvents/OwnershipRequest)

[`SpatialVideoModeDidChange`](/documentation/RealityKit/VideoPlayerEvents/SpatialVideoModeDidChange)

[`Increment`](/documentation/RealityKit/AccessibilityEvents/Increment)

[`ImmersiveViewingModeDidChange`](/documentation/RealityKit/VideoPlayerEvents/ImmersiveViewingModeDidChange)

[`SkeletalPoseUpdateComplete`](/documentation/RealityKit/AnimationEvents/SkeletalPoseUpdateComplete)

[`ImmersiveViewingModeWillTransition`](/documentation/RealityKit/VideoPlayerEvents/ImmersiveViewingModeWillTransition)

[`PlaybackCompleted`](/documentation/RealityKit/AudioEvents/PlaybackCompleted)

[`AnchoredStateChanged`](/documentation/RealityKit/SceneEvents/AnchoredStateChanged)

[`WillDeactivate`](/documentation/RealityKit/ComponentEvents/WillDeactivate)

[`WillUnanchor`](/documentation/RealityKit/AnchorStateEvents/WillUnanchor)

[`Start`](/documentation/RealityKit/ClothSimulationEvents/Start)

[`TransitionCompleted`](/documentation/RealityKit/ImagePresentationEvents/TransitionCompleted)

[`Ended`](/documentation/RealityKit/CollisionEvents/Ended)

[`Began`](/documentation/RealityKit/CollisionEvents/Began)

[`DidActivateEntity`](/documentation/RealityKit/SceneEvents/DidActivateEntity)

[`WillRemove`](/documentation/RealityKit/ComponentEvents/WillRemove)

[`PlaybackTerminated`](/documentation/RealityKit/AnimationEvents/PlaybackTerminated)

[`DidActivate`](/documentation/RealityKit/ComponentEvents/DidActivate)

[`NewBodyIntersections`](/documentation/RealityKit/ClothQueryVolumeEvents/NewBodyIntersections)

[`Update`](/documentation/RealityKit/SceneEvents/Update)

[`NewSimulationPositions`](/documentation/RealityKit/ClothBodyEvents/NewSimulationPositions)

[`AfterUpdate`](/documentation/RealityKit/ClothSimulationEvents/AfterUpdate)

[`RootMotionDidUpdate`](/documentation/RealityKit/AnimationEvents/RootMotionDidUpdate)

[`DidHandOff`](/documentation/RealityKit/ManipulationEvents/DidHandOff)

[`DidAddEntity`](/documentation/RealityKit/SceneEvents/DidAddEntity)

[`RenderingStatusDidChange`](/documentation/RealityKit/VideoPlayerEvents/RenderingStatusDidChange)

[`VideoSizeDidChange`](/documentation/RealityKit/VideoPlayerEvents/VideoSizeDidChange)

[`PlaybackGroupCompleted`](/documentation/RealityKit/AudioEvents/PlaybackGroupCompleted)

[`DidChange`](/documentation/RealityKit/ComponentEvents/DidChange)

[`DidReparentEntity`](/documentation/RealityKit/SceneEvents/DidReparentEntity)

[`TrackingStateUpdate`](/documentation/RealityKit/SceneEvents/TrackingStateUpdate)

[`DidSimulate`](/documentation/RealityKit/PhysicsSimulationEvents/DidSimulate)

[`WillEnd`](/documentation/RealityKit/ManipulationEvents/WillEnd)

[`DidFailToAnchor`](/documentation/RealityKit/AnchorStateEvents/DidFailToAnchor)

[`DidAnchor`](/documentation/RealityKit/AnchorStateEvents/DidAnchor)

[`WillRelease`](/documentation/RealityKit/ManipulationEvents/WillRelease)

### Inherits From

[`Sendable`](/documentation/Swift/Sendable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

---

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)