Testing an app that runs on your own computer (localhost)

You typed something like http://localhost:3000 or http://127.0.0.1:8080 into Functionize and the test could not open it. This page explains why in plain terms, and gives you two free ways to make it work in about five minutes.

Why localhost does not work

localhost and 127.0.0.1 are not real addresses on the internet. They are a nickname that always means “this computer, the one I am sitting at right now.”

  • When you open http://localhost:3000 in your browser, “this computer” is your laptop, so your app appears.
  • When Functionize opens the very same address, “this computer” is Functionize’s test machine in the cloud. Your app is not on that machine, so there is nothing to show.

It is the same as writing “my house” on an envelope. It means something to you. It means nothing to the postal service.

No Functionize setting can change this, and neither can QuickConnect (our tool for reaching apps on your company network). Your app needs a real address that works from outside your computer.

The fix: a temporary public address

tunnel is a small program that runs on your computer next to your app. It gives your app a temporary public web address such as https://quiet-river-1234.trycloudflare.com. Anything sent to that address is forwarded to your app. Functionize opens that address, the tunnel passes it to your app, and the test runs.

Nothing is installed permanently. When you close the tunnel program, the address stops working.

Two free options. Pick one:

  Cloudflare Tunnel ngrok
Account needed No Yes (free)
Extra warning page for visitors No Yes, on the free plan (see note in Option B)
Address stays the same between restarts No Yes, with a free static domain
Best for A quick test right now Testing the same app repeatedly

Before you start, for either option: your app must already be running on your computer, and you need to know its port. The port is the number after the colon in the address you normally use. In http://localhost:3000 the port is 3000.

Option A: Cloudflare Tunnel

No account, no sign-up. The address changes each time you restart the tunnel.

1. Install cloudflared

Mac: open the Terminal app (press Cmd + Space, type Terminal, press Enter), paste this line, press Enter:

brew install cloudflared

If it says brew: command not found, install Homebrew first from brew.sh, then run the line again.

Windows: download the installer from the cloudflared download page. Pick the 64-bit .msi file, run it, accept the defaults. Then open Command Prompt (press the Windows key, type cmd, press Enter).

2. Start the tunnel

In the same window, paste this line. Replace 3000 with your app’s port:

cloudflared tunnel --url http://localhost:3000

Press Enter. After a few seconds you will see a box with a line like:

https://quiet-river-1234.trycloudflare.com

 

That is your app’s temporary public address. Copy the whole line, starting with https://.

3. Use it in Functionize

Go back to Functionize Studio Chat and paste the address. Functionize takes it from there.

4. Keep the window open

Leave the Terminal or Command Prompt window open for as long as you want to test. Closing it stops the tunnel.

Good to know

  • Every time you start the tunnel again you get a new address. Paste the new one into Functionize.
  • Cloudflare says quick tunnels are for testing, not production, and have no uptime guarantee. That is fine for this purpose.
  • If your app opens a second address on its own (for example a login on another port), that one is not covered. Ask us in Studio Chat and we will help.

Option B: ngrok

Needs a free account. In return you can claim one free static domain, so your address stays the same every time.

1. Create a free account

Sign up at dashboard.ngrok.com/signup.

2. Install ngrok

Mac: open the Terminal app (press Cmd + Space, type Terminal, press Enter), paste this line, press Enter:

brew install ngrok

Windows: open Command Prompt (press the Windows key, type cmd, press Enter), paste this line, press Enter:

winget install ngrok -s msstore

ngrok recommends the Microsoft Store version because it updates itself and Windows Defender sometimes wrongly flags the downloaded ngrok.exe.

3. Connect ngrok to your account

In the ngrok dashboard, open Your Authtoken (left menu, under Getting Started). Copy the token. In your Terminal or Command Prompt, paste this line with your token in place of YOUR_TOKEN:

ngrok config add-authtoken YOUR_TOKEN

You only do this once.

4. Claim your free static domain

In the ngrok dashboard go to Domains (left menu, under Universal Gateway) and click New Domain. ngrok gives you one free address like your-name.ngrok-free.app. Copy it.

5. Start the tunnel

Paste this line. Replace 3000 with your app’s port and your-name.ngrok-free.app with your domain:

ngrok http 3000 --url your-name.ngrok-free.app

Press Enter. You will see a status screen with a line starting Forwarding:

Forwarding   https://your-name.ngrok-free.app -> http://localhost:3000

 

6. Use it in Functionize

Paste https://your-name.ngrok-free.app into Functionize Studio Chat.

7. Keep the window open

Leave the window open while you test. Closing it stops the tunnel. Next time, skip straight to step 5; the address is the same.

Important: the ngrok warning page

On the free plan, ngrok shows a page that says “You are about to visit …” with a Visit Site button the first time anyone opens your address. Functionize’s test browser sees this page too, so the first step of your test must click “Visit Site”. After that ngrok remembers the visitor and the page does not appear again during that test.

If you would rather not have that step, any paid ngrok plan removes the warning page.

Frequently asked questions

Is this safe? While the tunnel runs, anyone who has the exact address can reach your app. The addresses are long and random, so nobody stumbles on them, but do not share the address publicly and close the tunnel when you are done. Do not tunnel an app that holds real customer data on your laptop. If in doubt, ask your IT team; both tools are widely used and well documented.

Do I need admin rights? Usually not. On Mac, Homebrew may ask for your password the first time. On Windows, the .msi installer or Microsoft Store may ask for permission.

Functionize says the page did not load. Check, in this order: your app is still running on your computer; the tunnel window is still open; you pasted the https:// address, not http://localhost…; for ngrok, the test’s first step clicks “Visit Site”.

My app uses a different address for images, login, or an API. If those live on other ports of your computer, they need tunnels too. Tell us in Studio Chat what the app calls and we will walk you through it.

Can Functionize’s QuickConnect do this instead? No. QuickConnect reaches apps on your company network (addresses like http://10.1.2.3 or http://intranet.company.com). It cannot reach localhost, because that word means a different computer to Functionize than it does to you.

When I am done? Close the Terminal or Command Prompt window, or press Ctrl + C in it. The public address stops working immediately.