Przejdź do treści

Alternatywy dla Vercel: dlaczego używamy Vercel i Cloudflare

Dla CTO i programistówDecyzje CTO

Filip PapranecZałożyciel Digitaliko

Alternatywy dla Vercel: używamy obu. Ilustracja: okno z preview deploymentami strony w Next.js obok okna alchemy.run.ts, które deklaruje Worker, bazę danych D1 i namespace KV.Alternatywy dla Vercel: używamy obu. Ilustracja: okno z preview deploymentami strony w Next.js obok okna alchemy.run.ts, które deklaruje Worker, bazę danych D1 i namespace KV.

Najlepsza alternatywa dla Vercel zależy od aplikacji, dlatego używamy obu. Strony w Next.js, łącznie z tą, zostają na Vercel. Nowe aplikacje działają na Cloudflare Workers z bazą danych D1, opisane w jednym pliku TypeScript za pomocą Alchemy.

Krótka odpowiedź: Vercel wygrywa przy Next.js i preview deploymentach bez konfiguracji. Cloudflare wygrywa, gdy aplikacja, jej baza danych, cache i storage mają żyć na jednym koncie, zadeklarowane jako kod i rozliczane za żądanie. Poniżej opisujemy, jak decydujemy, co mówią cenniki, naszą prawdziwą konfigurację i problem, o którym nie wspomina żadne zestawienie: Vercel zablokował deploye commitów napisanych przez naszego agenta AI.

Vercel czy Cloudflare: która aplikacja gdzie?

Nie wybieramy hostingu dla całej firmy. Wybieramy go dla każdej aplikacji, według tego, czego ona potrzebuje:

Aplikacja potrzebujeGdzie u nas działaDlaczego
Strona marketingowa w Next.js z podglądamiVercelNext.js działa tam bez konfiguracji, każda gałąź dostaje URL podglądu
Starsza aplikacja Next.js z Postgres i PrismaVercelDziała, a nikt nie płaci za przeprowadzkę, która niczego nie zmienia dla użytkowników
Nowa aplikacja z bazą danych, cache i przechowywaniem plikówCloudflare Workers, D1, KV, R2Jedno konto, jeden plik TypeScript opisuje wszystko
Cała aplikacja na jednym serwerze pod Państwa kontroląZwykły VPSPełna kontrola, a rachunek nie rośnie z każdym żądaniem

Ostatni wiersz to nie teoria. Marketplace online jednego z klientów przenieśliśmy z zarządzanej chmury na zwykły VPS. Właściwy hosting to ten, który pasuje do aplikacji dziś, a nie ten, którego użył ostatni projekt.

Ile kosztują Vercel i Cloudflare według cenników?

Ceny z cenników, sprawdzone 24.10.2026. Zmieniają się, więc przed decyzją proszę zajrzeć na te strony:

  • Vercel (cennik): Hobby za 0 $, Pro za 20 $ miesięcznie z 20 $ kredytu na użycie w cenie, potem płatność za zużycie. Strona podaje w Pro 20 $ miesięcznie za stanowisko dewelopera.
  • Cloudflare Workers (cennik): plan Free ma 100 000 żądań dziennie. Workers Paid kosztuje minimum 5 $ miesięcznie za konto, z 10 milionami żądań i 30 milionami milisekund CPU w cenie.
  • Cloudflare D1 (limity): 500 MB na bazę danych w Free, 10 GB w Workers Paid. Konta Free mają łącznie 5 GB miejsca.

Pułapką nie jest cena Pro. Jest nią plan Hobby w projekcie klienta:

Hobby teams are restricted to non-commercial personal use only. All commercial usage of the platform requires either a Pro or Enterprise plan.

Vercel
Fair Use Guidelines (sprawdzone 24.10.2026)

Vercel uznaje za użytek komercyjny sytuację, w której kod pisze opłacany konsultant. Darmowe konto freelancera z aplikacją klienta to więc problem z regulaminem, a nie oszczędność.

Nie publikujemy, ile płacimy. Nasze rachunki nic nie mówią o Państwa rachunkach: ruch, stanowiska i usługi są inne w każdej aplikacji.

Jak wdrażamy na Cloudflare za pomocą Alchemy?

Alchemy opisuje się jako „a single, type-safe TypeScript program for your cloud”, czyli jeden typowany program w TypeScript dla całej chmury. W praktyce to jeden plik obok aplikacji. Tak wygląda nasz alchemy.run.ts, skrócony i z ogólnymi nazwami:

import alchemy from "alchemy";
import { D1Database, KVNamespace, TanStackStart } from "alchemy/cloudflare";

const app = await alchemy("my-app", {
  stage: process.env.ALCHEMY_STAGE || "production",
});

const db = await D1Database("database", {
  migrationsDir: "../../packages/db/src/migrations",
});

const cache = await KVNamespace("cache", { title: "my-app-cache" });

