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:3000in 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
A 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.