SebastianKra a day ago

The contract-first design and return to REST seem like solid improvements over trpc.

Lately, I’ve been thinking about what would be the simplest way to typecheck a rest api. I wonder if…

- …it would make sense to define endpoints in isolation, rather than one big router object. Large / recursive types have bad performance, especially when mixed with zod. Isolated contract definitions would prevent statically checking for path conflicts though.

- …a composition-based api would be better than a wrapper to minimize the API surface:

    const getPostById = endpoint(/* */)

    // client
    const postResponse = fetch(getRequest(getPostById, 123))
    const post = getResponseData(getPostsById, postResponse)