const web = await TanStackStart("web", {
  cwd: "../../apps/web",
  bindings: {
    DB: db,
    CACHE: cache,
    BETTER_AUTH_SECRET: process.env.BETTER_AUTH_SECRET ?? "",
    BETTER_AUTH_URL: process.env.BETTER_AUTH_URL ?? "",
  },
});

await app.finalize();

Baza danych, cache i aplikacja są zadeklarowane w tym samym języku co sama aplikacja. Bez YAML, bez klikania w panelu. Deploy przebiega tak:

  1. Zmienić schemat

    Schemat Drizzle to TypeScript. drizzle-kit generate zapisuje plik migracji SQL.

  2. Uruchomić deploy

    Alchemy tworzy albo aktualizuje bazę danych D1 i namespace KV oraz stosuje migracje z migrationsDir.

  3. Podpiąć zasoby

    Aplikacja dostaje DB i CACHE jako bindingi, typowane, bez connection stringów.

  4. Opublikować Worker

    Build TanStack Start trafia na Cloudflare Workers w tym samym stage.

Jeden uczciwy kompromis. Alchemy domyślnie trzyma swój stan w lokalnym folderze .alchemy, a nasz jest w gitignore. Dlatego nasza wewnętrzna aplikacja wdraża się z komputera dewelopera, a nie z CI. Alchemy oferuje CloudflareStateStore do zdalnego stanu (dokumentacja). Jeszcze go nie skonfigurowaliśmy. W aplikacji klienta, którą wdraża kilka osób, to byłoby pierwsze zadanie.

Dlaczego ta strona zostaje na Vercel?

Ta strona to Next.js 16 ze statycznymi stronami artykułów i next/image. Na Vercel jej vercel.json to dosłownie {}. Każda gałąź dostaje własny URL podglądu i właśnie tak przeglądamy nowy artykuł, zanim trafi na stronę.

Vercel czy Cloudflare: która aplikacja gdzie. Po lewej Vercel: strony w Next.js i starsze aplikacje Next.js z Postgres, bez konfiguracji, URL podglądu dla każdej gałęzi, ale deploye są blokowane, gdy autor commita nie należy do zespołu. Po prawej Cloudflare Workers: nowe aplikacje TanStack Start z D1, KV i R2, opisane w jednym pliku alchemy.run.ts i rozliczane za żądanie.Vercel czy Cloudflare: która aplikacja gdzie. Po lewej Vercel: strony w Next.js i starsze aplikacje Next.js z Postgres, bez konfiguracji, URL podglądu dla każdej gałęzi, ale deploye są blokowane, gdy autor commita nie należy do zespołu. Po prawej Cloudflare Workers: nowe aplikacje TanStack Start z D1, KV i R2, opisane w jednym pliku alchemy.run.ts i rozliczane za żądanie.

Next.js może działać także na Cloudflare. Adapter OpenNext wdraża Next.js na Workers i obsługuje Next.js 16. Nie przenieśliśmy tam tej strony, więc nie możemy powiedzieć, jak wypada w porównaniu. Przenoszenie działającej strony tylko po to, by zmienić hosting, to praca bez efektu dla każdego, kto ją czyta.

To samo dotyczy starszych aplikacji klientów. System, który zbudowaliśmy dla firmy spedycyjnej, działa na Next.js z Postgres i Prisma na Vercel. I tam zostaje. Nowe aplikacje startują na Cloudflare, bo tam mieszka nasz szablon, a nie dlatego, że stare zawiodły.

Dlaczego Vercel zablokował deploye naszego agenta AI?

Nasz kolega AI pracuje nad issues na własnym koncie i otwiera pull requesty. Po zmergowaniu jednego z jego PR deploy produkcyjny na Vercel się nie uruchomił. Deployment miał stan BLOCKED z kodem TEAM_ACCESS_REQUIRED.

Powód: Vercel blokuje deploymenty, których autor commita nie jest członkiem zespołu w Vercel. Squash merge zachowuje agenta jako autora. Vercel blokuje też współautorów z linii Co-authored-by. Inne zespoły trafiły na to samo z agentami jako współautorami (wątek w społeczności Vercel).

Rozwiązaniem jest stanowisko w Vercel dla agenta. Na Cloudflare ten problem w ogóle się nie pojawił, bo Alchemy wdraża z kodu, a nie według autora commita.

Jakie są inne alternatywy dla Vercel?

Typowe zestawienia wymieniają te same hostingi. Jedna linijka o każdym i uczciwa uwaga o tym, co wiemy:

  • Netlify: model podobny do Vercel, deploye z gita i podglądy. Nie testowaliśmy go na produkcji.
  • Render: długo działające usługi i zarządzany Postgres. Nie testowaliśmy.
  • VPS z Coolify: własny serwer z interfejsem do deployu. Uruchamiamy obciążenia na zwykłych VPS, Coolify nie używaliśmy na produkcji.

Jeśli ktoś sprzedaje Państwu listę dziesięciu hostingów, warto zapytać, których z nich używa dziś.

Czy Państwa aplikacja jest gotowa, by opuścić Vercel?

Proszę przejść przez te punkty, zanim zacznie się przeprowadzka. Każdy to pytanie, na które odpowie Państwa repozytorium:

