Changelog

Xcode projects build in previews

Oct 6, 2026·8 min read

This entry covers October 6 through October 14. Peach builds Xcode projects and Swift packages in previews, with Swift and Kotlin source files importing directly. Controls, keyboards, Android dialogs and scroll physics are measured against the real platforms, and cameras, notifications and Live Activities light up. Behind that, frames draw only what changed and downloads move cheaper.

Platform

Swift apps build from their own projects

Xcode projects open their app targets and workspaces build the way Xcode does, with schemes and configurations honored. Remote Swift packages compile from their pins, and SwiftPM manifests resolve as SwiftPM reads them.

Swift and Kotlin source files import directly in Peach simulator and Contrast previews, and Xcode 27 JSON projects open too.

Controls and scrolling keep native timing

Steppers repeat with measured iOS acceleration, switches match native fill and tint release timing, and sliders bind against the native input clock. Date pickers normalize intervals independently of wheel momentum, and text fields edit with native focus and callback order.

The iOS keyboard restores native predictive bar geometry. Pager flick velocity holds at page boundaries, and paging settles with UIKit’s own page choice and spring.

Android previews feel like Android

Dialogs take Android’s preferred width, and buttons and text match native heights and casing. Gboard number and phone pads draw with measured IME insets, and date fields open the native Android calendar.

Camera, notifications and device services

Camera previews decode barcodes in every browser, and Android camera previews match native options with cancellable countdown capture. Live Activities appear on the simulated Lock Screen and in the Dynamic Island, local notifications match native banner text and height, and Device Info reports native battery and power state.

Tech

Motion draws only what changed

Moving vector layers sample a motion image while the app moves, with 1.5x density headroom and a 96 MiB budget, and backdrops blur at half density in motion. Tree deltas cross to the compositor through shared memory, layers replay only until the settle deadline, and invalidation stays limited to damaged nodes.

Appearance changes repaint only the glass and text they touch: tint steps repaint only surfaces holding glass, and text-size steps skip other compositor surfaces.

Frames and downloads move cheaper

Pixel conversion runs in a shared bounded native workspace, and remote frame work stays inside the existing host interval. Font and symbol downloads are shared across browser workers once per page, image downloads queue six at a time, and the Linux host archive bundles Mesa lavapipe.

Native iOS fidelity

  • Full-screen modal motion matches the UIKit spring
  • Touches dispatch to UIViews with tap, pan, pinch and scroll zoom
  • Switch glass lenses keep native corners, refraction and coverage
  • Switch and slider lens lift and settle follow the iOS 27 oracle
  • Split columns clear selection on back, and detail toolbars match native portrait geometry
  • An expanded split view’s detail column is an accessibility group with its own toolbar
  • Symbol-only buttons read their SF Symbol accessibility names
  • Labeled content text fields fill to their native control slot width
  • Native iOS date picker modals present through the shared sheet
  • UIKit navigation stack pops run natively
  • Tab controller replacement and selection match native

React Native and SwiftUI

  • Failed Swift compiles name the missing APIs and modules
  • Swift apps compile with the Swift 6.4 standard library
  • Combine reducers, filters, timed and multi-upstream operators match iOS 27
  • StoreKit review prompts, store sheets and legacy products answer as the iOS 27 simulator does
  • Firebase auth runs email and password over the live identity seam
  • Firestore gains an idiomatic local surface with offline Codable reads and writes
  • Community checkbox and slider run over native seams
  • Expo Symbols runs over a native SymbolModule seam
  • Nitro crypto runs over a native hybrid seam
  • Rive views bind inputs, text runs, events and view models with native-measured animation
  • react-native-svg filters render on iOS and Android
  • One battery queries and subscriptions run through the native receiver
  • One scanner reports unavailability with native contact values
  • SwiftUI color, distortion and layer effects run Metal functions in the compositor
  • Original Metal kernels and AIR stages run with native pixels
  • MapKit annotations track with reuse, POI filters and user location
  • MapKit geocoding answers measured values
  • WebKit gains history items, directed navigation and Safari pages with native callbacks
  • Table and collection views keep native identity, reuse, separators and updates
  • AVFoundation and AVKit cover media playback, recording, speech and notification actions
  • Notification actions, categories and calendar triggers match iOS 27
  • SpriteKit sprites, physics and actions match native
  • GameplayKit sampling and distributions match iOS 27
  • CoreLocation answers with measured iOS 27 behavior
  • GameController exposes measured input names, event options and hardware-free defaults

