./новости · 10 августа 2026 г.
новость
Сервер на Bun едет на Vercel без адаптера: Bun.serve() стал точкой входа функции
источник: @rauchg · X·
машинная выжимка · сверена с источником

Guillermo Rauch
@rauchg
Полная поддержка Bun на Vercel.
Деплойте Bun.serve() в Vercel Functions. Bun-рантайм Vercel теперь поддерживает Bun.serve() как точку входа функции, включая WebSocket-обработчики. https://vercel.com/changelog/bun-serve-entrypoint-for-vercel-functions
· 25,9 тыс. просмотров
Гайд Bun по деплою на Vercel до сих пор говорит: "Bun.serve is not supported on Vercel Functions". С 10 августа это неправда. Vercel обновила свой Bun-рантайм, и Bun.serve() теперь работает точкой входа функции вместе с нативными WebSocket-обработчиками. Фреймворк-адаптер больше не нужен.
Раньше свой сервер на 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.
первоисточник