← Ко всем open source проектам

tRPC

trpc/trpc

tRPC — TypeScript-фреймворк для end-to-end типобезопасных API без ручной схемы.

Форки 1,628
Автор trpc
Язык TypeScript
Лицензия MIT
Обновлено 2026-06-27

Что это такое

tRPC — фреймворк для типобезопасных API в TypeScript-приложениях. Он стал популярным среди команд, которые пишут клиентскую и серверную часть на TypeScript и хотят двигаться быстрее без потери контрактов.

Обычный API часто требует дублирования типов, ручного клиента, схемы OpenAPI или постоянной синхронизации между сервером и клиентом. Поэтому страница в каталоге рассматривает проект не как строку в рейтинге, а как конкретный инструмент со своим контекстом, типичными сценариями и ограничениями.

Что внутри репозитория

В репозитории находятся серверные router/procedure-абстракции, клиентские пакеты, интеграции с React, документация, тесты и примеры.

tRPC позволяет описать процедуру на сервере, а затем вызывать ее на клиенте с выводом типов из исходного кода. Это важно для оценки проекта: по составу репозитория видно, является ли он библиотекой, приложением, учебным курсом или справочником.

Как это используют

Команды используют tRPC в полноценных TypeScript-приложениях, внутренних панелях, SaaS-продуктах и проектах, где сервер и клиент развиваются вместе.

На практике tRPC хорошо работает, когда границы приложения контролируются одной командой, а публичный API для сторонних клиентов не является главным требованием. Хороший первый шаг — повторить маленький сценарий из примера ниже, а затем проверить, как проект ведет себя на данных, коде или задачах вашей команды.

Сильные стороны и ограничения

Сильная сторона tRPC — быстрый цикл разработки и точные типы между клиентом и сервером.

Ограничение в том, что для публичных API, polyglot-клиентов и долгоживущих внешних контрактов часто нужна отдельная схема и версия протокола.

Практический смысл tRPC лучше всего виден на маленьком проверяемом сценарии: взять задачу, для которой проект создан, и пройти ее до результата. tRPC соединяет серверные процедуры и клиентские вызовы через TypeScript-типы, чтобы API-контракт был проверяемым без отдельной ручной генерации. Так проще понять, какую работу проект действительно снимает с команды.

Если tRPC остается в работе дольше первого эксперимента, важны сопровождение, обновления, права доступа, лицензия и понятная зона ответственности. Именно здесь обычно проявляется разница между интересным репозиторием и устойчивой частью продукта.

Для каталога важно и то, что tRPC можно объяснить через практику, а не через сухую карточку метаданных. У проекта есть конкретная аудитория, типичный путь внедрения и набор условий, при которых он становится полезным или, наоборот, лишним.

Пример

Процедура tRPC

Пример показывает идею: серверная процедура задает вход и возвращает тип, который затем видит клиент.

Язык: TypeScript
const appRouter = router({
  userById: publicProcedure
    .input(z.object({ id: z.string() }))
    .query(({ input }) => getUser(input.id)),
})

export type AppRouter = typeof appRouter