SpriteKit FPS drops significantly on iOS 26.3.1 when touching screen, even in minimal scene

Title: SpriteKit FPS drops significantly on iOS 26.3.1 when touching screen, even in a minimal scene

Summary: On a real device running iOS 26.3.1, FPS drops significantly in a very simple SpriteKit scene when touching or moving a finger on the screen. This happens even with a minimal setup where update(_:), touchesBegan, and touchesMoved are not overridden. Because the issue reproduces in a minimal scene, I suspect a performance regression in SpriteKit and/or iOS rather than in app-specific logic.

Environment:

  • OS: iOS 26.3.1
  • Device: iPhone 12
  • Xcode: 26.3
  • Build Configuration: Release
  • Framework: SpriteKit
  • FPS measurement: SKView.showsFPS = true

Steps to Reproduce:

  1. Present a minimal SpriteKit scene.
  2. Enable SKView.showsFPS = true.
  3. Add only a very small number of nodes to the scene.
  4. Do not override update(_:), touchesBegan, or touchesMoved.
  5. Repeatedly tap the screen or move a finger around.

Actual Result:

  • The scene stays around 60 FPS when idle.
  • FPS drops significantly when touching or moving a finger on the screen.
  • The drop appears to get worse as the node count increases.
  • The issue still reproduces even if touchesMoved is empty or not overridden at all.

Expected Result:

  • A minimal scene like this should remain close to 60 FPS even while touching the screen.
  • At minimum, FPS should not drop this much when the app does not perform meaningful touch handling.

Notes:

  • Time Profiler does not point to a clear heavy app-specific function; instead, frame time worsens during touch interaction.
  • Since this also reproduces in a minimal scene, I do not believe the root cause is only in my game logic.
  • Similar reports exist describing SpriteKit framerate drops on recent iOS versions, including cases where the issue appears in very simple scenes.

Minimal Reproducible Code:

import SpriteKit

final class TestScene: SKScene {
    override func didMove(to view: SKView) {
        backgroundColor = .black
        scaleMode = .resizeFill

        let textures = [
            SKTexture(imageNamed: "title1"),
            SKTexture(imageNamed: "title2"),
            SKTexture(imageNamed: "title3"),
            SKTexture(imageNamed: "title4"),
            SKTexture(imageNamed: "title5"),
        ]

        let node = SKSpriteNode(texture: textures[0])
        node.position = CGPoint(x: size.width * 0.5, y: size.height * 0.5)
        addChild(node)

        let anim = SKAction.animate(
            with: textures,
            timePerFrame: 8.0 / 60.0,
            resize: false,
            restore: false
        )
        node.run(.repeatForever(anim))
    }
}
import UIKit
import SpriteKit

final class GameViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let skView = SKView(frame: view.bounds)
        skView.showsFPS = true
        skView.showsNodeCount = true
        skView.ignoresSiblingOrder = true
        skView.preferredFrameRate = 60

        view.addSubview(skView)

        let scene = TestScene(size: skView.bounds.size)
        skView.presentScene(scene)
    }
}
SpriteKit FPS drops significantly on iOS 26.3.1 when touching screen, even in minimal scene
 
 
Q