Great to see built-in support for BigInt, Date, and Uint8Array!
I've noticed that Infinity and NaN serialize to null - maybe it's worth giving it the same special treatment like undefined?
E.g.:
import {serialize} from "capnweb";
console.log(serialize(Number.NaN)); // null
console.log(serialize(Number.POSITIVE_INFINITY)); // null
console.log(serialize(undefined)); // ["undefined"]