Apple

Introducing the 2024 Apple Design Award winners

Every year, the Apple Design Awards recognize innovation, ingenuity, and technical achievement in app and game design. The incredible developers behind this year’s finalists have shown what can be possible on Apple platforms — and helped lay the founda...
Apple

Action packed.

One week to go. Don’t miss the exciting reveal of the latest Apple software and technologies.Keynote kicks off at 10 a.m. PT on June 10.Add to calendarJoin us for the Platforms State of the Union at 1 p.m. PT on June 10.Add to calendarLearn more
Apple

Introducing the 2024 Apple Design Award finalists

Every year, the Apple Design Awards recognize innovation, ingenuity, and technical achievement in app and game design.
But they’ve also become something more: A moment to step back and celebrate the Apple developer community in all its many forms. Mee...
Apple

Coming in swiftly.

Join the worldwide developer community for an incredible week of technology and creativity — all online and free. WWDC24 takes place from June 10-14.Get ready
Apple

Check out the new Apple Developer Forums

The Apple Developer Forums have been redesigned for WWDC24 to help developers connect with Apple experts, engineers, and each other to find answers and get advice.
Apple Developer Relations and Apple engineering are joining forces to field your questio...
Apple

Hello Developer: May 2024

It won’t be long now! WWDC24 takes place online from June 10 through 14, and we’re here to help you get ready for the biggest developer event of the year. In this edition:
Explore Pathways, a brand-new way to learn about developing for Apple platforms....
Apple

Q&A with the SharePlay team

SharePlay is all about creating meaningful shared experiences in your app. By taking advantage of SharePlay, your app can provide a real-time connection that synchronizes everything from media playback to 3D models to collaborative tools across iPhone,...
Apple

Check out our newest developer activities

Join us around the world to learn about growing your business, elevating your app design, and preparing for the App Review process. Here’s a sample of our new activities — and you can always browse the full schedule to find more.
Expand your app to new...
Apple

Get ready with the latest beta releases

The beta versions of iOS 17.5, iPadOS 17.5, macOS 14.5, tvOS 17.5, visionOS 1.2, and watchOS 10.5 are now available. Get your apps ready by confirming they work as expected on these releases. And to take advantage of the advancements in the latest SDKs...
Apple

Updated App Review Guidelines now available

The App Review Guidelines have been revised to support updated policies, upcoming features, and to provide clarification. The following guidelines have been updated:
3.1.1(a): Updated to include Music Streaming Services Entitlements.
4.7: Added games ...
Apple

Hello Developer: April 2024

Welcome to Hello Developer — and the kickoff to WWDC season. In this edition:
Discover what’s ahead at WWDC24 — and check out the new Apple Developer YouTube channel.
Learn how the all-new Develop in Swift Tutorials can help jump-start a career in app ...
Apple

Knotwords: Gage and Schlesinger at the crossroads

Knotwords is a clever twist on crossword puzzles — so much so that one would expect creators Zach Gage and Jack Schlesinger to be longtime crossword masters who set out to build themselves a new challenge. One would be totally wrong.“Crosswords never h...
Apple

WWDC24: June 10-14

Join the worldwide developer community online for a week of technology and creativity.Be there for the unveiling of the latest Apple platforms, technologies, and tools. Learn how to create and elevate your apps and games. Engage with Apple designers an...
Apple

Provide your trader status in App Store Connect

To align with the Digital Services Act (DSA) in the European Union (EU), Account Holders and Admins in the Apple Developer Program can now enter their trader status in App Store Connect.Submission requirementsYou’ll need to let us know whether or not y...
Apple

Uncovering the hidden joys of Finding Hannah

