Concepts
Workers keep heavy browser work off the page.
Use the tiny worker RPC helper for search, filtering, parsing, and other work that should not block input or navigation.
Worker module
import { exposeWorker } from "/nativefragments/worker.js";
exposeWorker({
search: ({ rows, query }) =>
rows.filter((row) =>
row.title.toLowerCase().includes(query.toLowerCase())
)
});
Main thread
import { createWorkerClient } from "/nativefragments/worker.js";
const search = createWorkerClient("/app/search-worker.js");
const rows = await search.call("search", {
rows: allRows,
query: "native"
});
Transfer large buffers
import { exposeWorker, transferResult } from "/nativefragments/worker.js";
exposeWorker({
bytes: (buffer) => transferResult(buffer, [buffer])
});