Custom EntityAction - different behaviour VisionOS 2.6 vs 26

I implemented an EntityAction to change the baseColor tint - and had it working on VisionOS 2.x.

import RealityKit
import UIKit

typealias Float4 = SIMD4<Float>

extension UIColor {
	
	var float4: Float4 {
		if
			cgColor.numberOfComponents == 4,
			let c = cgColor.components
		{
			Float4(Float(c[0]), Float(c[1]), Float(c[2]), Float(c[3]))
		} else {
			Float4()
		}
	}
}

struct ColourAction: EntityAction {
	
	// MARK: - PUBLIC PROPERTIES
	let startColour: Float4
	let targetColour: Float4
	
	// MARK: - PUBLIC COMPUTED PROPERTIES
	var animatedValueType: (any AnimatableData.Type)? { Float4.self }
	
	// MARK: - INITIATION
	init(startColour: UIColor, targetColour: UIColor) {
		self.startColour = startColour.float4
		self.targetColour = targetColour.float4
	}
	
	// MARK: - PUBLIC STATIC FUNCTIONS
	@MainActor static func registerEntityAction() {
		
		ColourAction.subscribe(to: .updated) { event in
			guard let animationState = event.animationState else { return }
			let interpolatedColour = event.action.startColour.mixedWith(event.action.targetColour, by: Float(animationState.normalizedTime))
			animationState.storeAnimatedValue(interpolatedColour)
		}
	}
}

extension Entity {
	
	// MARK: - PUBLIC FUNCTIONS
	func changeColourTo(_ targetColour: UIColor, duration: Double) {
		
		guard
			let modelComponent = components[ModelComponent.self],
			let material = modelComponent.materials.first as? PhysicallyBasedMaterial
		else {
			return
		}
		
		let colourAction = ColourAction(startColour: material.baseColor.tint, targetColour: targetColour)
		
		if let colourAnimation = try? AnimationResource.makeActionAnimation(for: colourAction, duration: duration, bindTarget: .material(0).baseColorTint) {
			playAnimation(colourAnimation)
		}
	}
}

This doesn't work in VisionOS 26. My current fix is to directly set the material base colour - but this feels like the wrong approach:

	@MainActor static func registerEntityAction() {
		
		ColourAction.subscribe(to: .updated) { event in
			guard
				let animationState = event.animationState,
				let entity = event.targetEntity,
				let modelComponent = entity.components[ModelComponent.self],
				var material = modelComponent.materials.first as? PhysicallyBasedMaterial
			else { return }
			
			let interpolatedColour = event.action.startColour.mixedWith(event.action.targetColour, by: Float(animationState.normalizedTime))
			
			material.baseColor.tint = UIColor(interpolatedColour)
			entity.components[ModelComponent.self]?.materials[0] = material
			animationState.storeAnimatedValue(interpolatedColour)
		}
	}

So before I raise this as a bug, was I doing anything wrong in the former version and got lucky? Is there a better approach?

Custom EntityAction - different behaviour VisionOS 2.6 vs 26
 
 
Q