On its surface, Finding Hannah is a bright and playful hidden-object game — but dig a little deeper and you’ll find something much more.The Hannah of Finding Hannah is a 38-year-old Berlin resident trying to navigate career, relationships (including wi...
Apple

Q&A with the Mac notary service team

Security is at the core of every Apple platform. The Mac notary service team is part of Apple Security Engineering and Architecture, and in this Q&A, they share their tips on app distribution and account security to help Mac developers have a posit...
Apple

Hello Developer: March 2024

Welcome to Hello Developer. In this edition:
Find out what you can do at the Apple Developer Centers in Bengaluru, Cupertino, Shanghai, and Singapore.
Learn how the team behind Finding Hannah created a hidden-object game with a meaningful message.
Ge...
Apple

Updates to app distribution in the European Union

Over the past several weeks, we’ve communicated with thousands of developers to discuss DMA-related changes to iOS, Safari, and the App Store impacting apps in the European Union. As a result of the valuable feedback received, we’ve revised the Alterna...
Apple

The latest OS Release Candidates are now available

You can now submit your apps and games built with Xcode 15.3 and all the latest SDKs for iOS 17.4, iPadOS 17.4, macOS 14.4, tvOS 17.4, visionOS 1.1, and watchOS 10.4.Developers who have agreed to the Alternative Terms Addendum for Apps in the EU can no...
Apple

Updated App Review Guidelines now available

The App Store Review Guidelines have been revised to support updated policies, upcoming features, and to provide clarification.
The title of the document has been changed to App Review Guidelines.
The Introduction section explains that in the European ...
Apple

Privacy updates for App Store submissions

Developers are responsible for all code included in their apps. At WWDC23, we introduced new privacy manifests and signatures for commonly used third-party SDKs and announced that developers will need to declare approved reasons for using a set of APIs...
Apple

App submissions now open for the latest OS releases

Submit in App Store ConnectiOS 17.4, iPadOS 17.4, macOS 14.4, tvOS 17.4, visionOS 1.1, and watchOS 10.4 will soon be available to customers worldwide. Build your apps and games using the Xcode 15.3 Release Candidate and latest SDKs, then test them usin...
Apple

Developer activities you’ll love

Apple developer activities are in full swing. Here’s a look at what’s happening:
Join an online session to learn to minimize churn and win back subscribers hosted by App Store experts.
Celebrate International Women’s Day with special in-person activiti...
Apple

Q&A with the Apple UX writing team

Writing is fundamental — especially in your apps and games, where the right words can have a profound impact on your experience. During WWDC23, the Apple UX writing team hosted a wide-ranging Q&A that covered everything from technical concepts to i...
Apple

Hello Developer: February 2024

Welcome to the first Hello Developer of the spatial computing era. In this edition: Join us to celebrate International Women’s Day all over the world, find out how the Fantastical team brought their app to life on Apple Vision Pro, get UX writing advic...
Apple

Get ready with the latest beta releases

The beta versions of iOS 17.4, iPadOS 17.4, macOS 14.4, tvOS 17.4, and watchOS 10.4 are now available. Get your apps ready by confirming they work as expected on these releases. And to take advantage of the advancements in the latest SDKs, make sure to...
Apple

Update on apps distributed in the European Union

We’re sharing some changes to iOS, Safari, and the App Store, impacting developers’ apps in the European Union (EU) to comply with the Digital Markets Act (DMA). These changes create new options for developers who distribute apps in any of the 27 EU me...
Apple

Updated App Store Review Guidelines now available

The App Store Review Guidelines have been revised to support updated policies, upcoming features, and to provide clarification. We now also indicate which guidelines only apply to Notarization for iOS apps in the European Union.The following guidelines...
Apple

Swift Student Challenge applications open February 5

We’re so excited applications for the Swift Student Challenge 2024 will open on February 5.Looking for some inspiration? Learn about past Challenge winners to gain insight into the motivations behind their apps.Just getting started? Get tools, tips, an...
Apple

StoreKit and review guideline update

Starting today, because of a recent United States Court decision, App Store Review Guideline 3.1.1 has been updated to introduce the StoreKit Purchase Link Entitlement (US), which allows apps that offer in-app purchases in the iOS or iPadOS App Store o...
Apple

Hello Developer: January 2024

Welcome to Hello Developer. In this Apple Vision Pro-themed edition: Find out how to submit your visionOS apps to the App Store, learn how the team behind djay approached designing for the infinite canvas, and get technical answers straight from Apple ...
Apple

Q&A: Building apps for visionOS

Over the past few months, Apple experts have fielded questions about visionOS in Apple Vision Pro developer labs all over the world. Here are answers to some of the most frequent questions they’ve been asked, including insights on new concepts like entities, immersive spaces, collision shapes, and much more.How can I interact with an entity using gestures?There are three important pieces to enabling gesture-based entity interaction:

The entity must have an InputTargetComponent. Otherwise, it won’t receive gesture input at all.
The entity must have a CollisionComponent. The shapes of the collision component define the regions that gestures can actually hit, so make sure the collision shapes are specified appropriately for interaction with your entity.
The gesture that you’re using must be targeted to the entity you’re trying to interact with (or to any entity). For example:
private var tapGesture: some Gesture {
TapGesture()
.targetedToAnyEntity()
.onEnded { gestureValue in

let tappedEntity = gestureValue.entity

print(tappedEntity.name)
}
}It’s also a good idea to give an interactive entity a HoverEffectComponent, which enables the system to trigger a standard highlight effect when the user looks at the entity.Should I use a window group, an immersive space, or both?Consider the technical differences between windows, volumes, and immersive spaces when you decide which scene type to use for a particular feature in your app.
Here are some significant technical differences that you should factor into your decision:

Windows and volumes from other apps the user has open are hidden when an immersive space is open.
Windows and volumes clip content that exceeds their bounds.
Users have full control over the placement of windows and volumes. Apps have full control over the placement of content in an immersive space.
Volumes have a fixed size, windows are resizable.
ARKit only delivers data to your app if it has an open immersive space.

Explore the Hello World sample code to familiarize yourself with the behaviors of each scene type in visionOS.How can I visualize collision shapes in my scene?Use the Collision Shapes debug visualization in the Debug Visualizations menu, where you can find several other helpful debug visualizations as well. For information on debug visualizations, check out Diagnosing issues in the appearance of a running app.Can I position SwiftUI views within an immersive space?Yes! You can position SwiftUI views in an immersive space with the offset(x:y:) and offset(z:) methods. It’s important to remember that these offsets are specified in points, not meters. You can utilize PhysicalMetric to convert meters to points.What if I want to position my SwiftUI views relative to an entity in a reality view?Use the RealityView attachments API to create a SwiftUI view and make it accessible as a ViewAttachmentEntity. This entity can be positioned, oriented, and scaled just like any other entity.RealityView { content, attachments in

// Fetch the attachment entity using the unique identifier.
let attachmentEntity = attachments.entity(for: "uniqueID")!

// Add the attachment entity as RealityView content.
content.add(attachmentEntity)

} attachments: {
// Declare a view that attaches to an entity.
Attachment(id: "uniqueID") {
Text("My Attachment")
}
}Can I position windows programmatically?There’s no API available to position windows, but we’d love to know about your use case. Please file an enhancement request. For more information on this topic, check out Positioning and sizing windows.Is there any way to know what the user is looking at?As noted in Adopting best practices for privacy and user preferences, the system handles camera and sensor inputs without passing the information to apps directly. There's no way to get precise eye movements or exact line of sight. Instead, create interface elements that people can interact with and let the system manage the interaction. If you have a use case that you can't get to work this way, and as long as it doesn't require explicit eye tracking, please file an enhancement request.When are the onHover and onContinuousHover actions called on visionOS?The onHover and onContinuousHover actions are called when a finger is hovering over the view, or when the pointer from a connected trackpad is hovering over the view.Can I show my own immersive environment textures in my app?If your app has an ImmersiveSpace open, you can create a large sphere with an UnlitMaterial and scale it to have inward-facing geometry:struct ImmersiveView: View {
var body: some View {
RealityView { content in
do {
// Create the sphere mesh.
let mesh = MeshResource.generateSphere(radius: 10)

// Create an UnlitMaterial.
var material = UnlitMaterial(applyPostProcessToneMap: false)

// Give the UnlitMaterial your equirectangular color texture.
let textureResource = try await TextureResource(named: "example")
material.color = .init(tint: .white, texture: .init(textureResource))

// Create the model.
let entity = ModelEntity(mesh: mesh, materials: [material])
// Scale the model so that it's mesh faces inward.
entity.scale.x *= -1

content.add(entity)
} catch {
// Handle the error.
}
}
}
}I have existing stereo videos. How can I convert them to MV-HEVC?AVFoundation provides APIs to write videos in MV-HEVC format.
To convert your videos to MV-HEVC:

