visionOS

How to Start Learning visionOS in 2025

Sebastian Kotarski

Sebastian Kotarski

April 16, 2025
4 min read

Where to Even Begin?

visionOS is Apple's platform for spatial computing, and it's growing fast. But if you're an iOS developer looking to get started, the amount of new concepts can feel overwhelming — RealityKit, Reality Composer Pro, immersive spaces, volumetric windows, hand tracking, spatial gestures... where do you actually start?

I've been working with AR and spatial computing for several years now, including building features with ARKit, shipping apps for Varjo XR headsets, and creating educational content around visionOS. Here's the path I'd recommend.

Step 1: Get Comfortable with SwiftUI

If you're still mostly writing UIKit, this is your first stop. visionOS is built entirely on SwiftUI — there's no UIKit equivalent for spatial apps. You don't need to master every modifier, but you should be comfortable with:

  • View composition and state management (@State, @Observable)
  • Navigation patterns (NavigationStack, NavigationSplitView)
  • Layout basics (HStack, VStack, Grid)

If you already know SwiftUI, skip ahead.

Step 2: Understand the Three Container Types

visionOS apps live in three types of containers, and understanding these is the key mental model:

  • Windows — regular 2D SwiftUI views, floating in space
  • Volumes — bounded 3D boxes where you can place RealityKit content
  • Immersive Spaces — full 3D environments that blend with or replace the real world

Most apps use a combination. Your UI lives in Windows, your 3D content lives in Volumes or Immersive Spaces.

@main
struct MyApp: App {
    var body: some Scene {
        // 2D window for controls
        WindowGroup {
            ContentView()
        }

        // 3D volume for models
        WindowGroup(id: "model-viewer") {
            ModelView()
        }
        .windowStyle(.volumetric)

        // Full immersive experience
        ImmersiveSpace(id: "immersive") {
            ImmersiveView()
        }
    }
}

Step 3: Learn RealityKit Basics

RealityKit is the 3D engine behind visionOS. You'll need to understand:

  • Entities and Components — the building blocks of every 3D scene
  • USDZ models — Apple's preferred 3D format
  • Reality Composer Pro — the tool for assembling and previewing 3D scenes
  • Anchoring — how to place content in the real world

You don't need to be a 3D artist. Start with free USDZ models from Apple's AR Quick Look Gallery and focus on loading and displaying them.

Step 4: Build Something Small

The fastest way to learn is to build. Start with a simple project:

  1. Create a visionOS app with a Window and a Volume
  2. Load a USDZ model into the Volume using RealityKit
  3. Add a tap gesture to interact with the model
  4. Add a simple animation (rotation, scaling)

This covers 80% of the concepts you'll use in real apps.

Structured Learning Resources

If you prefer a guided path, I've created two Udemy courses that cover this progression:

visionOS Fundamentals: 4-Part Course for Beginners

This is where I'd start. It's a concise course based on my YouTube tutorial series, structured for step-by-step learning with source code included. You'll learn:

  • Adding USDZ models into RealityKit using Reality Composer Pro
  • Creating orbit animations inside volumetric windows
  • Implementing realistic object spinning
  • Building creative effects with RealityKit

View the visionOS Fundamentals course on Udemy

ARKit & AI Crash Course: Build iOS 18 Apps with SwiftUI

Once you're comfortable with the basics, this course goes deeper into ARKit and AI integration — skills that translate directly to building more advanced visionOS experiences:

  • ARKit setup and world tracking
  • CoreML integration for object detection in AR
  • Building production-ready AR features
  • Combining AI with augmented reality

View the ARKit & AI course on Udemy

What About ARKit on visionOS?

If you're coming from iOS ARKit development, be aware that visionOS ARKit works differently. There's no ARSession — the system manages world tracking automatically through ARKitSession and data providers. Hand tracking replaces touch input entirely.

I've written a separate deep dive on this: visionOS Migration: What Every iOS Developer Gets Wrong.

My Advice

Don't try to learn everything at once. The progression that works:

  1. SwiftUI fundamentals
  2. visionOS container model (Windows, Volumes, Spaces)
  3. RealityKit basics with simple USDZ models
  4. Gestures and interactions
  5. ARKit on visionOS (when you need real-world anchoring)

Build small projects at each step. The concepts click much faster when you have something running in the simulator.

If you're working on a visionOS project and need help, feel free to book a call — I'm happy to discuss your specific situation.

Tags

visionOS
ARKit
RealityKit
learning

Share this article

Need Help With Your iOS Project?

I help startups and enterprises solve critical iOS, ARKit, and visionOS issues. From performance problems to app store rejections.