10 августа 2026 г.
Сервер на Bun едет на Vercel без адаптера: Bun.serve() стал точкой входа функции
Гайд Bun по деплою на Vercel до сих пор говорит: "Bun.serve is not supported on Vercel Functions". С 10 августа это неправда. Vercel обновила свой Bun-рантайм, и Bun.serve() теперь работает точкой входа функции вместе с нативными WebSocket-обработчиками. Фреймворк-адаптер больше не нужен.

Guillermo Rauch
@rauchg
Полная поддержка Bun на Vercel.
Деплойте Bun.serve() в Vercel Functions. Bun-рантайм Vercel теперь поддерживает Bun.serve() как точку входа функции, включая WebSocket-обработчики. https://vercel.com/changelog/bun-serve-entrypoint-for-vercel-functions
· 60,2 тыс. просмотров
Раньше свой сервер на Bun приходилось заворачивать в Next.js, Express, Hono или Nitro. Теперь Bun.serve() уезжает на прод как есть.
Как включить. В vercel.json добавляете одну строку: {"bunVersion": "1.x"}. Других значений нет, минорные и патч-версии Bun Vercel подтягивает сама.
Не хотите разбираться сами? Внедряем ИИ в ваш бизнес: задачи без лимита, одна цена в месяц, отмена в любой момент.
Дальше два пути. Пресет ждёт в корне или в src/ файл bun.lock и энтрипоинт server.ts, папка /api и конфиг роутинга не нужны. Второй путь короче: api/server.ts с вызовом Bun.serve() деплоится одной функцией на адрес /api/server, bun.lock не требуется, рядом можно держать фронтенд.
Сокет держит один инстанс. В fetch-хендлере вызываете server.upgrade(request) и возвращаете пусто, обработчики соединения описываете в опции websocket. Одно соединение живёт на одном инстансе функции, server.publish() и подписки работают только внутри него, для связи между инстансами нужен внешний стор вроде Redis.
Соединение рвётся по max duration функции: на Hobby потолок 300 секунд, на Pro и Enterprise 300 по умолчанию и до 800 максимум. Платите при этом только за активное CPU-время обработки сообщений, простой соединения не тарифицируется.
Замер самой Vercel от 28 октября 2025: на CPU-bound рендеринге Next.js Bun снизил среднюю задержку на 28% против Node.js. На React SSR и SvelteKit разницы нет, а холодные старты у Bun медленнее из-за инициализации рантайма.
Пока подписки сокетов не выходят за пределы одного инстанса, чат на Bun-функциях всё равно потребует внешний Redis.
Первоисточник