Create an AVAsset for each of the left and right views.
Use AVOutputSettingsAssistant to get output settings that work for MV-HEVC.
Specify the horizontal disparity adjustment and field of view (this is asset specific). Here’s an example:
var compressionProperties = outputSettings[AVVideoCompressionPropertiesKey] as! [String: Any]

// Specifies the parallax plane.
compressionProperties[kVTCompressionPropertyKey_HorizontalDisparityAdjustment as String] = horizontalDisparityAdjustment

// Specifies the horizontal FOV (90 degrees is chosen in this case.)
compressionProperties[kCMFormatDescriptionExtension_HorizontalFieldOfView as String] = horizontalFOV
Create an AVAssetWriterInputTaggedPixelBufferGroupAdaptor as the input for your AVAssetWriter.
Create an AVAssetReader for each of the left and right video tracks.
Read the left and right tracks, then append matching samples to the tagged pixel buffer group adaptor:
// Create a tagged buffer for each stereoView.
let taggedBuffers: [CMTaggedBuffer] = [
.init(tags: [.videoLayerID(0), .stereoView(.leftEye)], pixelBuffer: leftSample.imageBuffer!),
.init(tags: [.videoLayerID(1), .stereoView(.rightEye)], pixelBuffer: rightSample.imageBuffer!)
]

