diff --git a/package/cpp/specs/HybridNitroSQLiteQueryResult.cpp b/package/cpp/specs/HybridNitroSQLiteQueryResult.cpp
index 762ca9b1..a45758f7 100644
--- a/package/cpp/specs/HybridNitroSQLiteQueryResult.cpp
+++ b/package/cpp/specs/HybridNitroSQLiteQueryResult.cpp
@@ -20,10 +20,6 @@ SQLiteQueryResults HybridNitroSQLiteQueryResult::getResults() {
   return _results;
 };
 
-std::optional<NitroSQLiteQueryResultRows> HybridNitroSQLiteQueryResult::getRows() {
-  return _rows;
-}
-
 std::optional<SQLiteQueryTableMetadata> HybridNitroSQLiteQueryResult::getMetadata() {
   return _metadata;
 }
diff --git a/package/cpp/specs/HybridNitroSQLiteQueryResult.hpp b/package/cpp/specs/HybridNitroSQLiteQueryResult.hpp
index a06a99dd..785c5577 100644
--- a/package/cpp/specs/HybridNitroSQLiteQueryResult.hpp
+++ b/package/cpp/specs/HybridNitroSQLiteQueryResult.hpp
@@ -13,36 +13,12 @@ class HybridNitroSQLiteQueryResult : public HybridNitroSQLiteQueryResultSpec {
   HybridNitroSQLiteQueryResult() : HybridObject(TAG) {}
   HybridNitroSQLiteQueryResult(SQLiteQueryResults results, std::optional<double> insertId, double rowsAffected,
                                std::optional<SQLiteQueryTableMetadata> metadata)
-      : HybridObject(TAG), _insertId(insertId), _rowsAffected(rowsAffected), _results(std::move(results)), _metadata(metadata) {
-    if (_results.empty()) {
-      // Empty rows: empty vector, length 0, item callback always returns null
-      auto emptyItem = [](double /* idx */) -> std::shared_ptr<Promise<std::optional<SQLiteQueryResultRow>>> {
-        return Promise<std::optional<SQLiteQueryResultRow>>::async([]() -> std::optional<SQLiteQueryResultRow> { return std::nullopt; });
-      };
-      _rows = NitroSQLiteQueryResultRows(SQLiteQueryResults{}, 0.0, std::move(emptyItem));
-      return;
-    }
-
-    auto rows = _results;
-    auto itemFunction = [rows](double idx) -> std::shared_ptr<Promise<std::optional<SQLiteQueryResultRow>>> {
-      return Promise<std::optional<SQLiteQueryResultRow>>::async([rows, idx]() -> std::optional<SQLiteQueryResultRow> {
-        const auto index = static_cast<size_t>(idx);
-        if (index >= rows.size()) {
-          return std::nullopt;
-        }
-        return rows[index];
-      });
-    };
-
-    const auto length = static_cast<double>(rows.size());
-    _rows = NitroSQLiteQueryResultRows(std::move(rows), length, std::move(itemFunction));
-  }
+      : HybridObject(TAG), _insertId(insertId), _rowsAffected(rowsAffected), _results(std::move(results)), _metadata(metadata) {}
 
 private:
   std::optional<double> _insertId;
   double _rowsAffected;
   SQLiteQueryResults _results;
-  std::optional<NitroSQLiteQueryResultRows> _rows;
   std::optional<SQLiteQueryTableMetadata> _metadata;
 
 public:
@@ -50,7 +26,6 @@ class HybridNitroSQLiteQueryResult : public HybridNitroSQLiteQueryResultSpec {
   std::optional<double> getInsertId() override;
   double getRowsAffected() override;
   SQLiteQueryResults getResults() override;
-  std::optional<NitroSQLiteQueryResultRows> getRows() override;
   std::optional<SQLiteQueryTableMetadata> getMetadata() override;
 };
 
diff --git a/package/nitrogen/generated/shared/c++/HybridNitroSQLiteQueryResultSpec.cpp b/package/nitrogen/generated/shared/c++/HybridNitroSQLiteQueryResultSpec.cpp
index 77d1a175..72d05f44 100644
--- a/package/nitrogen/generated/shared/c++/HybridNitroSQLiteQueryResultSpec.cpp
+++ b/package/nitrogen/generated/shared/c++/HybridNitroSQLiteQueryResultSpec.cpp
@@ -17,7 +17,6 @@ namespace margelo::nitro::rnnitrosqlite {
       prototype.registerHybridGetter("rowsAffected", &HybridNitroSQLiteQueryResultSpec::getRowsAffected);
       prototype.registerHybridGetter("insertId", &HybridNitroSQLiteQueryResultSpec::getInsertId);
       prototype.registerHybridGetter("results", &HybridNitroSQLiteQueryResultSpec::getResults);
-      prototype.registerHybridGetter("rows", &HybridNitroSQLiteQueryResultSpec::getRows);
       prototype.registerHybridGetter("metadata", &HybridNitroSQLiteQueryResultSpec::getMetadata);
     });
   }
