Can't connect to application remotely

I have deployed a Dockerfile config which works locally on my machine. The fly.toml looks like this:

app = "elided"
kill_signal = "SIGINT"
kill_timeout = 5
processes = []

[env]

[[services]]
  internal_port = 5000
  protocol = "tcp"
  [[services.ports]]
    port = 5000

  [[services.tcp_checks]]
    grace_period = "1s"
    interval = "15s"
    restart_limit = 0
    timeout = "2s"

If I debug and connect to the host using flyctl ssh console then nc localhost 5000 it works as expected. And replacing localhost with any of the hosts IP addresses from ip a also works as expected. However connecting to the remote address at fly.dev on port 5000 does not work. It does not respond as expected. By does not work, I mean the nc connection connects, waits for a response, then closes the connection instead of immediately responding with text from the application.

I figured it out. For the next person who has this problem, you can’t host apps that aren’t HTTP(S) unless you assign it a dedicated IPv4 address. Public Network Services · Fly Docs

I have no idea how you’re supposed to know that though.

This keeps coming up, so we’re going to start rejecting these deploys so it’s obvious what’s wrong.

Non HTTP services work just fine over IPv6. They won’t work over shared IPv4. We thought it’d be best to let them work when they could, but you’re at least the third person to run into this.

I think it would be fine, except it’s not obvious since by default my workstation resolves the .fly.dev hostname to an IPv4 address instead of IPv6 so I didn’t know there was a difference. Is there any plan to have non-HTTP work over shared IPv4 in the future?