I have founded that .task modifier on View or using Task {} in .onAppear{} modifier has a delay about 20-30 ms to switch context. But if I'm using Task.detached with .high priority, so there is no any delay and it works fast.
The second problem is when async func from ViewModel was called in Task.detached from .onAppear modifier there is still delay about 20-25 ms. Is there any fix for it?
This would be expected. .task { Task { } } inherits the @MainActor isolation, and so runs on the next loop of the main run loop at the earliest. .task { Task.detached { } } runs on the default executor and so may begin execution sooner.
Thanks for explanation. But we start collecting metrics from .onAppear and there is still delay from .onAppear to .task. Is it possible to call async func from .onAppear without delay?