diff --git a/package/nitrogen/generated/shared/c++/HybridNitroSQLiteQueryResultSpec.hpp b/package/nitrogen/generated/shared/c++/HybridNitroSQLiteQueryResultSpec.hpp
index b03eec82..7647c777 100644
--- a/package/nitrogen/generated/shared/c++/HybridNitroSQLiteQueryResultSpec.hpp
+++ b/package/nitrogen/generated/shared/c++/HybridNitroSQLiteQueryResultSpec.hpp
@@ -13,8 +13,6 @@
 #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
 #endif
 
-// Forward declaration of `NitroSQLiteQueryResultRows` to properly resolve imports.
-namespace margelo::nitro::rnnitrosqlite { struct NitroSQLiteQueryResultRows; }
 // Forward declaration of `NitroSQLiteQueryColumnMetadata` to properly resolve imports.
 namespace margelo::nitro::rnnitrosqlite { struct NitroSQLiteQueryColumnMetadata; }
 
@@ -25,7 +23,6 @@ namespace margelo::nitro::rnnitrosqlite { struct NitroSQLiteQueryColumnMetadata;
 #include <variant>
 #include <unordered_map>
 #include <vector>
-#include "NitroSQLiteQueryResultRows.hpp"
 #include "NitroSQLiteQueryColumnMetadata.hpp"
 
 namespace margelo::nitro::rnnitrosqlite {
@@ -58,7 +55,6 @@ namespace margelo::nitro::rnnitrosqlite {
       virtual double getRowsAffected() = 0;
       virtual std::optional<double> getInsertId() = 0;
       virtual std::vector<std::unordered_map<std::string, std::variant<nitro::NullType, bool, std::shared_ptr<ArrayBuffer>, std::string, double>>> getResults() = 0;
-      virtual std::optional<NitroSQLiteQueryResultRows> getRows() = 0;
       virtual std::optional<std::unordered_map<std::string, NitroSQLiteQueryColumnMetadata>> getMetadata() = 0;
 
     public:
diff --git a/package/nitrogen/generated/shared/c++/NitroSQLiteQueryResultRows.hpp b/package/nitrogen/generated/shared/c++/NitroSQLiteQueryResultRows.hpp
deleted file mode 100644
index 3e0c995b..00000000
--- a/package/nitrogen/generated/shared/c++/NitroSQLiteQueryResultRows.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-///
-/// NitroSQLiteQueryResultRows.hpp
-/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
-/// https://github.com/mrousavy/nitro
-/// Copyright © Marc Rousavy @ Margelo
-///
-
-#pragma once
-
-#if __has_include(<NitroModules/JSIConverter.hpp>)
-#include <NitroModules/JSIConverter.hpp>
-#else
-#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
-#endif
-#if __has_include(<NitroModules/NitroDefines.hpp>)
-#include <NitroModules/NitroDefines.hpp>
-#else
-#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
-#endif
-#if __has_include(<NitroModules/JSIHelpers.hpp>)
-#include <NitroModules/JSIHelpers.hpp>
-#else
-#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
-#endif
-#if __has_include(<NitroModules/PropNameIDCache.hpp>)
-#include <NitroModules/PropNameIDCache.hpp>
-#else
-#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
-#endif
-
-
-
-#include <string>
-#include <NitroModules/Null.hpp>
-#include <NitroModules/ArrayBuffer.hpp>
-#include <variant>
-#include <unordered_map>
-#include <vector>
-#include <optional>
-#include <NitroModules/Promise.hpp>
-#include <functional>
-
-namespace margelo::nitro::rnnitrosqlite {
-
-  /**
-   * A struct which can be represented as a JavaScript object (NitroSQLiteQueryResultRows).
-   */
-  struct NitroSQLiteQueryResultRows final {
-  public:
-    std::vector<std::unordered_map<std::string, std::variant<nitro::NullType, bool, std::shared_ptr<ArrayBuffer>, std::string, double>>> _array     SWIFT_PRIVATE;
-    double length     SWIFT_PRIVATE;
-    std::function<std::shared_ptr<Promise<std::optional<std::unordered_map<std::string, std::variant<nitro::NullType, bool, std::shared_ptr<ArrayBuffer>, std::string, double>>>>>(double /* idx */)> item     SWIFT_PRIVATE;
-
-  public:
-    NitroSQLiteQueryResultRows() = default;
-    explicit NitroSQLiteQueryResultRows(std::vector<std::unordered_map<std::string, std::variant<nitro::NullType, bool, std::shared_ptr<ArrayBuffer>, std::string, double>>> _array, double length, std::function<std::shared_ptr<Promise<std::optional<std::unordered_map<std::string, std::variant<nitro::NullType, bool, std::shared_ptr<ArrayBuffer>, std::string, double>>>>>(double /* idx */)> item): _array(_array), length(length), item(item) {}
-
-  public:
-    // NitroSQLiteQueryResultRows is not equatable because these properties are not equatable: item
-  };
-
-} // namespace margelo::nitro::rnnitrosqlite
-
-namespace margelo::nitro {
-
-  // C++ NitroSQLiteQueryResultRows <> JS NitroSQLiteQueryResultRows (object)
-  template <>
-  struct JSIConverter<margelo::nitro::rnnitrosqlite::NitroSQLiteQueryResultRows> final {
-    static inline margelo::nitro::rnnitrosqlite::NitroSQLiteQueryResultRows fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
-      jsi::Object obj = arg.asObject(runtime);
-      return margelo::nitro::rnnitrosqlite::NitroSQLiteQueryResultRows(
-        JSIConverter<std::vector<std::unordered_map<std::string, std::variant<nitro::NullType, bool, std::shared_ptr<ArrayBuffer>, std::string, double>>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "_array"))),
-        JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "length"))),
-        JSIConverter<std::function<std::shared_ptr<Promise<std::optional<std::unordered_map<std::string, std::variant<nitro::NullType, bool, std::shared_ptr<ArrayBuffer>, std::string, double>>>>>(double)>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "item")))
-      );
-    }
-    static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::rnnitrosqlite::NitroSQLiteQueryResultRows& arg) {
-      jsi::Object obj(runtime);
-      obj.setProperty(runtime, PropNameIDCache::get(runtime, "_array"), JSIConverter<std::vector<std::unordered_map<std::string, std::variant<nitro::NullType, bool, std::shared_ptr<ArrayBuffer>, std::string, double>>>>::toJSI(runtime, arg._array));
-      obj.setProperty(runtime, PropNameIDCache::get(runtime, "length"), JSIConverter<double>::toJSI(runtime, arg.length));
-      obj.setProperty(runtime, PropNameIDCache::get(runtime, "item"), JSIConverter<std::function<std::shared_ptr<Promise<std::optional<std::unordered_map<std::string, std::variant<nitro::NullType, bool, std::shared_ptr<ArrayBuffer>, std::string, double>>>>>(double)>>::toJSI(runtime, arg.item));
-      return obj;
-    }
-    static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
-      if (!value.isObject()) {
-        return false;
-      }
-      jsi::Object obj = value.getObject(runtime);
-      if (!nitro::isPlainObject(runtime, obj)) {
-        return false;
-      }
-      if (!JSIConverter<std::vector<std::unordered_map<std::string, std::variant<nitro::NullType, bool, std::shared_ptr<ArrayBuffer>, std::string, double>>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "_array")))) return false;
-      if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "length")))) return false;
-      if (!JSIConverter<std::function<std::shared_ptr<Promise<std::optional<std::unordered_map<std::string, std::variant<nitro::NullType, bool, std::shared_ptr<ArrayBuffer>, std::string, double>>>>>(double)>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "item")))) return false;
-      return true;
-    }
-  };
-
-} // namespace margelo::nitro
diff --git a/package/src/operations/execute.ts b/package/src/operations/execute.ts
index 071bdd33..a06b6394 100644
--- a/package/src/operations/execute.ts
+++ b/package/src/operations/execute.ts
@@ -1,6 +1,7 @@
 import { HybridNitroSQLite } from '../nitro'
 import type { QueryResult, QueryResultRow, SQLiteQueryParams } from '../types'
 import NitroSQLiteError from '../NitroSQLiteError'