// Append the tagged buffers to the asset writer input adaptor.
let didAppend = adaptor.appendTaggedBuffers(taggedBuffers,
withPresentationTime: leftSample.presentationTimeStamp)How can I light my scene in RealityKit on visionOS?You can light your scene in RealityKit on visionOS by:

Using a system-provided automatic lighting environment that updates based on real-world surroundings.
Providing your own image-based lighting via an ImageBasedLightComponent. To see an example, create a new visionOS app, select RealityKit as the Immersive Space Renderer, and select Full as the Immersive Space.
I see that CustomMaterial isn’t supported on visionOS. Is there a way I can create materials with custom shading?You can create materials with custom shading in Reality Composer Pro using the Shader Graph. A material created this way is accessible to your app as a ShaderGraphMaterial, so that you can dynamically change inputs to the shader in your code.
For a detailed introduction to the Shader Graph, watch Explore materials in Reality Composer Pro.How can I position entities relative to the position of the device?In an ImmersiveSpace, you can get the full transform of the device using the queryDeviceAnchor(atTimestamp:) method.Learn more about building apps for visionOS









Q&A: Spatial design for visionOS
Get expert advice from the Apple design team on creating experiences for Apple Vision Pro.
View now














Spotlight on: Developing for visionOS
Learn how the developers behind djay, Blackbox, JigSpace, and XRHealth started designing and building apps for Apple Vision Pro.
View now














Spotlight on: Developer tools for visionOS
Learn how developers are using Xcode, Reality Composer Pro, and the visionOS simulator to start building apps for Apple Vision Pro.
View now




Sample code contained herein is provided under the Apple Sample Code License.
Apple

Announcing contingent pricing for subscriptions

Contingent pricing for subscriptions on the App Store — a new feature that helps you attract and retain subscribers — lets you give customers a discounted subscription price as long as they’re actively subscribed to a different subscription. It can be ...
Apple

Get ready with the latest beta releases

The beta versions of iOS 17.3, iPadOS 17.3, macOS 14.3, tvOS 17.3, and watchOS 10.3 are now available. Get your apps ready by confirming they work as expected on these releases. And to take advantage of the advancements in the latest SDKs, make sure to...
Apple

Hello Developer: December 2023

Welcome to Hello Developer. In this edition: Check out new videos on Game Center and the Journaling Suggestions API, get visionOS guidance straight from the spatial design team, meet three App Store Award winners, peek inside the time capsule that is A...
Apple

Q&A: Spatial design for visionOS

Spatial computing offers unique opportunities and challenges when designing apps and games. At WWDC23, the Apple design team hosted a wide-ranging Q&A to help developers explore designing for visionOS. Here are some highlights from that conversatio...
Apple