I haven't done any development with Tauri personally, but according their guide you should be able to just implement the traits serde::Deserialize and serde::Serialize for Vec<Row> and return Vec<Row> like usual. Although, I think it would be more practical to map the Row result to some custom struct, and then just derive serde::Serialize and serde::Deserialize for its type. If you're dealing with different types of results, you could make the result type generic for the function, or wrap the result type in an enum type.