+import type { NitroSQLiteQueryResult } from '../specs/NitroSQLiteQueryResult.nitro'
 
 export function execute<Row extends QueryResultRow = never>(
   dbName: string,
@@ -8,8 +9,8 @@ export function execute<Row extends QueryResultRow = never>(
   params?: SQLiteQueryParams,
 ): QueryResult<Row> {
   try {
-    const result = HybridNitroSQLite.execute(dbName, query, params)
-    return result as QueryResult<Row>
+    const nativeResult = HybridNitroSQLite.execute(dbName, query, params)
+    return buildJSQueryResult<Row>(nativeResult)
   } catch (error) {
     throw NitroSQLiteError.fromError(error)
   }
@@ -21,9 +22,35 @@ export async function executeAsync<Row extends QueryResultRow = never>(
   params?: SQLiteQueryParams,
 ): Promise<QueryResult<Row>> {
   try {
-    const result = await HybridNitroSQLite.executeAsync(dbName, query, params)
-    return result as QueryResult<Row>
+    const nativeResult = await HybridNitroSQLite.executeAsync(
+      dbName,
+      query,
+      params,
+    )
+    return buildJSQueryResult<Row>(nativeResult)
   } catch (error) {
     throw NitroSQLiteError.fromError(error)
   }
 }
+
+function buildJSQueryResult<Row extends QueryResultRow = never>(
+  result: NitroSQLiteQueryResult,
+): QueryResult<Row> {
+  const resultWithRows = result as QueryResult<Row>
+
+  resultWithRows.rows = {
+    _array: result.results as Row[],
+    length: result.results.length,
+    item: (idx: number) => result.results[idx] as Row | undefined,
+  }
+
+  return resultWithRows
+
+  // return Object.assign(result, {
+  //   rows: {
+  //     _array: result.results,
+  //     length: result.results.length,
+  //     item: (idx: number) => result.results[idx],
+  //   },
+  // })
+}
diff --git a/package/src/specs/NitroSQLiteQueryResult.nitro.ts b/package/src/specs/NitroSQLiteQueryResult.nitro.ts
index 860dff83..e17570a8 100644
--- a/package/src/specs/NitroSQLiteQueryResult.nitro.ts
+++ b/package/src/specs/NitroSQLiteQueryResult.nitro.ts
@@ -19,9 +19,6 @@ export interface NitroSQLiteQueryResult
   /** Query results */
   readonly results: Record<string, SQLiteValue>[]
 
-  /** Query results in a row format for TypeORM compatibility */
-  readonly rows?: NitroSQLiteQueryResultRows
-
   /** Table metadata */
   readonly metadata?: Record<string, NitroSQLiteQueryColumnMetadata>
 }
@@ -33,20 +30,6 @@ export interface NitroSQLiteQueryResult
 
 // type NitroQueryResultRow = Record<string, SQLiteValue>
 
-export type NitroSQLiteQueryResultRows<
-  Row extends Record<string, SQLiteValue> = Record<string, SQLiteValue>,
-> = {
-  /** Raw array with all dataset */
-  _array: Row[]
-  /** The lengh of the dataset */
-  length: number
-  /** A convenience function to acess the index based the row object
-   * @param idx the row index
-   * @returns the row structure identified by column names
-   */
-  item: (idx: number) => Row | undefined
-}
-
 export type NitroSQLiteQueryColumnMetadata = {
   /** The name used for this column for this result set */
   name: string
diff --git a/package/src/types.ts b/package/src/types.ts
index 3ceba314..517bcca3 100644
--- a/package/src/types.ts
+++ b/package/src/types.ts
@@ -1,7 +1,4 @@
-import type {
-  NitroSQLiteQueryResult,
-  NitroSQLiteQueryResultRows,
-} from './specs/NitroSQLiteQueryResult.nitro'
+import type { NitroSQLiteQueryResult } from './specs/NitroSQLiteQueryResult.nitro'
 
 export interface NitroSQLiteConnectionOptions {
   name: string
@@ -42,9 +39,25 @@ export type QueryResultRow = Record<string, SQLiteValue>
 export type QueryResult<Row extends QueryResultRow = QueryResultRow> =
   NitroSQLiteQueryResult & {
     /** Query results in a row format for TypeORM compatibility */
-    rows?: NitroSQLiteQueryResultRows<Row>
+    rows: NitroSQLiteQueryResultRows<Row>
   }
 
+export type NitroSQLiteQueryResultRows<
+  Row extends Record<string, SQLiteValue> = Record<string, SQLiteValue>,
+> = {
+  /** Raw array with all dataset */
+  _array: Row[]
+
+  /** The lengh of the dataset */
+  length: number
+
+  /** A convenience function to acess the index based the row object
+   * @param idx the row index
+   * @returns the row structure identified by column names
+   */
+  item: (idx: number) => Row | undefined
+}
+
 export type ExecuteQuery = <Row extends QueryResultRow = QueryResultRow>(
   query: string,
   params?: SQLiteValue[],
