RealityKit updates
Learn about important changes in RealityKit.
Overview
Browse notable changes in RealityKit.
June 2025
General
Create hover effect groups to indicate entities that need to highlight together using HoverEffectComponent.GroupID.
Present popovers from volumes using PresentationComponent.
Manually create instances of entities using MeshInstancesComponent.
Animate entities implicitly using animate(_:body:completion:).
Create and modify attachments in a more streamlined fashion using ViewAttachmentComponent.
Make entities render behind real-world objects based on depth using EnvironmentBlendingComponent.
Implement post-processing effects using RealityViewPostProcessEffect and PostProcessEffectContext.
Attach models together using attach(_:to:).
TextureResource now supports AVIF textures and entities you load from USDZ files that contain AVIF textures using init(named:in:) so they render correctly.
Load entities from Data objects using init(from:configurations:).
Image presentation
Generate spatial scenes using ImagePresentationComponent.Spatial3DImage and present them (along with 2D images and spatial photos) using ImagePresentationComponent.
Receive notifications related to presenting images using ImagePresentationEvents.
Use Model3DAsset with Model3D to play animations in Model3D Views.
ARKit integration
Receive updates about ARKit anchors directly in RealityKit using AnchorStateEvents and SceneEvents.TrackingStateUpdate.
SwiftUI integration
Use SwiftUI implicit animations using the Animation modifier with RealityKit entities and components.
Keep SwiftUI state in sync with RealityKit state using Entity.Observable.
Present USD variants in Model3D using Entity.ConfigurationCatalog.
Specify the frame sizing and alignment option for RealityView using RealityViewLayoutOption.
Video presentation
Play spatial video, 180°, 360°, wide-FOV APMP video, and Apple Immersive Video in VideoPlayerComponent.
Retrieve the loading status when playing video using VideoPlayerComponent with currentRenderingStatus.
Receive notifications when a video stops playing due to a comfort violation using VideoPlayerEvents.VideoComfortMitigationDidOccur.
Gestures and entity interaction
Implement six degree of freedom (6DOF) gestures for manipulating entities using ManipulationComponent.
Leverage GestureComponent to support gestures on individual entities.
June 2024
General
Add artistic lights and shadows to your visionOS app with PointLightComponent, DirectionalLightComponent, SpotLightComponent, and DynamicLightShadowComponent.
Manage spatial tracking in your app with the SpatialTrackingSession.
Use LowLevelMesh to efficiently bring your mesh data to RealityKit, including custom vertex attributes, formats, and layouts.
Use an AnimationLibraryComponent to store associated animations with an entity that plays the animations.
Create an IKComponent to animate a skeletal model with an inverse kinematics IKComponent.Solver.
Use an AudioLibraryComponent to store associated audio with an entity that plays the audio.
Stream generated audio in real time with AudioGeneratorController.
Manage the meshes on your blend shapes with BlendShapeWeightsComponent.
Create more engaging sound effects by configuring rolloff and reverb with the SpatialAudioComponent.
Customize hover effects when using HoverEffectComponent, such as spotlight styles, highlight styles, or shader-backed hover effects for additional control over hover behaviors.
Models and materials
Optimize material initialization with a CustomMaterial.Program to compile backing shaders.
Use init(from:) to efficiently update custom texture data in RealityKit, including custom pixel formats, texture types, swizzle, and texture usage.
Create cube texture resources with init(cubeFromEquirectangular:named:quality:faceSize:options:) or init(cubeFromImage:named:options:).
Access additional texture resource properties: arrayLength, depth, pixelFormat, and textureType.
Add a clearcoat to your custom materials with clearcoatNormal.
Physics and simulations
Apply force effects on rigid bodies with the ForceEffect.
Create simulations such as hinge and slider joints with PhysicsJoint.
Immersive environments
Anchor dockable videos by attaching a DockingRegionComponent to your entity.
Peer into other immersive worlds with a PortalComponent, and allow objects from that world to enter yours with PortalCrossingComponent.
Further control the lighting in your environment with EnvironmentLightingConfigurationComponent.
See Also
Technology and frameworks
Accelerate updatesAccessibility updatesActivityKit updatesAdAttributionKit UpdatesApp Clips updatesApp Intents updatesAppKit updatesApple Intelligence updatesAppleMapsServerAPI UpdatesApple Pencil updatesARKit updatesAudio Toolbox updatesAuthenticationServices updatesAVFAudio updatesAVFoundation updates