diff --git a/web/cpp/SQLiteQueryExecutorBindings.cpp b/web/cpp/SQLiteQueryExecutorBindings.cpp
--- a/web/cpp/SQLiteQueryExecutorBindings.cpp
+++ b/web/cpp/SQLiteQueryExecutorBindings.cpp
@@ -319,7 +319,8 @@
           "getRelatedMessagesWeb", &SQLiteQueryExecutor::getRelatedMessagesWeb)
       .function(
           "updateMessageSearchIndex",
-          &SQLiteQueryExecutor::updateMessageSearchIndex);
+          &SQLiteQueryExecutor::updateMessageSearchIndex)
+      .function("searchMessages", &SQLiteQueryExecutor::searchMessagesWeb);
 }
 
 } // namespace comm
diff --git a/web/shared-worker/_generated/comm_query_executor.wasm b/web/shared-worker/_generated/comm_query_executor.wasm
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001

literal 0
Hc$@<O00001

diff --git a/web/shared-worker/types/sqlite-query-executor.js b/web/shared-worker/types/sqlite-query-executor.js
--- a/web/shared-worker/types/sqlite-query-executor.js
+++ b/web/shared-worker/types/sqlite-query-executor.js
@@ -202,6 +202,12 @@
     messageID: string,
     content: string,
   ): void;
+  searchMessages(
+    query: string,
+    threadID: string,
+    timestampCursor: ?string,
+    messageIDCursor: ?string,
+  ): $ReadOnlyArray<MessageEntity>;
 
   // method is provided to manually signal that a C++ object
   // is no longer needed and can be deleted