They originally had (and seem to still have) the same JS runtime at the edge to give you a smart CDN/reverse proxy.
They just updated it from being JS only to being able to run any Docker image. Cloudflare gives you a persistent key/value store and Fly provides a non-persistent Redis cache.
You don’t have to move your entire app but there are plenty of use-cases where you can move more logic to the edge.