I used ngrok at first but quickly got frustrated due to the maximum of 40 connections/minute (without paying money). Our web app was pretty bloated so refreshing the page twice would disable the tunnel for the rest of the minute, which you can imagine was pretty annoying. Supposedly keepalives are supposed to mitigate this, but our dev server must not have implemented it?
So for my purposes, they did the same exact thing, but Cloudflare's was much more generous in terms of resource limits.