Pierwszy punkt zaskakuje większość zespołów. Aplikacja Next.js na Vercel często korzysta z funkcji platformy, których nikt nie spisał. Proszę je znaleźć przed przeprowadzką, nie po niej.

Jak decydujemy, co agent może zmienić i co kod sprawdza przed mergem, opisujemy w artykule Harness engineering w praktyce.

Chcą Państwo aplikacji, która działa tam, gdzie pasuje?

Budujemy i utrzymujemy aplikacje webowe na Vercel, Cloudflare albo Państwa własnym serwerze, z infrastrukturą na Państwa koncie i w kodzie. Zobacz aplikacje webowe na zamówienie. Większość naszego kodu pisze AI. Senior przegląda każdą zmianę i odpowiada za produkcję. Od 2023 roku dostarczyliśmy 15+ projektów produkcyjnych.

Odezwiemy się w ciągu dwóch dni roboczych z kilkoma pytaniami o Państwa pracę. Potem ustalimy, co zrobimy najpierw.

Jeśli wolą Państwo najpierw porozmawiać, proszę zarezerwować 15-minutową rozmowę wstępną.

Która z Państwa aplikacji jest na swoim hostingu tylko dlatego, że nikt jej nie przeniósł?

W skrócie

  • Hosting wybiera się dla aplikacji, nie dla firmy: strony w Next.js na Vercel, nowe aplikacje z bazą danych na Cloudflare Workers i D1.
  • Vercel Hobby jest tylko do użytku niekomercyjnego. Projekt klienta wymaga planu Pro.
  • Alchemy deklaruje Worker, D1 i KV w jednym pliku TypeScript. Jego stan jest domyślnie lokalny.
  • Vercel blokuje deploye autorów commitów spoza zespołu, także agentów AI. Stanowisko dla agenta rozwiązuje problem.

Najczęstsze pytania

Jaka jest najlepsza alternatywa dla Vercel?

To zależy od aplikacji. Dla strony w Next.js trudno pobić sam Vercel. Dla aplikacji, która potrzebuje bazy danych, cache i storage na jednym koncie, rozliczanych za żądanie, używamy Cloudflare Workers z D1. Netlify, Render albo VPS z Coolify to inne opcje, ale nie uruchamialiśmy ich na produkcji.

Czy Cloudflare Workers jest tańszy niż Vercel?

Według cenników próg wejścia jest niższy: Workers Paid zaczyna się od 5 $ miesięcznie za konto z 10 milionami żądań w cenie, Vercel Pro kosztuje 20 $ miesięcznie z 20 $ kredytu na użycie (oba sprawdzone 24.10.2026). Ile faktycznie Państwo zapłacą, zależy od ruchu, liczby stanowisk i używanych usług, więc warto porównać na własnych liczbach.

Czy mogę uruchomić Next.js na Cloudflare?

Tak, przez adapter OpenNext, który wdraża Next.js na Cloudflare Workers i obsługuje Next.js 16. Nie przenieśliśmy tam tej strony, więc nie możemy powiedzieć, jak działa w porównaniu z Vercel.

Czy mogę użyć planu Hobby w Vercel do projektu klienta?

Nie. Vercel podaje, że Hobby służy do osobistego, niekomercyjnego użytku, a to obejmuje także opłacanego konsultanta, który pisze kod. Projekt klienta wymaga planu Pro albo Enterprise.

Dlaczego Vercel blokuje mój deployment?

Częsta przyczyna: autor commita albo osoba z linii Co-authored-by nie jest członkiem zespołu w Vercel. Zdarza się to przy commitach pisanych przez agentów AI. Rozwiązanie: dodać agenta do zespołu w Vercel jako członka z własnym stanowiskiem.

Zapytaj AI o ten artykuł

AI przy odpowiedzi wykorzysta też nasze inne artykuły i doświadczenia z prawdziwych projektów.

ChatGPTClaudePerplexity
Engineering

Kolejne artykuły

Decyzje CTO

Refaktoryzacja czy przepisanie od zera? Jak zdecydować

Refaktoryzacja, gdy kod robi właściwą rzecz źle. Przepisanie, gdy robi niewłaściwą rzecz albo kod nie należy do Państwa. Tabela decyzyjna dla CTO i sposób, by zrobić to bez zatrzymywania roadmapy.

Decyzje CTO

Dług techniczny: jak go mierzyć i co naprawić najpierw?

Dług techniczny zmierzą Państwo na podstawie historii git i błędów, bez drogiego narzędzia. Najpierw warto naprawić kod, który zmienia się najczęściej i blokuje roadmapę, a nie ten najbrzydszy. Poradnik dla CTO.

Decyzje CTO

Body leasing czy senior w zespole? Jak wybrać

Body leasing daje godziny programisty, którymi zarządzają Państwo sami. Senior w zespole daje zrealizowane zadania i zespół, który uczy się pracy z AI. Porównanie z outsourcingiem i rekrutacją, dla CTO.