[
  {
    "url": "/apple-services/",
    "title": "Apple Services",
    "text": "Apple Music, Apple TV, Apple Books, Apple Podcasts and Apple Fitness+. Preview Apple Music Apple Music preview An Apple Music player. Play a preview here, or open it in the Music app. The player needs JavaScript. Open Apple Music . Apple Services Apple Music Music streaming, with Lossless and Dolby Atmos. Apple Music Apple TV Apple Original series and films. Apple TV Apple Books Books and audiobooks. Apple Books Apple Podcasts Podcasts, free to listen. Apple Podcasts Apple Fitness+ Guided workouts and meditations. Apple Fitness+"
  },
  {
    "url": "/apps/darksight/",
    "title": "DarkSight",
    "text": "DarkSight See space in low light. A calm, live view of the room around you, drawn by LiDAR. For iPhone, iPad and Apple Vision Pro. App Store U.S. App Store · May 10 No. 19 Top Paid Utilities Overview When the lights are low, DarkSight draws the shape of the space around you : walls, floors, furniture and the distance to what is near, in a view that stays quiet instead of noisy . Ready — Clear path Move over the room to measure it, the way the readout in DarkSight does. A drawing made in code, not a recording. Live mesh Read the room, even in the dark. Using ARKit and LiDAR on supported devices, DarkSight lays a clean real-time mesh over nearby surfaces and detected planes, so the structure of a room is clear at a glance. A large distance readout and a short status line keep everything else out of the way. 3.1 m. Clear path. The readout always shows the distance to the surface ahead. 1.8 m. Object ahead. When something is close, the status changes and you feel a gentle haptic tap. 2.4 m. Clear path. A dark corridor becomes a readable shape. Moving-object overlay. On iPhone and iPad, light dots follow motion in the scene, like a person walking across the path. Flashlight. Turn on the light from inside the app on supported devices. Capture. The shutter button saves the reality view, mesh and all. ‹ › Features Designed to stay simple under pressure. DarkSight focuses on the few spatial signals that matter: shape, distance, nearby surfaces, motion and immediate readability . Real-time LiDAR mesh. Nearby surfaces appear as a live spatial mesh with clear structure over walls, floors, furniture and planes . Distance awareness. A large distance display keeps nearby surfaces readable, with subtle haptics when something is close. Surface detection. Walls, floors, tables, doors, windows and more are recognized, so the space feels structured instead of abstract . Clean low-light interface. Minimal and native, designed to stay easy to read when the room is dark . Adjustable mesh colors. Change the mesh color for better contrast in any room, on any display. Flashlight and capture. Control the flashlight on supported devices, and capture the reality view to keep what you see. Apple Vision Pro The mesh, all around you. On Apple Vision Pro, DarkSight scans immersively : the mesh surrounds you, and a compact control window keeps the distance in view and stays out of your way. Pick the mesh color that reads best in your room. Green Accessibility and privacy Built for everyone. Accessibility. VoiceOver, Voice Control, Larger Text, Dark Interface, Differentiate Without Color Alone, Sufficient Contrast and Captions. Data Not Collected. DarkSight does not collect any data. Read the Privacy Policy . 44 languages. From Arabic to Vietnamese. The full list is in the specs below. Not a safety device. DarkSight is not a safety or navigation device. Results depend on lighting, device capability and the spatial sensing available. Specs Platforms iPhone with iOS 26 or later iPad with iPadOS 26 or later Apple Vision Pro with visionOS 26 or later Sensing The live mesh uses ARKit and LiDAR on supported devices. iPhone and iPad Moving-object overlay, flashlight control Apple Vision Pro Immersive spatial scanning with a compact control window Category Utilities Languages English, Arabic, Bengali, Catalan, Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Gujarati, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Kannada, Korean, Malay, Malayalam, Marathi, Norwegian Bokmål, Oriya, Polish, Portuguese, Punjabi, Romanian, Russian, Simplified Chinese, Slovak, Slovenian, Spanish, Swedish, Tamil, Telugu, Thai, Traditional Chinese, Turkish, Ukrainian, Urdu and Vietnamese Age rating 4+ Privacy Data Not Collected DarkSight is on the App Store. App Store All apps"
  },
  {
    "url": "/apps/gardenlab/",
    "title": "GardenLab",
    "text": "GardenLab Grow a garden in your living room. Spatial gardening and botany, made for Apple Vision Pro. App Store Overview GardenLab looks at your room in real time , suggests where plants could grow, and teaches the botany behind every leaf. Whatever your level of gardening, you can choose plants, plan the layout and get care tips from one clear interface. Garden, Lab, Learn Three spaces in your room. One window opens all three. Plant and cultivate , master the basics, and pick up the principles of botany and ecology as you go. One window. GardenLab opens above your table, with Garden, Lab and Learn side by side. Garden. Step into a full space of flowers, plant seedlings and follow this week’s tasks. Lab. Watch a plant from its germination stage and track its growth. Master the basics, then unlock new plants. Learn. Plant biology, soil and water, light and temperature, disease and pests, pruning and nutrition, and guides to individual plants. ‹ › Water with your own hand. Pick up the watering can or a bag of fertilizer and it follows your hand , just like the real thing. Watering and fertilizing play Spatial Audio where they happen. Goose Your guide in the garden. Based on your space and your preferences , Goose suggests plants that fit, from succulents and foliage plants to flowers and shrubs, along with a plan to keep them healthy. Everything Goose says appears with a typing animation, and its windows, such as Task, can be resized. February 2024 There on launch day. GardenLab was on the App Store the day Apple Vision Pro launched , and Apple sent its thanks to the developers who were there from the start. Recognition Accessibility A garden for everyone. With and without disabilities. GardenLab is designed so that everyone has the chance to build a personal garden, and supports VoiceOver. 16 languages. English, Chinese (Simplified), Croatian, Czech, Danish, Dutch, Finnish, French, German, Italian, Japanese, Korean, Portuguese, Russian, Spanish and Ukrainian. Sound you can place. Interactions give sound feedback, and watering and fertilizing play Spatial Audio. Data Not Collected. GardenLab does not collect any data. Read the Privacy Policy . Specs Platform Apple Vision Pro with visionOS 2 or later Category Education Languages 16 Age rating 4+ Privacy Data Not Collected Questions? Answers. What is new in GardenLab 2.0? Follow the hand for watering and fertilizing, Spatial Audio for those actions, a more immersive interface, stronger reminders to look after your garden, full support for visionOS 2 and bug fixes. What came before that? 1.2 shows the scale while you pinch to resize a plant, and adds a new watering effect. 1.1 added sound feedback, typing animations for Goose and resizable Goose windows. Do I need gardening experience? No. GardenLab is made for every level, from choosing a first plant to learning how plants grow. GardenLab is on the App Store. App Store All apps"
  },
  {
    "url": "/apps/",
    "title": "Apps",
    "text": "Apps that think different. For Apple platforms, with a focus on spatial computing. See all apps All apps Every app is written in Swift, built for Apple platforms and labeled Data Not Collected on the App Store. OpenReality A visual app engine. Interface, logic, 3D and spatial scenes in one editor on Mac. Test on your devices, then export a native Xcode project. Mac iPhone iPad Apple Vision Pro Learn more App Store DarkSight See space in low light. A live LiDAR mesh of the room, a large distance readout and gentle haptics when something is close. iPhone iPad Apple Vision Pro Learn more App Store PodcastIntelligent Create a podcast by describing it. One prompt becomes a full episode with several voices, written with Apple Intelligence and read aloud. iPad Mac Apple Vision Pro Swift Student Challenge 2026 Winner Learn more App Store MemoryCard Say hello to spatial memories. Photos and videos become collectible cards. On Apple Vision Pro, people and pets step out of them into your space. iPhone Apple Vision Pro First place, 2025 Swift Middle School Challenge Learn more App Store GardenLab Grow a garden in your living room. Plant, water and learn botany on Apple Vision Pro, with Goose as your guide. Apple Vision Pro Available on Apple Vision Pro launch day Learn more App Store Compare OpenReality DarkSight PodcastIntelligent MemoryCard GardenLab Category Developer Tools Utilities Entertainment Lifestyle Education Built for iPhone, iPad, Mac, Apple Vision Pro iPhone, iPad, Apple Vision Pro iPad, Mac (also runs on Apple Vision Pro) iPhone, Apple Vision Pro Apple Vision Pro Requires iOS, iPadOS, macOS or visionOS 26 iOS, iPadOS or visionOS 26 iPadOS or macOS 26 iOS or visionOS 26 visionOS 2 Highlights Visual editor, device testing, Object Capture, Xcode export LiDAR mesh, distance readout, haptics Foundation Models, multi-voice narration, Singing Mode LiveSpatial, Recollections, HapticVision, AES-256 Room analysis, Goose assistant, VoiceOver Languages English 44 18 12 16 Privacy Data Not Collected Data Not Collected Data Not Collected Data Not Collected Data Not Collected What they share Different apps. The same care. Native, in Swift. SwiftUI, RealityKit, ARKit and Apple Intelligence, used the way they were designed to be used , on the devices each app was made for. Data Not Collected. That is the privacy label on every one of these apps. What you create stays on your devices, or in your own iCloud . Accessible by design. VoiceOver, Voice Control, Larger Text and Reduce Motion are part of the design, along with ideas of their own, like HapticVision in MemoryCard, which lets you feel distance in a photo. Ready for Apple Vision Pro. Every app runs on Apple Vision Pro, and several were designed for it first , from immersive scanning to rooms full of memories. Where it started Day Water. The first app, a simple water tracker , reached the App Store when I was 10. It has since been retired, along with about a dozen early apps that followed it. Each one taught something the apps above still use. For developers. GlassIntroKit and SwiftDelta are free and open source: a first-launch intro made with Liquid Glass and Metal, and a terminal app that checks a project before an Xcode upgrade. Open Source"
  },
  {
    "url": "/apps/memorycard/",
    "title": "MemoryCard",
    "text": "MemoryCard Say hello to spatial memories. Turn photos and videos into elegant, collectible cards. On Apple Vision Pro, watch them step into your space. App Store The idea behind MemoryCard “For a long time, I have had an idea: if one day pictures were no longer just one-way output, but could be touched, interacted with and fed back in space as input, that would be real memory.” Jiaxu Li, on the idea behind MemoryCard MemoryCard is an answer to that question. Cards give structure, space adds presence, and touch deepens understanding. It is not just another gallery. Cards A calmer way to remember. Create beautifully crafted cards that combine text, photos and video . Browse quickly, or open one card and relive the details at your own pace. Start a card. Tap Start to create your own memory card. Make it yours. Give it a title, a subtitle, an icon, a theme color and a date. Add the moment. Choose an image or a video. Name it. “Goose, my pet Goose.” Tap Done and it joins your collection. Find it later. Search finds any card by name, and Card Player plays a stack like a short reel. ‹ › GlidePick Press, glide, preview, open. Press and glide to slide across your cards. Preview left and right , then swipe up to open. Fast, intuitive and delightfully tactile. Your library. Every card you have made, one at a time. Glide. Press the curve at the bottom and slide across the stack. Preview. See the next card before you swipe up to open it. Library Glide Preview Liquid Glass. A translucent surface floats above a colorful backdrop, keeping your content front and center with gentle depth, comfortable over long sessions. Play your cards. Stack cards and play them like a short reel. Tap to advance , or let it play for a calm recap. Delightful motion. Micro-interactions glide without distracting, and motion follows your Reduce Motion setting. Accessibility Feel distance in a picture. HapticVision maps spatial distance to touch, like a tactile relief. VoiceOver, Dynamic Type and Reduce Motion are supported throughout, and Spoken Content reads your cards aloud. HapticVision. Open a card and tap Haptic Vision . The photo becomes something you can read with your finger. Closer means stronger. Long-press the picture and drag. The closer the object, the stronger the vibration. Some objects are recognized and read aloud. Also supported: VoiceOver, Voice Control, Larger Text, Dark Interface, Differentiate Without Color Alone, Sufficient Contrast, Reduce Motion and Audio Descriptions. Apple Vision Pro More spatial on Apple Vision Pro. LiveSpatial and Recollections make spatial feel simple. Lean in, walk around, and let presence do the rest. LiveSpatial. Characters and pets seem to step out of photos and stand in your space. Recollections. A cinema-like, immersive environment with rich depth and presence. Scroll gently through scenes, or open one and be surrounded by its details. Your library, in a window. The same Card Library opens as a window in your room. Interactions are designed for space: lean, reach and glance . Privacy and security Your memories are yours. Data Not Collected. MemoryCard does not collect personal data. Read the Privacy Policy . AES-256. Cards are protected with AES-256 encryption , an industry-adopted standard. Your own iCloud. iCloud keeps your cards safely in sync across your devices. Swift Middle School Challenge First place in the Challenge group. MemoryCard won first place in the Challenge group of the 2025 Swift Middle School Challenge , part of MAIC, and was presented on stage at the finals showcase. Recognition Specs Platforms iPhone with iOS 26 or later Apple Vision Pro with visionOS 26 or later Apple Vision Pro only LiveSpatial and Recollections Category Lifestyle Languages Arabic, Chinese (Simplified and Traditional), French, German, Hindi, Italian, Japanese, Korean, Portuguese, Russian and Spanish Availability 174 countries and regions Age rating 4+ Privacy Data Not Collected Questions? Answers. Which features need Apple Vision Pro? LiveSpatial and Recollections. Making, browsing and playing cards, GlidePick and HapticVision work on iPhone. How are my cards protected? Cards are encrypted with AES-256 and sync through your own iCloud. MemoryCard does not collect personal data. Can I join the beta? Yes. Email for a TestFlight invitation . Ready to remember differently? App Store All apps"
  },
  {
    "url": "/apps/openreality/demo/",
    "title": "Build Hello You in OpenReality",
    "text": "OpenReality Demo Build Hello You. A small app with two screens: a welcome screen that asks for a name, and a greeting that answers with it. Start building Read the tutorial Hello You A small app with two screens, input, state, and navigation. Create a small app called Hello You . It has two screens: a welcome screen where the user enters their name, and a second screen that greets them personally. By the end, the app will do one simple thing well: open on a clean home screen, let the user type their name, move to the next screen, and show Hello, <name> . This is a real app structure, not just a feature demo. It gives you a project, screens, state, input, navigation, and runtime behavior. App name Hello You Screen 1: Welcome Shows a title, a short description, a text field for the user's name, and a button labeled Continue . Screen 2: Greeting Shows a title, a personalized greeting using the name from screen 1, and a button labeled Back . Why it matters This is the smallest useful OpenReality app pattern: project, scenes, variables, input binding, commands, runtime flow, and export. 1 Start the project Open OpenReality on macOS and create a new project. Use these values: Project Name: HelloYou Organization: OpenReality Platforms: macOS on, iOS on Icon: any default icon Enter the editor as soon as the project is created. 2 Build the first screen Create a new scene and name it Welcome . Set Welcome as the entry scene. Then create one entity inside the Welcome scene. This will be the main content container for the first screen. Add a vertical layout to that entity. Use a VStack so the content appears from top to bottom. Inside that layout, add the following modules in this order: A Text module Another Text module A TextField module A Button module Now configure them: Title text: Welcome Description text: Enter your name to continue Text field placeholder: Your name Button label: Continue Leave the button action empty for now. At this point, your first screen should look like a simple onboarding page. 3 Add app state Now create the data that drives the app. Add a new variable: Name: userName Type: String Default Value: empty, or Friend This variable is the app's state. It stores whatever the user types into the text field. Go back to the Welcome scene, select the text field, and bind its value to userName . Now the input field is no longer isolated UI. It is connected to the app's runtime state. That is the key shift from a static layout to a working app. 4 Build the second screen Create another scene and name it Greeting . Do not make it the entry scene. Inside Greeting , create one entity and add a VStack . Now add these modules: A Text module for the screen title A Text module for the personalized message A Button module for going back Configure them like this: Title: Greeting Personalized message: display Hello, ${userName} or the equivalent binding pattern available in the editor Back button label: Back If the editor only supports binding a single variable directly, the simplest acceptable version is showing just the name itself. Leave the button action empty for the moment. 5 Create the navigation logic Now wire the screens together. Create a new command and name it OpenGreeting . Add one step: Open Scene to Greeting . That is enough, because the name is already being stored live in userName through the text field binding. Select the Continue button on the Welcome screen and bind it to OpenGreeting . Next, create another command named GoBack with one step: Open Scene to Welcome . Bind the Back button on the Greeting screen to GoBack . Now the app flow is complete: type name, continue, see greeting, go back. 6 Make the greeting feel like a real app Right now, the app works structurally. Now improve the experience so it feels intentional. Refine the Welcome screen by adjusting spacing so the title, description, input, and button have breathing room. Use a larger title size, a softer style for the description, and make the button visually stronger than the other elements. Refine the Greeting screen by making the greeting message the center of attention. Use a medium or large title for Greeting , a larger personalized text for the user name, and enough vertical spacing so the screen feels calm and clear. This should feel like a tiny finished app, not just a stack of modules. 7 Run the app Save the project, then run it locally on macOS. On launch, the Welcome screen should open first. On the first screen, you should see Welcome , Enter your name to continue , a text field, and a Continue button. Type a name into the field, such as Alex , then press Continue . On the second screen you should now see Greeting , Hello, Alex or the equivalent personalized output, and a Back button. Press Back and return to the first screen. That is now a complete simple app. 8 If the greeting text does not update If the second screen is not showing the entered name correctly, make the output more explicit. Create a second string variable: Name: greetingText Type: String Default Value: Hello Then replace the forward command with one that first writes a final greeting string. Create or update the command PrepareGreeting and add these steps in order: Build or set a string value for greetingText Open Greeting If OpenReality lets you set a string directly from another variable, use greetingText = Hello, + userName . If the editor does not support direct concatenation in one step, keep the output simple and just display userName directly on the second screen. Then bind the message text in the Greeting scene to greetingText and bind the Continue button to PrepareGreeting . This version gives you a cleaner app architecture: userName stores input, and greetingText stores display output. 9 Give the app a cleaner product shape To make it feel more like an actual app and less like an exercise, apply these final touches: Rename the scenes clearly: Welcome and Greeting Rename the entities clearly: WelcomeContent and GreetingContent Keep only one primary action per screen Keep the copy short and polished Use restrained text such as Welcome , Enter your name to continue , Continue , Greeting , and Back . Small apps feel stronger when the language is restrained. 10 Test it on iPhone If you want to make this a real mobile app prototype, run it remotely on an iPhone. Open OpenReality on the iPhone and keep the Mac and iPhone on the same network. In the run controls on macOS, select iOS , choose the device, complete pairing if required, and press Run . Then test the same flow on the phone: enter a name, tap Continue , check the greeting, and tap Back . If it feels clean on mobile, you already have a usable prototype. 11 Export it as an app project When the flow feels right, export it using these values: App Name: HelloYou Organization Name: OpenReality Bundle Identifier: com.openreality.helloyou Export to Xcode. Now your simple app exists in two forms: as an OpenReality project for fast iteration, and as a standalone Xcode project for continued development. 12 What you just built You did not just make a screen mockup. You built a real app structure with a project, two scenes, one or two variables, user input, state binding, scene navigation, runtime behavior, local run support, optional device testing, and export support. That is the smallest useful OpenReality app pattern. 13 What to build next Once Hello You is working, the next good versions are: Version 2: Add validation and continue only if the text field is not empty Version 3: Add a reset action and clear the name when returning to the first screen Version 4: Add a profile image and display it with the greeting Version 5: Add a theme color variable and use it across both screens Each one grows the app naturally without changing its structure. 14 Final app structure Your finished project should look roughly like this: Scenes: Welcome and Greeting Variables: userName and optional greetingText Commands: OpenGreeting or PrepareGreeting , and GoBack Welcome screen: title, description, input field bound to userName , and a continue button Greeting screen: title, personalized text using userName or greetingText , and a back button This is a simple app. It is small, complete, interactive, and easy to extend. Read the tutorial next if you want the broader OpenReality workflow beyond this single app, including project structure, device testing, 3D scenes, commands, and export in a more general step-by-step path. Read the tutorial OpenReality"
  },
  {
    "url": "/apps/openreality/",
    "title": "OpenReality",
    "text": "OpenReality A visual app engine. Build interface, logic, 3D and spatial experiences in one place, then take them all the way to Xcode. App Store Read the tutorial Overview OpenReality brings interface design, app logic, 3D scenes and spatial interaction into a single visual workspace, and turns them into real, native projects for iPhone, iPad, Mac and Apple Vision Pro that keep growing in Xcode. You work directly with scenes, entities, variables and commands , see the result as you go, and export a standalone project when it is ready for more. It is built on its own runtime, OpenReality Engine, so what you build is a working app, not a mockup . Interface Screens, built visually. Build interfaces from native modules such as stacks, text, buttons, images, maps, video and navigation, and organize them across many scenes. No foundation code to write before you can see your idea. One editor on Mac. Scenes, entities and modules in a hierarchy on the left, the scene in the middle, components on the right and properties below. Native modules. A map is a module like any other: drop it into a scene and set its properties. Many scenes, one entry scene. Each screen is a scene, and commands move between them. Preview as you go. Run the project on the Mac in a device frame at any point while you edit. ‹ › Logic Behavior without boilerplate. Use variables and commands to drive the app. Structure state, events and responses visually, and save custom native work for where it actually matters. A command is a list of steps. This one moves a 3D model to a new position over ten seconds with an ease-out curve . Other steps switch scenes, set variables, branch, compare, loop, do math, share, record audio, take photos, read sensors, recognize speech and run AI actions. Project The whole app: its information, scenes, variables and commands. Scene A screen or a space. A project has many scenes and one entry scene. Entity A node inside a scene that holds modules, modifiers, components and 3D content. Variable Runtime data: text, numbers, Booleans, colors, images, video or audio. Command Behavior: switch scenes, update variables, run logic, use device features and control 3D content. OpenReality Engine The runtime, interaction layer, rendering structure and Swift-facing execution model that read these five and run the app . 3D and Spatial 3D in the same project as your UI. Add models or primitives, set materials, and move, rotate, scale or animate entities with the same commands you use for the interface. For Apple Vision Pro, create windowed and immersive experiences with the interaction patterns visionOS is built around. Compose a scene. Place models next to your screens and arrange them in 3D. Shape materials. Adjust color, metallic, roughness and opacity and see the result at once. A runtime on Apple Vision Pro. OpenReality waits in your room for projects sent from the Mac. Paired with the Mac. Register Apple Vision Pro once, and every run from the editor opens in your space. ‹ › Bring real objects into your scenes. With Object Capture , real things become 3D assets in your project. Scan on iPhone. Walk around an object and capture it with the camera, guided by the capture dial. Rebuild on Mac. The Mac runs a high-quality reconstruction of the scan into a USDZ model, saves it locally and applies it to the 3D model you selected. Scan on iPhone Rebuild on Mac Devices Run it on the real thing. Pair a nearby iPhone, iPad or Apple Vision Pro over the local network, press Run, and the runtime plays your project on the device . Every change shows up as you make it. A runtime on iPhone. Open OpenReality and it is ready for remote sessions from the Mac. Register once. Tap Register Test Device, and the iPhone shows Paired with Mac. Your app, running. The same map screen you built, live on iPhone. iPad, too. Register an iPad the same way. The same project on iPad. One project runs on every device you pair. Watch performance live. During a remote run, the editor shows frames per second, frame time, memory and an overall status. And on Apple Vision Pro. The same app opens as a window in your room. ‹ › Xcode Take it all the way to Xcode. When a project needs custom native work, export a standalone Xcode project for native Swift development and release. Speed at the start, without giving up flexibility later. Export Complete. The project includes an app entry point, the runtime, a snapshot of your project, its resources and platform settings. Learn Start with a guide. Tutorial The complete beginner workflow: from creating a project to a multi-scene interactive prototype , then device testing, 3D and export. Read the tutorial Build an app: Hello You A small, complete app with two screens, text input, state and navigation , built from scratch. Start the demo Specs Platforms Mac with Apple M1 or later and macOS 26 or later iPhone with iOS 26 or later iPad with iPadOS 26 or later Apple Vision Pro with visionOS 26 or later Editing The full editor runs on Mac. iPhone, iPad and Apple Vision Pro run projects sent from the Mac. Export A standalone Xcode project for iOS, macOS and visionOS Category Developer Tools Language English Age rating 4+ Family Sharing Supported Privacy Data Not Collected. Privacy Policy Questions? Answers. Do I need to know how to code? No. Interface, logic, 3D and spatial scenes are all built visually. When you want to write Swift, export the project to Xcode and continue there. Which device do I edit on? The editor runs on a Mac with Apple silicon. iPhone, iPad and Apple Vision Pro run your projects for testing once they are paired with the Mac over the local network. What is in an exported Xcode project? An app entry point, the OpenReality runtime, a snapshot of your project, its resources and settings for each platform. It builds and ships like any other Xcode project. Who is OpenReality for? Creators, designers, founders, developers and studios who want to turn ideas into runnable apps quickly, including for Apple Vision Pro, and still end up with native software. Where do I start? Read the tutorial , then build Hello You , a two-screen app, step by step. OpenReality is on the App Store. App Store All apps"
  },
  {
    "url": "/apps/openreality/tutorial/",
    "title": "OpenReality Tutorial",
    "text": "OpenReality Tutorial From a blank project to a working prototype. Create a project, build two scenes, connect them with state and a command, then test on a device and export to Xcode. Start View the demo OpenReality is a visual creation tool for Apple platforms. It lets you design scenes, organize entities, configure variables and commands, run projects locally on macOS, send them to iPhone or Apple Vision Pro for remote testing, and export the result as a standalone Xcode project. This tutorial walks through the complete beginner workflow, from creating your first project to building a simple multi-scene interactive prototype. Want to see the full workflow as a finished example? Read the tutorial first, then open the official demo to see how scenes, variables, commands, 3D content, device testing, and export fit together as one practical prototype. Open the demo 1. What OpenReality Is OpenReality is built around a runtime-driven project model. Instead of writing interface code first, you create a structured project made of scenes, entities, variables, and commands. The runtime engine reads that structure and turns it into a working app experience. At a high level, OpenReality combines four capabilities: Visual project editing Runtime interaction and preview Remote device testing Xcode project export This makes it suitable for fast prototyping, interaction design, and early-stage app production. 2. Who It Is For OpenReality is designed for: Designers building interactive app prototypes Creators exploring spatial and multi-platform experiences Developers who want to move quickly from concept to working app structure Teams validating interface flows before full engineering implementation If you want to iterate on Apple platform experiences without starting from a blank codebase, OpenReality is a strong fit. 3. What You Need Before Starting Before using OpenReality, prepare the following: A Mac with macOS 26 or later and Xcode installed OpenReality from the App Store on your Mac An iPhone, iPad, or Apple Vision Pro if you want remote testing Local network access shared by your Mac and test devices For a first-time walkthrough, macOS alone is enough. 4. Launching OpenReality Open OpenReality on your Mac. To test on a device, install it on that iPhone, iPad or Apple Vision Pro too. Behavior depends on platform: On macOS, OpenReality launches as the full editor On iOS, it mainly acts as a runtime target for remote sessions On visionOS, it supports both windowed and immersive runtime modes For the best first experience, start on macOS. 5. Your First Look at the App When OpenReality launches on macOS, you begin on the home screen. This is the entry point for: Creating a new project Opening an existing project Accessing documentation or tutorial links For this tutorial, create a new project. 6. Creating Your First Project Select Create Project and fill in the project setup form. You will define: Project name Organization name Supported platforms App icon OpenReality generates a bundle identifier from your project and organization names. Recommended first project settings Keep macOS enabled so you can edit and run locally Enable iOS or visionOS if you plan to test on devices later Choose a simple project name such as HelloOpenReality When the project is created, OpenReality opens the editor. 7. Understanding the Editor Layout The editor is divided into four main areas. Hierarchy The left panel manages project structure. Use it to: Create scenes Rename, duplicate, or delete scenes Set the entry scene Navigate the current project structure Scene The center area shows the content of the currently active scene. Component The right panel is used to attach components or behavior capabilities to the selected entity. Properties The bottom panel shows editable properties for the currently selected object, including scenes, entities, modules, variables, and commands. Toolbar The top toolbar includes the core actions you will use most often: Save Run Add Project settings Export to Xcode Understanding these areas is the foundation of working effectively in OpenReality. 8. The Five Core Concepts Before building anything, learn the five concepts that define every OpenReality project. Project A project is the full application container. It includes app information, scenes, variables, and commands. Scene A scene is a top-level screen or space. A project can have multiple scenes, but only one entry scene. Entity An entity is a structured node inside a scene. It can hold modules, modifiers, components, and 3D content. Variable A variable stores runtime data such as text, numbers, booleans, colors, images, video, or audio. Command A command defines behavior. Commands can switch scenes, update variables, run logic, access device capabilities, and control 3D content. Once these five concepts are clear, the rest of the workflow becomes much easier. 9. Creating Your First Scene A new project usually starts empty, so the first thing you need is a scene. Create a scene and name it Home . Then set Home as the entry scene. The entry scene is the first scene shown when the project runs. If the wrong entry scene is set, your app may open to the wrong content or appear blank. 10. Creating Your First Entity Scenes do not display content by themselves. Content is placed inside entities. Create a new entity inside the Home scene. An entity is the basic editable node that holds structure and behavior. It is the container that your scene content will live inside. Once the entity exists, you can begin adding modules to it. 11. Building Your First Static Interface For your first interface, build a simple welcome screen. Inside the Home scene: Create one entity Add a VStack module Add a Text module with the content Hello OpenReality Add a Button module with the label Start This gives you a minimal static interface with text and a button. At this stage, the button does not do anything yet. The goal here is simply to learn the basic scene-to-entity-to-module workflow. 12. What Modules Are Modules are the visible building blocks of content inside an entity. Examples include: Text Button Image VStack HStack ZStack ScrollView Map VideoPlayer NavigationStack Each module exposes parameters such as text content, size, style, layout, options, or bindings. From a user perspective, modules are the content pieces you place into scenes. From a system perspective, they are structured runtime definitions that the engine knows how to render. 13. Using the Properties Panel The Properties panel changes based on what you select. For example: Selecting a scene shows scene-level settings Selecting an entity shows entity-level state and structure Selecting a Text module shows content, font, alignment, and display options Selecting a variable shows its type and value Selecting a command shows its steps and execution settings The workflow is simple: Select the object you want to edit Adjust its details in the Properties panel This is how most editing in OpenReality works. 14. Adding a Variable Now it is time to make the project dynamic. Create a new variable: Name: message Type: String Default value: Welcome to OpenReality Next, select your text module and bind its content to the message variable. Now the text is no longer hardcoded. It is driven by runtime data. This is the point where your project begins to act like a real application instead of a static layout. 15. What Variables Are Used For Variables let your app respond to state changes. Common uses include: Changing displayed text Tracking progress Showing or hiding content Storing user input Passing data between scenes Holding image, video, or audio content Feeding commands and runtime logic Variables are shared runtime state. They are one of the most important parts of OpenReality once your project moves beyond static screens. 16. Adding a Second Scene Create a second scene and name it Detail . This will be the destination scene when your button is pressed. Inside the Detail scene, create one entity and add: A Text module with the content Detail A second Text module bound to the message variable Now your project has two scenes: Home Detail The next step is connecting them with a command. 17. Creating Your First Command Create a command named GoToDetail . Add two steps to the command: Set the message variable to You arrived from Home Open the Detail scene This command now defines a complete behavior sequence: First update runtime state Then change the active scene Commands can contain one step or many steps. This is what makes them powerful. 18. Binding the Button to the Command Select the button in the Home scene and bind it to the GoToDetail command. When the button is pressed during runtime, the command will execute. At this point, your first interactive prototype is complete. 19. Running the Project Locally Use the Run button in the toolbar to start the project locally on macOS. When it runs, verify the following: The Home scene opens first The welcome text appears correctly The button responds when clicked Pressing the button switches to the Detail scene The detail scene shows the updated message variable If all of this works, you have successfully built a complete scene-based interaction flow in OpenReality. 20. What Just Happened It is worth pausing to understand what you built. Your project now includes: A project container Two scenes Multiple entities UI modules One runtime variable One command with two steps A working scene transition This is the core OpenReality loop in action. You are no longer editing static content. You are building a runtime-driven app structure. 21. Understanding Commands More Deeply Commands are not limited to scene switching and variable updates. OpenReality commands can also support: Conditional logic Comparison steps Loops and repeated execution Math operations Text concatenation Clipboard actions URL opening Sharing Audio recording Photo capture Location and sensor access Speech recognition AI actions 3D transformation and animation control This means commands are the behavioral layer of OpenReality. As your projects grow, commands become the main tool for defining what the app actually does. 22. The Best Way to Learn Commands The best way to learn commands is incrementally. Start with: Open Scene Set Variable Then move to: Run Command If Equal / Greater Than / Less Than Add / Subtract / Multiply / Divide Repeat or loop-based commands Once you understand those, you can explore device and media actions. Do not try to use advanced runtime actions before your basic scene and variable logic is already stable. 23. Saving Your Work Use the Save button regularly. OpenReality stores your project as structured data. Saving ensures that your scenes, entities, variables, commands, and app settings are written to the project storage. Good practice: Save after creating scenes Save after binding variables Save after building commands Save before exporting Save before testing on another device Frequent saves make iteration safer and more predictable. 24. Remote Testing on iPhone or Apple Vision Pro Once local runtime works, you can test remotely. Basic remote workflow Open OpenReality on the target device Make sure the device is discoverable Keep the Mac and device on the same local network In the toolbar run area, select the correct platform Choose the discovered device Complete pairing if required Press Run The full project is sent to the device, where the runtime engine executes it independently. This is ideal for checking: Real device input behavior Mobile layouts Sensor-related interactions Spatial and immersive experiences on visionOS 25. First-Time Pairing If this is your first remote session, pairing may be required. Depending on the target platform, OpenReality may display a pairing code or QR-based confirmation flow. This confirms that the Mac is connecting to the intended device. If a device does not appear, check: Both devices are on the same network OpenReality is running on the target device The device is set to discoverable mode You selected the correct target platform in the editor 26. Working with visionOS visionOS projects may run in either a windowed context or an immersive context. If your project includes 3D scenes, be aware of: Whether the current scene is a UI scene or a 3D scene Whether the experience should stay windowed or move into immersive space Whether scene transitions change the runtime environment For visionOS content, always validate important interactions on the actual target environment whenever possible. 27. Getting Started with 3D Content OpenReality supports 3D scene content as well as traditional UI scenes. For your first 3D experiment: Create a new 3D scene Add an entity Configure a 3D model source Start with a primitive shape such as: Box Sphere Cylinder Adjust material settings: Base color Metallic Roughness Opacity Once the object appears correctly, you can begin using commands to move, rotate, scale, hide, or animate it. The best approach is to keep your first 3D scene extremely simple. 28. When to Use UI Scenes vs 3D Scenes Use UI scenes when you want to build: Menus Flows Forms Information views Navigation-based app structures Use 3D scenes when you want to build: Object presentations Spatial experiences Animated environments Immersive or model-driven interactions Most first projects should begin with UI scenes. Add 3D scenes once your structure and logic are already clear. 29. Exporting to Xcode When your prototype is ready to move forward, choose Export to Xcode . The export process creates a standalone Xcode project that includes: A generated app entry point Embedded project runtime code A snapshot of your current OpenReality project Resources such as app icon and app settings Platform configuration for supported targets This gives you a real engineering starting point for continued development. 30. When to Export Export when: Your prototype structure is stable The main scenes and flows are already defined You need deeper native customization You are ready to continue in a traditional Xcode workflow You want to turn the prototype into a real app project Do not export too early. OpenReality is most valuable during the fast iteration stage. 31. Recommended Learning Path To build confidence quickly, follow this order: Create a single static scene Build a two-scene flow Add a variable and bind it to content Use a command to modify that variable Add basic logic conditions Try a simple 3D scene Test remotely on iPhone or visionOS Export to Xcode This order keeps complexity under control and makes debugging much easier. 32. Common Beginner Mistakes Nothing appears when the project runs Check whether the correct entry scene is set. A button does not do anything Check whether it is actually bound to a command. The text never changes Check whether the text module is bound to a variable, instead of using fixed content. The wrong scene opens Check scene names and command targets. A remote device is not visible Check local network access, discoverability, and target platform selection. Export fails or creates an unusable project Check your project name, bundle identifier, destination folder, and save state. 33. Best Practices To stay efficient as projects grow, follow these habits: Use clear scene names Keep entity structure organized Name variables by purpose, not by type Keep commands small and readable Test often in local runtime Only move to remote testing after local logic works Save before major changes Export only after the prototype stabilizes OpenReality becomes much easier to manage when the project model stays clean. 34. What to Build Next After completing this tutorial, try one of these next exercises: A simple settings screen with toggle variables A step-based onboarding flow across three scenes A gallery with image variables A small data-driven dashboard using numbers and commands A basic 3D object scene with transform commands A visionOS-first experience with a UI scene and a 3D scene Each one builds naturally on what you have already learned. 35. Final Notes OpenReality is most powerful when you stop thinking of it as a static editor and start thinking of it as a visual app runtime system. You are not only placing interface pieces on a canvas. You are defining: structure state behavior execution flow multi-platform presentation That is what makes OpenReality useful for serious prototype creation and early product development. 36. Quick Start Summary If you want the shortest possible first path, do this: Create a project Add a Home scene Set Home as entry Add one entity Add a Text and a Button Create a string variable Bind the text to that variable Create a second scene Create a command to update the variable and open the second scene Bind the button to the command Run the project Export when ready That is the first complete OpenReality workflow. 37. Next Step Continue to: build more scenes add more variables create richer commands test on devices explore 3D content export to Xcode when your structure is ready OpenReality is designed to make that progression fast, visual, and practical. Recommended next: view the official demo. If you want to see how the complete workflow comes together as a single prototype, open the demo next. It shows a simple multi-scene project with runtime state, commands, 3D content, remote testing, and Xcode export in one continuous example. View the demo"
  },
  {
    "url": "/apps/podcastintelligent/",
    "title": "PodcastIntelligent",
    "text": "PodcastIntelligent Create your own podcast just by describing it. A debate, a story, a lesson or a comedy segment, written and performed with Apple Intelligence. For iPad and Mac. App Store Overview Type or say an idea. PodcastIntelligent writes a full episode with a title, a summary, a cover concept and the dialogue , then performs it with a different voice for every speaker . Create From a sentence to a show. Every episode is thoughtfully structured, with a strong opening, meaningful content and a clear ending . Each line moves the topic forward, with no repetitive filler. Describe it. Type what you want to hear, or start from an example such as “Debate whether AI will replace programmers” or “Teach me how to build an app”. Apple Intelligence writes it. Apple Intelligence foundation models write the episode, on device where available , so generation is fast and your prompt stays private. Read it before you listen. The title, the summary and every line appear with their speakers, such as host, guest and narrator . Then save and play. Give it a cover. Create the cover with Image Playground , choosing a style and themes. Listen It sounds like a real show. Your podcast is read with different voices for different speakers, so a conversation feels like distinct personalities instead of a flat, robotic read. With Singing Mode , the content can even be performed in a playful musical style. Multi-voice narration. Host, guests, narrator and analyst each have their own voice . Follow the script. The player highlights the current line as each speaker talks, so you always know who is talking. A player made to enjoy. Fluid playback with smooth animations, elegant motion and clear speaker transitions . Mac The same app on Mac. PodcastIntelligent is native on iPad and Mac , and the iPad app also runs on Apple Vision Pro. Start with a prompt. Type an idea or tap an example. Watch it come together. “The Quirky Tale of the Tuxedo Cat”, written with its narrator, host and guest. Your library. Every episode keeps its cover, its number of turns, its language and its speakers. Press play. The script follows along on the big screen. ‹ › Swift Student Challenge It began as a winning entry. The idea behind PodcastIntelligent was a Swift Student Challenge 2026 winner , then grew into a full app for iPad and Mac. Recognition Privacy and accessibility Fast, private and for everyone. On-device processing. Powered by Apple Intelligence foundation models, PodcastIntelligent prioritizes on-device processing where available . Your prompts stay private. Data Not Collected. That is the privacy label on the App Store. Read the Privacy Policy . Accessibility. VoiceOver, Voice Control, Larger Text, Differentiate Without Color Alone, Sufficient Contrast, Reduced Motion, Captions and Audio Descriptions. 18 languages. English, Arabic, Chinese, French, German, Hindi, Japanese, Korean, Portuguese, Russian, Spanish and more. Specs Platforms iPad with iPadOS 26 or later Mac with macOS 26 or later Apple Vision Pro with visionOS 26 or later (iPad app) Requires Apple Intelligence. Availability depends on device and region. Built with Apple Intelligence foundation models and Image Playground Category Entertainment Languages English and 17 more In-app purchases AIPodcastPlus, monthly or yearly Age rating 4+ Privacy Data Not Collected Questions? Answers. What is AIPodcastPlus? An optional subscription, monthly or yearly, that unlocks deeper episodes, more advanced voice options, higher generation quality, faster creation and more creative modes . Which devices can run it? iPad and Mac with Apple Intelligence available, and Apple Vision Pro through the iPad app. Apple Intelligence availability depends on the device and region. What kinds of episodes can I make? Anything you can describe: a debate, a story, a lesson, a comedy segment or a step-by-step guide. With Singing Mode, the content can even be performed in a musical style. Where do my prompts go? PodcastIntelligent prioritizes on-device processing where available, and the app does not collect data. See the Privacy Policy . What should your first episode be about? App Store All apps"
  },
  {
    "url": "/community/",
    "title": "Community",
    "text": "An event, a news site and a book for Apple developers. See all Founder and host Envision WWDC 1 A free, independent online community event held during WWDC week, focused on visionOS, spatial computing and Swift . Founded in May 2025. About a hundred people. participants at the first edition , during WWDC25 Free and online. Online and open to anyone, on a Discord forum through WWDC week On Apple’s event pages. On Apple's community event pages for WWDC25 and WWDC26 2026 Envision WWDC26 June 8 to 12, online. Listed among Apple's community-driven events for WWDC26. The week included launch predictions before the keynote, a photo challenge from Apple Park, an idea day, one shared project that everyone touched, a project showcase, a closing session, and a forum on Discord that stayed open all week. 2025 Envision WWDC25 The first edition, featured on Apple's WWDC25 community events page, with about a hundred participants. Every new framework, keynote moment and lab was talked through as it happened, with a focus on visionOS. Spatial computing developers traded notes on the new APIs to bring them into their own apps, and people attending at Apple Park had their own channel to share the day. envisionwwdc.org Head of MacDigest MacDigest A news site about Apple and technology : Apple news, Mac software, AI and developer tools, with explainers and guides. macdigest.news Author Swift Starter Guide An introduction to Swift 6 for complete beginners. No programming experience, computer science background or advanced math needed , only a Mac. Covers Variables, types, control flow and functions, with pointers to iOS, SwiftUI, algorithms and systems programming Published January 2026, Apple Books Length 50 pages, English Apple Books 2 Medium"
  },
  {
    "url": "/",
    "title": "Jiaxu Li",
    "text": "Hello, I'm Jiaxu Li I'm an Apple Developer An Apple Developer, an Apple Fan, a Swift Student Challenge Winner, a MAIC First Prize winner, a Swift contributor and Swift Evolution proposal author, the founder of Envision WWDC, the author of Swift Starter Guide, certified in App Development with Swift, and an Apple Teacher. Scroll to explore Swipe up to explore Apps Apps for Apple platforms that think different, with a focus on spatial computing. Learn more Open Source Great tools, open to everyone, for Swift and Apple developers. Learn more Swift Contributing to the Swift language, authoring Swift Evolution proposals and working in the C++ Interoperability Workgroup. Learn more Recognition Swift Student Challenge Winner. MAIC First Prize. 1 WWDC at Apple Park. Certified in App Development with Swift. Apple Teacher. Learn more Community Envision WWDC, the MacDigest news site and the book Swift Starter Guide. Learn more Security Acknowledged by Apple for reporting security issues, because privacy is a fundamental human right for everyone. Learn more Say hello. lijiaxudeapple@icloud.com GitHub Swift Forums X Medium"
  },
  {
    "url": "/open-source/glassintrokit/",
    "title": "GlassIntroKit",
    "text": "GlassIntroKit A first-launch intro for SwiftUI apps. Made with Liquid Glass and Metal, added with one modifier. Open source, for iOS and macOS. GitHub Get started Overview Add .glassIntro(appName:pages:) to your root view. At launch, your app's mark appears on frosted glass; on the first launch, a welcome follows, one page at a time, and ends with the mark filling with color and dissolving over your app. Pages come from eight kinds of pictures , from a greeting written in glass to a live Metal scene or your own SwiftUI view. It has no dependencies, makes no network requests and stores one Boolean to remember that the welcome was shown. How an intro plays Launch. Your mark comes up on frosted glass over the app. Welcome. Your pages, one at a time: a picture, a title, a message and Continue. Last page. \"Let's Begin\" and Get Started, in your words if you like. Ending. Up to three lines of words in glass, then the mark fills with color. Your app. The mark dissolves where it is, and the app is yours. Pages A picture for every page. Pages can come in any order and repeat. Pictures made to follow one another continue directly; any other two meet in a drop of glass , so no transition jumps. .mark Your mark in glass, its detail opening. .symbols The mark melts into a symbol, and glass symbols scatter out of it. .scene A glass lens opens over a live, ray-marched Metal scene, or over a RealityKit or SwiftUI view of your own. Drag to turn it. .graph A wire shoots out of a glass point, and a graph of your nodes grows, column by column. .physics Up to eight nodes fall onto a line under rigid-body physics, and each lands face up. .icon Glass gathers into an app icon, which is polished and badged. Ending Up to three lines of your words in glass, then the mark fills with color. ‹ › Two more. .greeting : the mark gathers into a pen and writes \"hello\" in glass. .card : your own SwiftUI view, on a card of glass. Mac The same intro on macOS. One package and the same code for iOS and macOS, sized to the window. Scene. A live Metal scene through a glass lens, on a MacBook Pro. Graph. A graph of your own nodes grows across the window. ‹ › New in 0.2 Easier to read. Easier to skip. Version 0.2 adds Reduce Transparency and a Skip button , from community feedback. New options come with defaults, so existing code compiles unchanged . Reduce Transparency. The mark rests on a solid surface instead of frosted glass, each page shows one solid colour, and the buttons are opaque. Every colour keeps at least 7:1 contrast with the white text. A Skip button. Shows in the corner while the welcome plays, on iOS and macOS . showsSkipButton: false hides it and skipButton relabels it. VoiceOver's escape gesture skips too. Skipping, defined. Playing the welcome through or skipping it records it as seen . Quitting mid-welcome doesn't, so it plays again at the next launch. Windows on Mac. Close a window mid-intro, and the next window plays it from the start . No hang in the background. The launch no longer waits on an animation that never reports finishing while the app is in the background. New guides. SwiftUI and Metal , Testing on Devices and Making the Preview Video . Bug reports now use a form. Release notes Get started In Xcode, choose File › Add Package Dependencies , enter the repository URL, and add GlassIntroKit to your app. Then put one modifier on your root view. OrbitApp.swift import GlassIntroKit import SwiftUI @main struct OrbitApp : App { var body: some Scene { WindowGroup { ContentView () .glassIntro( appName: \"Orbit\" , pages: [ .greeting( \"Welcome to Orbit\" , message: \"Plan trips with the people you travel with.\" ), .symbols( \"Everything in Reach\" , message: \"Maps, photos, and notes gather around each trip.\" ), .icon( \"Ready When You Are\" , message: \"Packed and ready to go.\" ), ] ) } } } Frame-by-frame tests. Every page is played after every other page; any frame that jumps fails. Accessible. Reduce Motion, Reduce Transparency, keyboard and VoiceOver support. Private. No network requests; one Boolean in UserDefaults. Specs Version 0.2.0 Release notes Platforms iOS 26 or later, macOS 26 or later Swift Swift 6.3 or later, Swift 6 language mode Install Swift Package Manager: https://github.com/Jiaxu-Li/GlassIntroKit.git , from 0.2.0 Dependencies None Built-in text English. Titles and messages are localized from your app's string catalog. Demo app Included, for iOS and macOS. Try every option without writing code, and copy the code it writes for you. License Apache 2.0 GlassIntroKit is on GitHub. GitHub Swift Package Index"
  },
  {
    "url": "/open-source/",
    "title": "Open Source",
    "text": "Great tools, open to everyone. For Swift and Apple developers. See projects GitHub Projects Both are written in Swift and published on GitHub under the Apache License 2.0 . GlassIntroKit A first-launch intro for SwiftUI apps, made with Liquid Glass and Metal. Added with one modifier , for iOS and macOS. Swift package iOS and macOS 26 Learn more GitHub SwiftDelta A terminal app that compares a project across two Xcode installations before an upgrade, then plans repairs that are verified before they are applied . Terminal app macOS 13 Learn more GitHub What they share Small, careful tools. Both projects assume something will go wrong, and check for it . Nothing else to install. GlassIntroKit has no dependencies : add it with Swift Package Manager. SwiftDelta ships as a signed, notarized binary, or builds from source. Tested frame by frame. GlassIntroKit's tests play every page after every other page , and any frame that jumps fails. Checked before it touches your code. Every SwiftDelta repair is validated in an isolated copy , and if the final check fails, every file is restored. Compare GlassIntroKit SwiftDelta What it is A SwiftUI library: a first-launch intro and welcome for your app A full-screen terminal app for checking a project before an Xcode upgrade Runs on iOS 26 and macOS 26 or later macOS 13 or later; release binary for Apple silicon Built with SwiftUI, Liquid Glass, Metal SwiftSyntax, compiler diagnostics, optional on-device Foundation Models Install Swift Package Manager Signed, notarized release on GitHub, or build from source Network No network requests No network requests during analysis License Apache 2.0 Apache 2.0 Swift Beyond these tools. The work also goes into Swift itself. Contributions to the Swift project, including Swift Evolution proposals and the C++ Interoperability Workgroup, are on the Swift page."
  },
  {
    "url": "/open-source/swiftdelta/",
    "title": "SwiftDelta",
    "text": "SwiftDelta Check a project before an Xcode upgrade. Compares a project across two local Xcode installations, then plans source repairs and verifies them before you apply them. A terminal app for macOS. Download Source Overview SwiftDelta reads SDK symbols, Swift interfaces and compiler diagnostics from a baseline and a candidate Xcode, resolves your project's sources in their build contexts, and reports what changes, with the evidence for each finding. Repairs come from compiler Fix-its, SDK rename metadata and other structured evidence. Each one is validated in an isolated copy ; Apply rebuilds and restores every file if the final check fails. It ships no catalog of migration rules. Workflow Set up, then Doctor. Pick a project, a baseline Xcode and a candidate Xcode . SwiftDelta finds packages, projects, workspaces and schemes, then Doctor checks the environment and tells you what would block the analysis. Analyze. SDK symbols, Swift interfaces and compiler diagnostics come from isolated builds with each Xcode and are compared side by side. Coverage, findings, source context and SDK evidence are kept apart. Repair, verified first. Fixes are planned, then validated in an isolated copy . Every proposal shows its diff, its evidence and whether the build accepted it, and nothing changes until you choose what to apply. Results and repairs If part of the project could not be analyzed, SwiftDelta says so: coverage is reported separately from findings, and an empty list with incomplete coverage is not a pass. Four possible results. Analysis ends in PASS, FAIL, INCOMPLETE or BLOCKED , so missing coverage is never reported as a pass. Repairs from evidence. Fixes come from compiler Fix-its and SDK rename data, not from a catalog of migration rules. Nothing is left half done. If the final check fails, every file is restored. Reports you can keep. Results in terminal text, JSON or SARIF . Optional help, on device. Repair planning can use Apple Foundation Models on device. Without the model, analysis and repair work exactly the same. Install Download both files from the latest release , then verify and install from Terminal. Or build it from source with Swift Package Manager. # in the folder with the two downloaded files shasum -a 256 -c SwiftDelta-1.0.0-macos-arm64.sha256 unzip SwiftDelta-1.0.0-macos-arm64.zip sudo mkdir -p /usr/local/bin sudo install -m 0755 SwiftDelta-1.0.0-macos-arm64/swiftdelta /usr/local/bin/swiftdelta swiftdelta Specs Requires macOS 13 or later An interactive terminal Two local Xcode installations to compare Release binary Apple silicon. Signed with Developer ID and notarized by Apple. Build from source Swift 6.4 and Swift Package Manager Projects Xcode projects, workspaces and Swift packages Reports Terminal text, JSON and SARIF License Apache 2.0 SwiftDelta is on GitHub. Download Open Source"
  },
  {
    "url": "/privacy/",
    "title": "Privacy Policy",
    "text": "Privacy Policy Version: 1.0 Effective Date: 2026-02-10 Last Updated: 2026-02-10 1. Scope and Definitions 1.1 Scope This Privacy Policy explains how Jiaxu Li (\"we\", \"us\", \"our\") processes personal data when you: (1) visit and use our websites, pages, and online services that link to this Policy (collectively, \"Website\"); (2) install or use our applications, including iOS/macOS apps distributed via Apple platforms (collectively, \"App\"); and (3) communicate with us (e.g., email, support tickets, feedback forms). This Policy applies only to processing activities that we control or determine. Apple and other platform providers may independently process data under their own policies (see Section 13). 1.2 Definitions \"Personal Data\" means information that identifies or can reasonably be linked to an identifiable individual. \"Processing\" means any operation performed on data (e.g., collection, use, storage, disclosure, deletion). \"Controller\" means the entity that determines purposes and means of processing. \"Processor\" means an entity that processes personal data on behalf of a controller. \"Sensitive Personal Data\" means special categories of data subject to enhanced protections under applicable law. \"Device Data\" means technical information generated by your device or operating system. \"Local-First / On-Device Processing\" means processing performed on your device without transmitting underlying content to our servers as a default architecture. 1.3 Contact Data Controller: Jiaxu Li Email: lijiaxudeapple@icloud.com DPO/Representative: Not appointed (not required at current scale). Note: No physical address is collected or published here. 2. Processing Principles Privacy-by-Design and Default. Privacy-protective defaults to reduce collection and exposure. Data Minimization. Process only what is reasonably necessary. Purpose Limitation. Use data only for explicit, legitimate purposes described here or at collection. Least Privilege and Access Control. Restricted access for authorized personnel/providers. Local-First Architecture. Prefer on-device processing; minimize transmitted data when network use is required. Encryption and Key Separation. Industry-standard encryption; logical key separation where supported; no guarantee of absolute security. No Sale of Personal Data. No selling, renting, or trading of personal data. Lawful, Necessary, Minimum Disclosure. Disclosures, if any, follow lawful authority and minimum scope. User Choice and Consent. Optional/diagnostic data only with consent where required. 3. Data Categories and Collection Methods 3.1 Default Position: Limited Collection Core functions often work without accounts and without uploading user content. 3.2 Data You Provide Contact data; support/feedback content; user inputs for features. Local-first design keeps content on device when feasible; if server interaction is needed, in-product notice is provided. 3.3 Technical and Diagnostic Data Limited device/app info, crash/diagnostic data, and security logs as needed for performance and security; optional diagnostics are opt-in where required. 3.4 Account Data (If Applicable) Only if accounts exist; otherwise not applicable. 3.5 Payment and Subscriptions App Store purchases handled by Apple; we receive only minimal metadata for entitlements and fraud prevention. 3.6 Cookies and Similar Technologies See Section 5. 3.7 Data We Do Not Intend to Collect No intentional collection of government IDs, precise real-time geolocation, or sensitive categories unless explicitly required with notice/consent. 4. Purposes of Processing and Legal Bases Purposes: service delivery, security/fraud prevention, reliability/debugging, support, legal compliance, optional communications. Legal bases (jurisdiction-dependent): contract necessity; legitimate interests (security/minimal logging, subject to objection); consent (optional analytics/diagnostics, non-essential cookies, marketing where applicable); legal obligation; vital interests (rare). No automated decision-making with legal or similar significant effects by default. 5. Cookies, SDKs, Analytics, and Tracking Default: no cross-site tracking. Essential cookies may be used for core operation. Optional analytics/SDKs, if used, are disclosed with opt-in/opt-out controls. If none are used, non-essential analytics/SDKs are off by default. Global Privacy Control signals honored where legally required (see Annex B). 6. Data Sharing and Third-Party Disclosures No sale/rent/trade of personal data. Sharing only with processors under contract, for legal compliance, legitimate business transfers, or aggregated/de-identified form. Third-party links/integrations follow their own policies. 7. Government and Law-Enforcement Requests Respond only to legally valid, properly scoped requests; verify authority, review scope, challenge overbroad demands, disclose minimum required data, maintain records where permitted. Local-first and encryption mean we may not possess readable user content in ordinary operations. 8. Data Retention and Deletion Retain only as necessary. Defaults: Support tickets 24 months after closure; security logs 90 days; optional crash/diagnostics 180 days then deleted/aggregated; website logs 30 days; account data (if any) until deletion plus up to 180 days for legal/security. Deletion requests per Section 11; legal/security exceptions may delay final deletion. Local data can be removed via uninstall or in-app deletion; OS backups may retain residual data. 9. Security Measures and Risk Notice Measures include encryption in transit and, where appropriate, at rest; key/environment separation where supported; access controls and audit logging; secure development and vulnerability management; incident response. No absolute security; users should secure devices and credentials. 10. Minors Not intended for children below the applicable age without required consent. Additional notices/controls apply for family/education contexts if relevant. 11. Your Rights and How to Exercise Them Rights may include access, correction, deletion, restriction, objection, portability, consent withdrawal, and non-discrimination (jurisdiction-dependent). Submit requests to lijiaxudeapple@icloud.com with sufficient detail for verification. Responses follow legal timelines and exceptions. In-app controls available where provided. 12. Cross-Border Transfers When data is processed outside your region, we apply required safeguards (e.g., SCCs, technical measures, transfer assessments) per applicable law. See Annex C and D for specifics. 13. Apple Platform and App Store Boundary Terms Apple may independently process data under Apple policies. This Policy covers only processing we control. App Store transactions handled by Apple; we keep minimal metadata for entitlements/fraud prevention. Permissions requested only when feature-dependent; manageable in OS settings. 14. Updates to This Policy We may update for legal, technical, or operational reasons. Material changes will include reasonable notice and an updated Last Updated date. 15. Governing Law and Dispute Resolution Chosen Default: Laws of England and Wales govern this Policy. Disputes are subject to the exclusive jurisdiction of the courts of London, England, except where mandatory local consumer law provides otherwise. EEA/UK Consumer Protection: EEA/UK consumers may bring proceedings in local courts and rely on mandatory consumer protections. Note on Mandatory Local Laws: Mandatory laws in your country/region may apply regardless of this choice of law. Annex A: International (General) Addendum Controller: Jiaxu Li; Email: lijiaxudeapple@icloud.com; No physical address published. Service providers: hosting, security, optional analytics/diagnostics, support tooling (primarily US-based unless otherwise stated). Retention follows Section 8; no sale of data. Annex B: United States Addendum (CCPA/CPRA Notice) Categories: identifiers (email if provided), internet/network activity (IP, logs), device information, diagnostics (opt-in). No sale or cross-context behavioral “sharing” by default. Sensitive personal information not used in ways requiring “limit” rights. Rights: know, access, delete, correct, opt out of sale/share (not applicable by default), limit sensitive use (not applicable), non-discrimination. Global Privacy Control honored on the Website where applicable. Contact: lijiaxudeapple@icloud.com. Retention per Section 8. Annex C: European Economic Area/UK Addendum (GDPR/UK GDPR Notice) Controller: Jiaxu Li (individual). Representative: not appointed (not legally required for current scale). DPO: not appointed. Legal bases: Art. 6(1)(b) contract; Art. 6(1)(f) legitimate interests (security/minimal logging; objection right applies); Art. 6(1)(a) consent for optional analytics/diagnostics and non-essential cookies; Art. 6(1)(c) legal obligation. Special category data not expected; if needed, explicit notice and Art. 9 condition will apply. International transfers use SCCs and supplementary measures when needed. Retention per Section 8. Supervisory authority right to complain preserved. Annex D: Mainland China Addendum (PIPL/DSL/CSL Notice) Personal Information Handler: Jiaxu Li. Contact: lijiaxudeapple@icloud.com. Phone: not provided. Data is primarily processed/hosted in the United States. If cross-border transfer from Mainland China occurs, required procedures (e.g., standard contract filing or assessment) will be completed and separate consent obtained where required, with notice of recipient, purpose, and data types. Sensitive personal information is not processed by default; if a feature requires it, prominent notice and separate consent will be obtained. Rights: access, copy, correction, deletion, withdrawal of consent, account cancellation (if applicable), and explanation of processing rules, subject to legal exceptions. Retention per Section 8. 2026 Jiaxu Li"
  },
  {
    "url": "/recognition/",
    "title": "Recognition",
    "text": "Awards, events and certifications. See all Swift Student Challenge Apple's annual challenge for student developers to build an app playground in Swift. 2026 Winner With PodcastIntelligent . 2026 · Winner With the app playground that became PodcastIntelligent , which turns a prompt into a multi-voice podcast with Apple Intelligence . 2024 Winner With MyHeart. 2024 · Winner With MyHeart, a mood-journaling playground with a goose as its guide, built in five days . MAIC 1 The Mobile Application Innovation Contest, co-organized by Apple and Zhejiang University. 2026 First Prize 11th China Collegiate Computing Contest. 2026 · First Prize 11th China Collegiate Computing Contest, Mobile Application Innovation Contest, middle school group, Qihang track . With an upcoming developer tool. 2025 First place, Challenge group 2025 Swift Middle School Challenge. 2025 · First place, Challenge group 2025 Swift Middle School Challenge, part of MAIC, with MemoryCard . WWDC at Apple Park 2026 WWDC26 Invited as a Swift Student Challenge winner. 2026 · WWDC26 Invited to Apple Park as a Swift Student Challenge winner , for the special event, a session day that week and the Apple Developer Community Meetup . 2025 WWDC25 Invited as a developer. 2025 · WWDC25 Invited to Apple Park as a developer , to attend the special event in person. On stage Sharing what I build and learn with other students. 2026 Students, Swift, St★rs Presenter in Cupertino, WWDC26 week. 2026 · Students, Swift, St★rs Presenter at the showcase of Swift Student Challenge winners held in Cupertino during WWDC26 week, showing PodcastIntelligent. 2025 Sharing and Practice from WWDC For Swift Student Challenge applicants. 2025 · Sharing and Practice from WWDC A session for students preparing for the Swift Student Challenge, run by a Swift Coding Club . 2025 MAIC finals showcase On stage at the 10th MAIC finals. 2025 · MAIC finals showcase Spoke on stage for the middle school group at the 10th MAIC finals showcase , presenting MemoryCard. Apple Vision Pro and security 2024 Apple Vision Pro launch GardenLab, on day one. 2024 · Apple Vision Pro launch GardenLab was on the App Store the day Apple Vision Pro launched . Apple sent its thanks to the developers who were there from the start. 2023 Apple security acknowledgements Credited for iOS 16.4 and iOS 17. 2023 · Apple security acknowledgements Credited in Apple's security notes for iOS 16.4 and iOS 17. Details Certifications 2025 Apple Teacher Apple's recognition for educators who complete its learning program. 2024 App Development with Swift, Certified User Certification in app development with Swift."
  },
  {
    "url": "/security/",
    "title": "Security",
    "text": "Acknowledged by Apple. For reporting security issues, because privacy is a fundamental human right for everyone. See details Acknowledgements When iOS showed something it shouldn't have, the report went straight to Apple. Each update below lists Jiaxu Li under Additional recognition , Apple's thanks to people who helped make its software safer. Sep 2023 iOS 17 and iPadOS 17 · Notifications \"We would like to acknowledge Jiaxu Li for their assistance.\" About the security content of iOS 17 and iPadOS 17 Mar 2023 iOS 16.4 and iPadOS 16.4 · Status Bar Credited together with another researcher. About the security content of iOS 16.4 and iPadOS 16.4 Privacy in my own work Data Not Collected. Every app. Every app on the App Store carries the privacy label Data Not Collected , and the open source tools stay off the network. Encrypted memories. MemoryCard encrypts cards and syncs them only through your own iCloud. Learn more Private prompts. PodcastIntelligent generates on device where available, and prompts stay private. Learn more Tools that stay offline. GlassIntroKit makes no network requests, and SwiftDelta makes none during analysis. Learn more Read the Privacy Policy that covers these apps. Reporting Found an issue in one of these apps or this site? Email the details privately. Issues in Apple products go to Apple Security Research ; keep them private until Apple has looked at them."
  },
  {
    "url": "/swift/",
    "title": "Swift",
    "text": "Contributing to Swift. Authoring Swift Evolution proposals and working in the C++ Interoperability Workgroup. Swift Evolution Swift Forums Swift Evolution Changing the language, in public. New features in Swift start as Swift Evolution proposals , written up in the swift-evolution repository and pitched and reviewed in public on the Swift Forums. SE-0554 Deployment target conditional compilation Adds #if deploymentTargetAtLeast(…) , a compile-time check of the minimum OS a module is built for. Reviewed September 29 to October 12, 2026. Learn more Next More to come. New proposals will appear here as they are pitched. C++ Interoperability Workgroup The workgroup guides how Swift and C++ call each other directly , without a bridging layer, so existing C++ code can be used from Swift and the other way around. Member since October 2025. Joined the workgroup in October 2025 , by invitation. On the Swift Forums. Listed in the cxx-interop-workgroup group on the Swift Forums. In Cupertino. Attended the Swift Contributor Social during WWDC26 week. The workgroup on Swift Forums Open source tools Open source tools. GlassIntroKit and SwiftDelta, two Swift projects on GitHub, are on the Open Source page."
  },
  {
    "url": "/swift/se-0554/",
    "title": "SE-0554",
    "text": "SE-0554 Deployment target conditional compilation A proposal to add #if deploymentTargetAtLeast(…) , a compile-time check of the minimum OS a module is built for. Read the proposal Follow the review Choose code by the deployment target. The problem. if #available checks the operating system at run time, so it cannot choose between imports, type aliases, conformances or whole declarations. Projects work around this with custom build flags that have to be kept in sync with the deployment target by hand. The proposal. A compilation condition that takes the same platform-and-version list as #available , ends with * , and combines with ! , && , || and conditions such as canImport . The compiler already knows the deployment target from the target triple. One lock, the right import. Use Mutex where the deployment target has it, and fall back everywhere else. #if deploymentTargetAtLeast(macOS 15, iOS 18, *) import Synchronization typealias Lock < State > = Mutex < State > #else import os typealias Lock < State > = OSAllocatedUnfairLock < State > #endif From pitch to review. Pitch Swift Forums. The idea and its design, discussed in public with the community. Read the pitch Proposal Merged. Into the swift-evolution repository as SE-0554, with prototype implementations. Read the proposal Review September 29 to October 12, 2026. The formal Swift Evolution review , run by a review manager on the Swift Forums. Follow the review Details Proposal SE-0554 Author Jiaxu Li Implementation Prototypes in the Swift compiler and swift-syntax, behind the experimental feature DeploymentTargetCondition Links Proposal · Pitch · Review All Swift Evolution proposals"
  }
]
