Technology Sep 12, 2026 · 6 min read

I Ship Mobile Apps for $0: Vercel + Render + Supabase Free Tier

TL;DR: My entire mobile stack costs $0 a month. Expo builds the app. Supabase holds data and auth. Render runs background jobs. Vercel hosts the landing page. Free tiers cover all of it. The table below shows every piece, its limit, and the catch. Steal this setup. My infrastructure bill is zero do...

DE
DEV Community
by Aarush Karak
I Ship Mobile Apps for $0: Vercel + Render + Supabase Free Tier

TL;DR: My entire mobile stack costs $0 a month. Expo builds the app. Supabase holds data and auth. Render runs background jobs. Vercel hosts the landing page. Free tiers cover all of it. The table below shows every piece, its limit, and the catch. Steal this setup.

My infrastructure bill is zero dollars. Not "free trial" zero. Not "first year" zero. Actual, ongoing, every-month zero. I ship a real mobile app with real users on free tiers. This post is the full receipt.

People assume shipping an app costs money. Servers. Databases. Auth. Hosting. It sounds like hundreds a month. It is not. The free tiers in 2026 are absurdly generous. You can go from idea to production without touching a credit card. I know because I did.

Here is the whole stack in one table:

Piece Service Free tier The catch
Mobile app Expo + EAS Free builds, OTA updates Build queues get slow at peak hours
Database + Auth Supabase 500MB Postgres, 50k monthly users Project pauses after 7 idle days
Background jobs Render 750 free hours monthly Spins down after 15 min idle, slow cold start
Landing page Vercel 100GB bandwidth, auto SSL Build minutes capped monthly
Code hosting + CI GitHub Unlimited public repos, 2000 CI minutes Private repo minutes burn faster
Publishing pipeline This repo $0 forever You write the posts yourself

Total: $0. Catches: manageable. Let me walk through each one.

Expo first. The app itself. Expo's free tier includes builds and over-the-air updates. OTA updates are the killer feature. I push JavaScript fixes and users get them instantly. No app store review. No waiting three days for Apple to approve a typo fix. Native changes still need a rebuild. JS changes just flow.

The catch: EAS build queues. Free builds wait in line. At peak US hours I have waited twenty minutes for a build to start. My solution is scheduling. I kick off builds before lunch. They are done after lunch. Patience is free too.

Development builds are the move. Build once to your phone. Then iterate over the local network. Fast refresh works. You only hit the queue for release builds. I do maybe three release builds a week. Totally fine on free.

Supabase second. The backend. Postgres database. Auth with GitHub login. Row-level security. Edge functions for webhooks. The free tier gives 500MB of database and 50,000 monthly active users. I have a tiny fraction of that. I could grow a hundred times over and still pay nothing.

The catch: idle projects pause. After seven days with no activity, Supabase parks your project. The next request wakes it up. That wake-up takes a few seconds. Users see one slow load. Then everything is fast.

My fix is simple. A scheduled ping. This very repo has a weekly cron in its GitHub Action. It hits the API on a schedule. The project never idles. The cron was built for publishing posts. It doubles as a keep-alive. Two birds, zero dollars.

Row-level security deserves its own praise. Every query is scoped to the logged-in user at the database level. Not in my code. In Postgres itself. Even if my app code has a bug, users cannot read each other's data. Security enforced below the application layer. Free. Built in. Wonderful.

Render third. Background jobs. The GitHub webhooks arrive. The AI summaries get generated. These run on Render's free tier. 750 hours a month covers one always-small service. The math works out. One service running full-time is about 720 hours. Just under the cap.

The catch: cold starts. Free Render services spin down after fifteen minutes idle. The next request waits while the service boots. Ten to thirty seconds of nothing. For a background job, nobody cares. The webhook arrives, the service yawns awake, the summary generates a few seconds later. No user is watching a spinner.

Do not put user-facing APIs on free Render. That is the rule. Background work only. User-facing reads go straight from the phone to Supabase. That path is always warm. Jobs can be sleepy. Users cannot.

If a job ever needs to be instant, the upgrade is seven dollars. Cheapest paid tier in the stack. I have not needed it yet. When I do, one coffee a month is fine.

Vercel fourth. The landing page and this blog. Static pages deploy from git pushes. SSL included. Global CDN included. 100GB of bandwidth free. My pages are tiny. I could get on the front page of everything and survive.

The catch: build minutes. The free tier caps how long builds can run monthly. Static sites build in under a minute. I deploy maybe ten times a week. I use a fraction of the quota. If you add heavy image processing to builds, watch this number. I keep images pre-sized in the repo instead.

The monorepo trick: my landing page and blog live with the app code. One push deploys the site. Same git history. Same workflow. Fewer dashboards to check. I check enough dashboards already.

GitHub fifth. Code, CI, and project management. Unlimited public repos. 2,000 CI minutes a month on free. My publishing pipeline runs here. A few minutes a week. The budget barely notices.

Everything in this pipeline is public. The app. The site. The publishing scripts. Public repos get full CI minutes and free everything. Keeping the work public is a marketing strategy that pays for its own infrastructure. Funny how that works.

Now the honest section. What breaks. What I worry about. Free tiers are borrowed land. Limits change. Companies get acquired. Generosity shrinks. I have a plan for each piece.

If Supabase tightens free Postgres, my database is plain Postgres. I can dump it and move anywhere. No proprietary queries. No vendor extensions. Standard SQL in, standard SQL out. Portability is the exit strategy.

If Render kills free hours, background jobs move to Supabase Edge Functions. They have their own free allowance. The job code is small and stateless. It runs anywhere that runs JavaScript. Nothing is glued to Render.

If Expo ever paywalls builds, the app is React Native. Ejecting is painful but possible. EAS is convenience, not lock-in. The code is mine. The config is text. I could build locally with Xcode and Android Studio. It would hurt. It would work.

If Vercel caps bandwidth harder, the site is static files. Any host serves static files. Literally any. I could serve them from a free tier anywhere. Moving takes an afternoon.

The principle: own your code and your data, rent the plumbing. Every service here holds nothing irreplaceable. Code lives in git. Data dumps to SQL. Nothing proprietary. I can move any piece in a day. That is what makes free tiers safe to build on.

Cost so far, all time: $0. Users served: real ones. PRs reviewed from a bus: eleven. Regrets: none.

Start free. Stay free until revenue says otherwise. Then spend money on exactly one thing: the bottleneck. Not before. Premature infrastructure is just a hobby that sends invoices.

The demo is live. The repo is public. The pipeline that published this post cost nothing to run. That never gets old.

Follow the ok2merge-build-in-public series — next post Tue/Thu. Star github.com/3ni8ma/ok2merge · Try https://ok2merge.vercel.app

DE
Source

This article was originally published by DEV Community and written by Aarush Karak.

Read original article on DEV Community
Back to Discover

Reading List