An identifier larger than 2^53 loses precision as a JavaScript number, and BigInt fixes the arithmetic and not the transport.
9007199254740993 === 9007199254740992 // true. both are wrong.
9007199254740993n === 9007199254740992n // false. correct.
JSON.stringify({ id: 123n });
// TypeError: Do not know how to serialize a BigInt
// which is why an API sends large ids as STRINGS
This is the reason well-designed APIs return large identifiers as strings, and it is worth understanding before arguing about it in a review. BigInt and Number cannot be mixed in arithmetic without an explicit conversion, which is deliberate and catches every accidental mix. It is a solution for computation rather than for interchange, and the interchange problem is solved by not sending the number.