If you want “old reliable” that works how you expect it to, with the ease of use of a modern platform, and one that won’t break the bank, my pick would be Cloudflare or Render.
If you want “old reliable” that works how you expect it to, with the ease of use of a modern platform, and one that won’t break the bank, my pick would be Cloudflare or Render.
I'd love more detail on this. We have made major investments in open source and ensuring Vercel is an open platform.
◆ The Vercel Build Output API exposes all the underlying primitives of the platform for every framework to take advantage of (https://vercel.com/blog/build-output-api)
◆ We've diligently invested in standard-compliant API signatures. Serverless Functions adopted the Node.js request / response standard (as opposed to e.g.: AWS Lambda inventing a new one) and Edge Functions adopt the Web standard. We've joined WinterCG to foster this standardization effort (https://wintercg.org/)
◆ We've always invested in API compatibility between local development, self hosting and Vercel infrastructure (e.g.: `vc dev` is open source https://github.com/vercel/vercel).
◆ We're continuing to invest here. Next.js and Vercel build outputs are always getting more detailed, we're exploring support for running build outputs locally (`vc start`) as an open source offering, etc.
> they don’t seem to care much about security
We added support for your feature request, and security remains the top priority of the company. Some recent ships:
◆ https://vercel.com/changelog/access-tokens-can-now-be-scoped...
◆ https://vercel.com/changelog/share-environment-variables-acr...
◆ https://vercel.com/changelog/expiration-dates-now-available-...
◆ https://vercel.com/changelog/protected-preview-deployments-a...
◆ https://vercel.com/changelog/increased-security-with-view-on...
◆ https://vercel.com/changelog/enhanced-security-with-new-api-...
In fact, look at this example I tweeted today: https://twitter.com/rauchg/status/1620821476499947523
… it shows how Vercel lazily optimizes _specifically_ (1) for the images in viewport and (2) for the devices requesting those images. And new pages and images can be added without redeploying.
I think we could still put image optimization behind a flag with a durable cache at build time (think: `next export --optimize-images`), but it's always been hard to prioritize it as the world moves further away from pure-static solutions
As a userspace alternative, I don't think it'd be too hard to do a post-build script that runs `sharp` on a `source-images` folder, outputs it to `public/static-images` with content-addressable checksums, and sets `cache-control` in `next.config.js` `headers` to `public, max-age=31536000, immutable`. Oh, and you could first check if there work has already been done in `.next/images-cache` or something that the CI provider would cache across builds, to make it a bit faster.
Everything about the feature you're referring to is open source. We're expanding our documentation to better present this compatibility layer.
> ECMAScript excitement
> Congrats to Justin Ridgewell @vercel & @legendecas on advancing the "Async Context" proposal to Stage 1 at @TC39 today