Android and Kotlin

  • Imported Kotlin modules get Log, SystemClock and Handler/Looper
  • Local Expo Kotlin modules run on Android with records, enums, Either, shared objects and typed arrays, and release bundles carry Expo Kotlin
  • Imported Compose text editing and done callbacks work across hosts

Simulator and tooling

  • Live Activities show minimal and expanded presentations
  • Background notification banners show the posting app icon
  • iPad Pro App Store screenshots capture at native resolution
  • Design captures the keyboard a screen settles with

Peach Desktop

  • The native host versions with the runtime and installs from the CLI
  • /Applications/Peach.app is the native host’s one install path
  • Personal home screen apps run in the installed desktop app
  • Simulator windows move from the background, the Dynamic Island and Cmd+Shift anywhere
  • The inspector opens from the native context menu
  • Native host realms profile with peach perf cpu
  • Mac desktop commands default to the native host
  • macOS and Linux Electron delivery retires, keeping Windows packaging
  • Desktop workers decode barcodes and encode video and audio natively
  • Page animation frames follow the display refresh rate
  • Web notifications deliver from the default Mac host
  • Linux windows bind to their selected runtime version
  • Linux headless host releases ship self-contained
  • The control surface performs menu items, lists windows and makes one key

Testing and CLI

  • Peach open returns when the app is ready instead of after a fixed sleep
  • Peach publishes Expo projects through the hosted preview build runner
  • Registered iPhone builds deliver through one deploy command
  • The CLI shows the supported remote iOS flag with bundle examples
  • Explicit simulator ports resolve without local discovery lockfiles
  • Close all and close others point at their flags
  • Maestro compare runs a partner’s flows on iOS and Peach with an HTML diff report

Mobile

  • Projects pages sit left of chat on the phone pager, and tapping Build returns to chat
  • The preview pile’s top card pulls back into the PiP
  • Dragging the preview pile’s top card sideways shuffles runtimes
  • iOS Pro subscriptions sell and restore through Apple

Examples

  • Home Rally races friends’ saved ghosts and plays together from the finish
  • Hands-off smart steering finishes the lap, with a readable finish line
  • The lap board keeps your place, with friends’ boards and ghosts in their cars
  • The phone race drives like shipped mobile kart racers, with a modeled wheel, pedals and drift lever
  • The rally editor pans with one finger like mobile builders
  • The night floor gains sky sheen, satin tyres and toy-height grit
  • Oak boards, tatami mats, mown lawn and sky-deep furniture shade arrive
  • A rim-lit race car, woven rugs and a ringed start light dress the scene
  • One accepted furniture change fits between rally laps
  • Finance lands its true black instrument redesign
  • Travel turns every trip into a poster with washes, stamps and profile rows

AI building and chat

  • Technical, Gray Float, Luminous Mesh and Playful Character join the visual style catalog
  • Large Type joins the visual style catalog
  • A project switch closes out the departing reply in its own project
  • Build progress appends plain messages and retains each presentation card

Accounts, billing and reliability

  • Peach matches a new account’s first top-up up to $20, once per card
  • Auto top-up runs on a saved card, with a $5-a-month Contrast starter
  • Verified sign-ups get a $1 credit, once per Gmail inbox
  • The Peach Team subscription brings yearly prices, and top-ups seed cloud
  • Apple subscriptions verify, with a native StoreKit purchase module
  • Unfunded accounts can create teams from the shell
  • Email signup is exposed through the hosted product login form
  • Native verification-code inputs focus on mount

Deployment and publishing

  • Managed Android APK builds and downloads are restored
  • Deploys show structured build diagnostics instead of shell error wrappers
  • Configured One updates get staging and host reload

Cloud simulators and Box

  • A remote Box app launches from a link

Fixes and polish

4697 fixes and 496 performance improvements landed from October 6 through October 14.

Ready?

Create a web, iOS, and Android app in minutes with agents working alongside you.