
Immutable deploys have saved us more than once, especially when a failure had nothing to do with the code we had just changed. In one case, during a dependency update, the build completed successfully, but a library changed the behavior of a route that wasn’t covered by our tests. We used Instant Rollback to restore the previous deploy while we investigated, rather than rebuilding an older version or reverting several commits under pressure. The working deploy was already there, with the exact assets and configuration it originally shipped with. Context-specific environment variables are just as valuable during review. Production, Branch Deploys, Deploy Previews, and local development can all use different values, so our previews can point to staging services, disable certain third-party providers, and rely on restricted credentials. That way, someone can test a full flow without accidentally creating real customer data or triggering a live charge. We’ve also used Netlify Forms on smaller sites where a form needed reliable submissions and notifications but didn’t justify adding another backend service. It handles that kind of requirement well, as long as the workflow stays simple. Review collected by and hosted on G2.com.
Build times become more noticeable in monorepos and in projects with a large number of generated pages. Caching helps when enough of the previous build can be reused, but changes that invalidate a large portion of the project can still take a while. On a small application, that delay is easy to ignore. Once several developers are opening pull requests and each one generates a preview, concurrency and overall build consumption start to become part of the delivery conversation. Deploy Previews reduce the work of maintaining temporary environments, but they don’t make those environments free. Review collected by and hosted on G2.com.