RAW 9 is a major new decoder version for CIRAWFilter that uses a tiled CoreML model running on the Apple Neural Engine to combine demosaicing and denoising in a single pass, dramatically improving sharpness, color accuracy, and noise reduction for hundreds of supported camera models.
β’ New .version9 decoder backed by a tiled CoreML model running on the Apple Neural Engine replaces hand-tuned algorithmic pipeline
β’ New class method CIRAWFilter.supportedCameraModels(for:) returns an array of supported models for a given decoder version
β’ colorNoiseReductionAmount, detailAmount, and moireReductionAmount properties are deprecated/no-op in RAW 9
β’ CIImageProcessor gains explicit output tile size control and temporary CVPixelBuffer APIs for custom processor authors
β’ RAW 9 delivers the biggest quality leap in Apple's RAW pipeline history β dramatically better noise reduction and sharpness, especially at high ISOs β without changing your rendering pipeline, just a few lines of code to opt in
β’ The CoreML-backed pipeline runs on the Apple Neural Engine with Core Image's intermediate caching, keeping interactive editing fast and responsive even though it's running hundreds of model passes per image
β’ Over 784 camera models are supported at launch (including iPhone DNG/ProRAW), with more added OTA, and per-property isSupportedAPI lets you gracefully handle version differences
Loads a RAW file using CIRAWFilter, opts into the RAW 9 decoder, and renders it into a SwiftUI view with a live exposure slider that benefits from Core Image's intermediate caching.
import SwiftUIimport CoreImage+import CoreImage.CIFilterBuiltins+import MetalKitβ// Pre-iOS 27: RAW 8 was the default; no RAW 9, no supportedCameraModels API+// MARK: - RAW Rendering Model@Observableβfinal class LegacyRAWImageModel {+final class RAWImageModel {var exposureAdjustment: Float = 0.0 {didSet { renderRAW() }}var renderedImage: UIImage?+ var isRAW9Available = false+ var supportedModels: [String] = []β private let context = CIContext(options: [.cacheIntermediates: true])+ private let context: CIContextprivate var rawFilter: CIRAWFilter?β init() { loadRAWFile() }+ init() {+ // One CIContext per use-case, caching enabled for interactive editing+ let device = MTLCreateSystemDefaultDevice()!+ context = CIContext(mtlDevice: device, options: [.cacheIntermediates: true])+ loadRAWFile()+ }private func loadRAWFile() {+ // Query which camera models support RAW 9+ supportedModels = CIRAWFilter.supportedCameraModels(for: .version9)+guard let url = Bundle.main.url(forResource: "sample", withExtension: "ARW"),β let filter = CIRAWFilter(imageURL: url) else { return }+ let filter = CIRAWFilter(imageURL: url) else {+ return+ }+rawFilter = filterβ // RAW 8 used by default; no way to request version9β // No supportedCameraModels class method existed++ // Opt into RAW 9 only if available for this file+ if filter.supportedDecoderVersions.contains(.version9) {+ filter.decoderVersion = .version9+ isRAW9Available = true+ }++ // Use scaleFactor to match screen resolution for interactive editing+ let screenScale = UIScreen.main.scale+ filter.scaleFactor = Float(1.0 / screenScale)+renderRAW()}func renderRAW() {guard let filter = rawFilter else { return }++ // Apply editable properties β all work better in RAW 9filter.exposureAdjust = exposureAdjustmentfilter.luminanceNoiseReductionAmount = 0.5β filter.colorNoiseReductionAmount = 0.5 // was effective in RAW 8β filter.detailAmount = 0.5 // was effective in RAW 8β filter.moireReductionAmount = 0.5 // was effective in RAW 8filter.sharpnessAmount = 0.7+ filter.contrastAmount = 0.6+ // NOTE: colorNoiseReductionAmount has no effect in RAW 9+ // detailAmount and moireReductionAmount also no-op in RAW 9guard let output = filter.outputImage else { return }+if let cgImage = context.createCGImage(output, from: output.extent) {renderedImage = UIImage(cgImage: cgImage)}}+}++// MARK: - SwiftUI View+struct RAWEditorView: View {+ @State private var model = RAWImageModel()++ var body: some View {+ NavigationStack {+ VStack(spacing: 16) {+ if let image = model.renderedImage {+ Image(uiImage: image)+ .resizable()+ .scaledToFit()+ .cornerRadius(12)+ } else {+ ProgressView("Loading RAWβ¦")+ .frame(maxWidth: .infinity, maxHeight: 300)+ }++ Label(+ model.isRAW9Available ? "RAW 9 Active (Neural Engine)" : "RAW 8 (fallback)",+ systemImage: model.isRAW9Available ? "sparkles" : "photo"+ )+ .foregroundStyle(model.isRAW9Available ? .green : .secondary)+ .font(.caption)++ VStack(alignment: .leading) {+ Text("Exposure: \(model.exposureAdjustment, specifier: "%.2f") EV")+ .font(.subheadline)+ Slider(value: $model.exposureAdjustment, in: -3...3, step: 0.1)+ }+ .padding(.horizontal)++ Text("Supported RAW 9 cameras: \(model.supportedModels.count)")+ .font(.caption2)+ .foregroundStyle(.secondary)+ }+ .padding()+ .navigationTitle("RAW 9 Editor")+ }+ }}
Foundation Models is a new Apple framework introduced in iOS 27 that gives developers on-device access to the same Apple Intelligence language model powering system features, enabling text generation, structured output, and tool-calling entirely on-device without a network connection.
iOS 27 opens the Foundation Models framework to third-party LLM providers via a new public LanguageModel protocol, enabling anyone to integrate custom, server-based, or open-source models using the same Swift API as Apple's on-device system model.
App Schemas let developers describe their app's content and actions using pre-defined domain schemas (like the Calendar domain) so Siri can understand, search, and act on app data without custom NLP. Entities conforming to IndexedEntity are donated to Spotlight's semantic index, enabling natural-language queries over app content.
In-depth guide
iOS 27 On-Device AI & Apple Intelligence βRAW 9 is NOT enabled by default β you must explicitly check supportedDecoderVersions for .version9 and set decoderVersion = .version9. colorNoiseReductionAmount, detailAmount, and moireReductionAmount have no effect in RAW 9. For exporting, set cacheIntermediates to false and raise memoryLimit to 512β1024 MB for best throughput.
RAW 9 runs on the Apple Neural Engine; best performance on devices with ANE (A12 and later). Older devices may fall back or be slower.
Visual Intelligence brings iOS 17's Visual Look Up capabilities to a new developer-facing API surface in iOS 27, letting apps pipe live camera frames or static images through on-device scene understanding to extract subjects, text, barcodes, and rich semantic labels without any cloud round-trip.