prewarm URLs in onPressIn

This commit is contained in:
Samuel Newman
2025-11-23 12:47:13 +02:00
parent 8424083de9
commit d138484187
9 changed files with 76 additions and 2 deletions
@@ -0,0 +1,6 @@
{
"platforms": ["ios"],
"ios": {
"modules": ["UrlPrewarmModule"]
}
}
+1
View File
@@ -0,0 +1 @@
export * from './src/UrlPrewarmModule'
@@ -0,0 +1,25 @@
Pod::Spec.new do |s|
s.name = 'UrlPrewarm'
s.version = '1.0.0'
s.summary = 'A sample project summary'
s.description = 'A sample project description'
s.author = ''
s.homepage = 'https://docs.expo.dev/modules/'
s.platforms = {
:ios => '15.1',
:tvos => '15.1'
}
s.source = { git: '' }
s.static_framework = true
s.dependency 'ExpoModulesCore'
# Swift/Objective-C compatibility
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES',
}
s.frameworks = 'SafariServices'
s.source_files = "**/*.{h,m,mm,swift,hpp,cpp}"
end
@@ -0,0 +1,13 @@
import ExpoModulesCore
import SafariServices
public class UrlPrewarmModule: Module {
public func definition() -> ModuleDefinition {
Name("UrlPrewarm")
AsyncFunction("prewarmUrlsAsync") { (urls: [String]) in
let validUrls = urls.compactMap { URL(string: $0) }
SFSafariViewController.prewarmConnections(to: validUrls)
}
}
}
@@ -0,0 +1,7 @@
import {requireNativeModule} from 'expo'
const NativeModule = requireNativeModule('UrlPrewarm')
export function prewarmUrlsAsync(urls: string[]): Promise<void> {
return NativeModule.prewarmUrlsAsync(urls)
}
@@ -0,0 +1,5 @@
export function prewarmUrlsAsync(_urls: string[]): Promise<void> {
throw new Error(
'[Not available] prewarmUrlsAsync is not available on this platform',
)
}