Reality Composer Pro 3 introduces a node-based visual scripting system called Script Graph that lets developers and designers build interactive RealityKit experiences โ including full games โ without writing any code. Features include drag gesture events, physics integration, prototyped subgraphs, custom events, and live preview directly on Vision Pro.
โข Dramatically lowers the barrier for prototyping spatial interactions: designers can wire up drag physics, custom events, and material parameter changes entirely in a visual node graph without Swift code
โข Prototyped Subgraphs enable reusable logic modules shared across multiple Script Graphs, accelerating iteration and keeping complex scenes maintainable
โข Live Preview mode streams the running simulation directly to a connected Vision Pro so you can feel real hand interactions and tune parameters like dragSpeed in real time without rebuilding
Shows the RealityKit Swift-side setup that backs a Reality Composer Pro 3 Script Graph scene: loading the .usda, adding InputTarget, Collision, HoverEffect, and PhysicsBody components to an entity so the Script Graph's On Drag and Add Force nodes have everything they need to run.
import SwiftUI
import RealityKit
// MARK: - SwiftUI entry point
@main
struct SquirrelGameApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
var body: some View {
RealityView { content in
// Load the Reality Composer Pro 3 scene bundle
// (scene contains Squirrel + Nut entities with Script Graphs attached)
guard let scene = try? await Entity(named: "SquirrelGame", in: realityKitContentBundle) else {
return
}
content.add(scene)
// Programmatically configure the Nut entity in case
// components were not set in the .usda editor
if let nut = scene.findEntity(named: "Nut") {
NutEntityConfigurator.configure(nut)
}
}
}
}
// MARK: - Component setup that mirrors the Reality Composer Pro inspector steps
enum NutEntityConfigurator {
static func configure(_ nut: Entity) {
// 1. Make the entity a gaze / pinch target
nut.components.set(InputTargetComponent())
// 2. Define the collision shape for hit-testing
nut.components.set(
CollisionComponent(
shapes: [.generateBox(size: [0.05, 0.05, 0.01])]
)
)
// 3. Visual hover highlight when the user looks at the nut
nut.components.set(HoverEffectComponent())
// 4. Physics body so the Script Graph's Add Force node works
var physics = PhysicsBodyComponent(
massProperties: .default,
material: .default,
mode: .dynamic
)
// Start with gravity on; the Script Graph will disable it on drag
physics.isAffectedByGravity = true
physics.linearDamping = 2.0
nut.components.set(physics)
// 5. A physics motion component is required for velocity queries
nut.components.set(PhysicsMotionComponent())
}
}
// MARK: - Receiving a Custom Event from the Script Graph in Swift
// In RC Pro 3 you define 'nutIsDragged' in a Custom Node Library;
// on the Swift side you can observe component changes if needed.
extension Entity {
/// Convenience: toggle gravity the way the Script Graph's
/// Set PhysicsBodyComponent node does it at runtime.
func setGravityEnabled(_ enabled: Bool) {
guard var body = components[PhysicsBodyComponent.self] else { return }
body.isAffectedByGravity = enabled
body.linearDamping = enabled ? 2.0 : 8.0
components.set(body)
}
}Liquid Glass is Apple's new material and visual design language introduced in iOS 27, bringing translucent, refractive glass-like surfaces to system and custom UI elements. It replaces the frosted vibrancy aesthetic with a more dynamic, depth-aware material that responds to content beneath it.
PaperKit is Apple's full-featured canvas framework โ previously internal-only โ now publicly available in iOS/macOS/visionOS 27. It powers the drawing and markup experience in Notes, Preview, and Freeform, giving developers access to a complete pencil, shapes, images, and text canvas with a rich data model.
Xcode 27 introduces a fully customizable toolbar and theme system, untitled scratch projects, coding agent integration directly in the editor, and the new Device Hub for evaluating apps across simulators and physical devices side-by-side.
In-depth guide
RealityKit & USDKit in iOS 27 โLive Preview ('Preview on Device') is noted as 'available later this year' in the WWDC session โ it may not ship in the initial visionOS / iOS 27 release. Public Input variables shown bold in the Inspector indicate an Override value that differs from the Script Graph default; Overrides are per-ScriptingComponent so multiple entities sharing one graph can have distinct settings. Custom Events require a Custom Node Library and a manual 'Sync Nodes' step before they appear in the node picker.
Live Preview on Device requires a paired Apple Vision Pro; Script Graph authoring runs in Reality Composer Pro 3 on macOS. Physics and gesture nodes require InputTargetComponent and CollisionComponent on target entities.
iOS 27 introduces new SwiftUI drag and drop APIs including reorderable, reorderContainer, dragContainer, and configuration modifiers that enable reordering within and across collections, multi-item drag, and fine-grained control over how data is transferred during drag and drop operations.