From 75663b5b31f4178819d4c72a53117e237347c61b Mon Sep 17 00:00:00 2001 From: chrispader Date: Thu, 23 Jul 2026 16:27:48 +0200 Subject: [PATCH 1/4] fix(ios): enable SQLite performance mode --- .../react-native-nitro-sqlite/RNNitroSQLite.podspec | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec b/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec index 93065ff2..c7ec143b 100644 --- a/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec +++ b/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec @@ -48,14 +48,12 @@ Pod::Spec.new do |s| optimizedCflags = '$(inherited) -DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DEPRECATED=1 -DSQLITE_OMIT_PROGRESS_CALLBACK=1 -DSQLITE_OMIT_SHARED_CACHE=1 -DSQLITE_USE_ALLOCA=1' - if performance_mode == '1' then + if performance_mode == 1 log_message.call("Thread unsafe (1) performance mode enabled. Use only transactions! 🚀🚀") - xcconfig[:OTHER_CFLAGS] = optimizedCflags + ' -DSQLITE_THREADSAFE=0 ' - end - - if performance_mode == '2' then + s.pod_target_xcconfig["OTHER_CFLAGS"] = optimizedCflags + ' -DSQLITE_THREADSAFE=0 ' + elsif performance_mode == 2 log_message.call("Thread safe (2) performance mode enabled 🚀") - xcconfig[:OTHER_CFLAGS] = optimizedCflags + ' -DSQLITE_THREADSAFE=1 ' + s.pod_target_xcconfig["OTHER_CFLAGS"] = optimizedCflags + ' -DSQLITE_THREADSAFE=1 ' end if ENV['NITRO_SQLITE_USE_PHONE_VERSION'] == '1' then From 02c3bab65cac948b2842bb9af549b5a4e89ae1a1 Mon Sep 17 00:00:00 2001 From: chrispader Date: Thu, 23 Jul 2026 16:47:08 +0200 Subject: [PATCH 2/4] fix(ios): configure podspec performance flags --- .../react-native-nitro-sqlite/RNNitroSQLite.podspec | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec b/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec index c7ec143b..2bf3e0cf 100644 --- a/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec +++ b/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec @@ -30,7 +30,7 @@ Pod::Spec.new do |s| "cpp/**/*.{h,hpp,c,cpp}" ] - s.pod_target_xcconfig = { + xcconfig = { :GCC_PREPROCESSOR_DEFINITIONS => "HAVE_FULLFSYNC=1", :WARNING_CFLAGS => "-Wno-shorten-64-to-32 -Wno-comma -Wno-unreachable-code -Wno-conditional-uninitialized -Wno-deprecated-declarations", 'CLANG_CXX_LANGUAGE_STANDARD' => 'c++20', @@ -49,13 +49,15 @@ Pod::Spec.new do |s| optimizedCflags = '$(inherited) -DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DEPRECATED=1 -DSQLITE_OMIT_PROGRESS_CALLBACK=1 -DSQLITE_OMIT_SHARED_CACHE=1 -DSQLITE_USE_ALLOCA=1' if performance_mode == 1 - log_message.call("Thread unsafe (1) performance mode enabled. Use only transactions! 🚀🚀") - s.pod_target_xcconfig["OTHER_CFLAGS"] = optimizedCflags + ' -DSQLITE_THREADSAFE=0 ' + Pod::UI.puts "Thread unsafe (1) performance mode enabled. Use only transactions! 🚀🚀" + xcconfig["OTHER_CFLAGS"] = optimizedCflags + ' -DSQLITE_THREADSAFE=0 ' elsif performance_mode == 2 - log_message.call("Thread safe (2) performance mode enabled 🚀") - s.pod_target_xcconfig["OTHER_CFLAGS"] = optimizedCflags + ' -DSQLITE_THREADSAFE=1 ' + Pod::UI.puts "Thread safe (2) performance mode enabled 🚀" + xcconfig["OTHER_CFLAGS"] = optimizedCflags + ' -DSQLITE_THREADSAFE=1 ' end + s.pod_target_xcconfig = xcconfig + if ENV['NITRO_SQLITE_USE_PHONE_VERSION'] == '1' then s.exclude_files = "cpp/sqlite/sqlite3.c", "cpp/sqlite/sqlite3.h" s.library = "sqlite3" From b0598e4901d63cab796f1d22b203630b29b9f961 Mon Sep 17 00:00:00 2001 From: chrispader Date: Thu, 23 Jul 2026 17:10:06 +0200 Subject: [PATCH 3/4] fix(ios): define podspec logger --- packages/react-native-nitro-sqlite/RNNitroSQLite.podspec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec b/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec index 2bf3e0cf..8971346e 100644 --- a/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec +++ b/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec @@ -2,6 +2,9 @@ require "json" package = JSON.parse(File.read(File.join(__dir__, "package.json"))) folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1' +log_message = lambda do |message| + puts "\e[34m#{message}\e[0m" +end # TODO: Should be customizable in package.json. # Used to create comparable benchmark results @@ -49,10 +52,10 @@ Pod::Spec.new do |s| optimizedCflags = '$(inherited) -DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DEPRECATED=1 -DSQLITE_OMIT_PROGRESS_CALLBACK=1 -DSQLITE_OMIT_SHARED_CACHE=1 -DSQLITE_USE_ALLOCA=1' if performance_mode == 1 - Pod::UI.puts "Thread unsafe (1) performance mode enabled. Use only transactions! 🚀🚀" + log_message.call("Thread unsafe (1) performance mode enabled. Use only transactions! 🚀🚀") xcconfig["OTHER_CFLAGS"] = optimizedCflags + ' -DSQLITE_THREADSAFE=0 ' elsif performance_mode == 2 - Pod::UI.puts "Thread safe (2) performance mode enabled 🚀" + log_message.call("Thread safe (2) performance mode enabled 🚀") xcconfig["OTHER_CFLAGS"] = optimizedCflags + ' -DSQLITE_THREADSAFE=1 ' end From c9c9263b76e54ce8e5d9e644da5291f7248be337 Mon Sep 17 00:00:00 2001 From: chrispader Date: Thu, 23 Jul 2026 17:16:47 +0200 Subject: [PATCH 4/4] fix(ios): preserve Nitro pod configuration --- .../RNNitroSQLite.podspec | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec b/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec index 8971346e..61906122 100644 --- a/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec +++ b/packages/react-native-nitro-sqlite/RNNitroSQLite.podspec @@ -33,7 +33,17 @@ Pod::Spec.new do |s| "cpp/**/*.{h,hpp,c,cpp}" ] - xcconfig = { + optimizedCflags = '$(inherited) -DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DEPRECATED=1 -DSQLITE_OMIT_PROGRESS_CALLBACK=1 -DSQLITE_OMIT_SHARED_CACHE=1 -DSQLITE_USE_ALLOCA=1' + + if performance_mode == 1 + log_message.call("Thread unsafe (1) performance mode enabled. Use only transactions! 🚀🚀") + other_cflags = optimizedCflags + ' -DSQLITE_THREADSAFE=0 ' + elsif performance_mode == 2 + log_message.call("Thread safe (2) performance mode enabled 🚀") + other_cflags = optimizedCflags + ' -DSQLITE_THREADSAFE=1 ' + end + + s.pod_target_xcconfig = { :GCC_PREPROCESSOR_DEFINITIONS => "HAVE_FULLFSYNC=1", :WARNING_CFLAGS => "-Wno-shorten-64-to-32 -Wno-comma -Wno-unreachable-code -Wno-conditional-uninitialized -Wno-deprecated-declarations", 'CLANG_CXX_LANGUAGE_STANDARD' => 'c++20', @@ -42,6 +52,7 @@ Pod::Spec.new do |s| "HEADER_SEARCH_PATHS" => "\"${PODS_ROOT}/RCT-Folly\"" + (nitro_sqlite_vec ? " \"#{nitro_sqlite_vec_cpp}\"" : ""), "GCC_PREPROCESSOR_DEFINITIONS" => "$(inherited) FOLLY_NO_CONFIG FOLLY_CFG_NO_COROUTINES" + (nitro_sqlite_vec ? " NITRO_SQLITE_VEC=1" : ""), "OTHER_CPLUSPLUSFLAGS" => folly_compiler_flags, + "OTHER_CFLAGS" => other_cflags, } load 'nitrogen/generated/ios/RNNitroSQLite+autolinking.rb' @@ -49,18 +60,6 @@ Pod::Spec.new do |s| install_modules_dependencies(s) - optimizedCflags = '$(inherited) -DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DEPRECATED=1 -DSQLITE_OMIT_PROGRESS_CALLBACK=1 -DSQLITE_OMIT_SHARED_CACHE=1 -DSQLITE_USE_ALLOCA=1' - - if performance_mode == 1 - log_message.call("Thread unsafe (1) performance mode enabled. Use only transactions! 🚀🚀") - xcconfig["OTHER_CFLAGS"] = optimizedCflags + ' -DSQLITE_THREADSAFE=0 ' - elsif performance_mode == 2 - log_message.call("Thread safe (2) performance mode enabled 🚀") - xcconfig["OTHER_CFLAGS"] = optimizedCflags + ' -DSQLITE_THREADSAFE=1 ' - end - - s.pod_target_xcconfig = xcconfig - if ENV['NITRO_SQLITE_USE_PHONE_VERSION'] == '1' then s.exclude_files = "cpp/sqlite/sqlite3.c", "cpp/sqlite/sqlite3.h" s.library = "sqlite3"