From a1d8ea2ac19eab528eb0b782dcd840db42a80fa9 Mon Sep 17 00:00:00 2001 From: Justin Spahr-Summers Date: Thu, 12 Nov 2015 05:19:59 -0800 Subject: [PATCH] Increase QoS of JavaScript thread on iOS 8+ Summary: This thread is effectively the "main thread" for JavaScript code in React Native applications, so it should have as high a quality-of-service as possible. public Reviewed By: javache, nicklockwood Differential Revision: D2641878 fb-gh-sync-id: 3c60c1abeeab9e7405d6fc9602e0d4ccfab1ea1b --- React/Executors/RCTContextExecutor.m | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/React/Executors/RCTContextExecutor.m b/React/Executors/RCTContextExecutor.m index ee7678298..28a40d426 100644 --- a/React/Executors/RCTContextExecutor.m +++ b/React/Executors/RCTContextExecutor.m @@ -279,7 +279,13 @@ static void RCTInstallJSCProfiler(RCTBridge *bridge, JSContextRef context) selector:@selector(runRunLoopThread) object:nil]; javaScriptThread.name = @"com.facebook.React.JavaScript"; - javaScriptThread.threadPriority = [NSThread mainThread].threadPriority; + + if ([javaScriptThread respondsToSelector:@selector(setQualityOfService:)]) { + [(id)javaScriptThread setQualityOfService:NSOperationQualityOfServiceUserInteractive]; + } else { + javaScriptThread.threadPriority = [NSThread mainThread].threadPriority; + } + [javaScriptThread start]; return [self initWithJavaScriptThread:javaScriptThread context:nil];