Guide · 4 minute read · 21 October 2026

Does my app need a server? How to tell in two minutes

Before you choose where your app goes online, you need one answer: does it need a server? It decides which hosts can take it and roughly what it will cost. You can usually find out in a couple of minutes without reading any code.

FilesorServer

The two kinds of app

Some apps are a set of files: pages, scripts, styles and pictures. The visitor's browser downloads them and does all the work. A portfolio, a quiz, a calculator or a to-do list that saves to the visitor's own browser is usually this kind. These are called static sites or single-page apps.

Other apps have a part that keeps running on a computer somewhere, even when nobody has the page open. That part is the server. An app needs one when it signs people in to its own accounts, keeps data in its own database, sends email, takes payments, or uses a paid service with a key the visitor must never see.

A static site or single-page app

HostHands over files
Files
BrowserDoes all the work

An app with a server

BrowserAsks
ServerRuns all day, keeps the secrets
Files the browser runs, or a part that keeps running on a computer somewhere. That one difference decides the rest.

Look at the folder

Open the project folder your AI tool gave you. These point to a server:

  • a folder called server, api or backend
  • Python files (ending in .py) next to a file called requirements.txt or pyproject.toml
  • a file like server.js or index.js at the top that mentions express, fastify or createServer
  • a Next.js app (it has a next.config file) with a folder called app/api or pages/api

These point to a static app:

  • a file called index.html near the top
  • a file called vite.config.js or vite.config.ts
  • a package.json whose build line says vite build or react-scripts build

If you find signs of both, the folder probably holds two parts, a website and a server, and each goes online in its own way.

Look at the settings

If there is a file called .env or .env.example, the names in it tell you a lot.

A name like DATABASE_URL, or any name with SECRET in it, points to a server. Those values have to stay hidden, and only a server can hide them.

Names that start with VITE_, NEXT_PUBLIC_ or REACT_APP_ are values the app copies into the files the browser downloads. They work without a server, and anyone who opens the page can read them.

Apps that use Supabase or Firebase

Many apps made with AI keep their data in Supabase or Firebase and talk to it straight from the browser. These often need no server of their own, because the database company runs that part. The key they put in the browser is meant to be public, as long as the database's access rules are switched on: Row Level Security in Supabase, Security Rules in Firebase. Without those rules, anyone with the page open can read or change the data.

A folder called supabase/functions holds small pieces of server code that Supabase runs for you. They don't make your app need a server of its own.

Ask your AI tool

If you're still not sure, ask the tool that wrote it. Paste this in:

“Does this app need a server running all the time, or can it be built into static files? If it needs a server, which parts need it and why?”

The second half of the answer is worth reading. If one small feature needs a server, such as a contact form, there may be a service that handles it, and the rest of the app can stay static.

Why it matters

A static app can go on hosts that only hand out files, and many do that free for small sites. It copes well with a sudden crowd, because each visit is just a file download.

An app with a server needs a host that runs it all day. That usually costs money every month. Some hosts put a free server to sleep when nobody visits, so the first visitor after a quiet spell waits several seconds while it starts. What each part costs is in its own guide.