I use netlify for serving frontend assets and have used fly.io's free tier, supabase's free tier, and all the major public cloud free tiers (though the latter is the most difficult to manage from a cost perspective).
And fly.io has a special feature to serve the static files for you so you can do it all in one place without putting load on your app server. Simply need to specify what folder to look in for the static files in your fly config file.