Platform Changes

Vercel's platform update for July 2020 covers a broad range of improvements across deployments, the dashboard, domains, and documentation. Here is a breakdown of the most significant changes from this release.

Deployments

Serverless Functions now cache responses with 404, 301, and 308 status codes when an appropriate Cache-Control header is present. Previously, only 200 responses were cached. For projects using Next.js' Incremental Static Regeneration, updates are now only published after all Edge Network regions have received the change. Additionally, you can now include dotfiles in new Deployments, as they were previously ignored. The capability to deploy Serverless Functions to multiple regions has been restricted to Enterprise plan customers. Although the restriction was listed on the pricing page when the new pricing model launched, it is now enforced for the first time.

New URL patterns make it easier to import projects. Using deploy.new/<template> imports a Template, while deploy.new/<owner>/<repo> imports a GitHub repository. Error handling for Deployments has also improved: missing Docusaurus Output Directories now produce a useful error, inverted Range headers (e.g., Range: bytes=5-1) return a 416 response instead of a 500, and exceeding the 16,000-file build limit or the 250MB unzipped Serverless Function size limit each generate clear error messages. The .nuxt directory is now automatically cached for Nuxt.js Projects, along with default caching headers for client assets. Invalid sub properties in redirects, rewrites, or headers config, as well as invalid paths in the functions property, now yield useful errors. Log Drains now correctly identify the origin application as vercel rather than now.

Dashboard Updates

The Logs and Source Protection section in Project Settings no longer requires a new Deployment for changes to take effect. Environment Variables have been moved to a dedicated page within Project Settings. The Preview Deployment Suffix feature in Team Settings now supports subdomains. Deploy Hook events now display a generic avatar rather than one tied to a specific Vercel Account, and events for Team Members joining or leaving a Team are now rendered. New Projects can have names up to 100 characters, up from 52.

Several import flow refinements have been made. Git repositories containing Blitz.js apps now automatically apply Build and Development Settings defaults, and Blitz.js has been added to the Templates list. Importing from GitLab now lets you visually select a directory if no optimized framework is detected at the top level. iPad imports now display settings and build logs simultaneously without overlap, and importing an empty repository shows a clear error. Redirects to the success page happen immediately after a Deployment finishes, with errors surfaced right away.

The import flow also supports new query string parameters: ?redirect-url sends users to a specified URL after a successful import (attaching all relevant Deployment links), ?developer-id renders an integration logo and name for the redirect, and ?production-deploy-hook pre-creates a named Deploy Hook for the new Project. The Templates page now renders better screenshots on smaller displays. Other fixes include a scrollable preview when deleting multiple Tokens, surfaced errors when adding Deploy Hooks, a working CSV download button for subscription invoices, and a recovery-time modal when deleting an account or Team. Links to Deployments with custom Domains default to http since SSL Certificates may not be ready yet. Error pages no longer show the notification banner, and the 404 page now notes that the resource might be inaccessible rather than nonexistent. All now.json references in the Dashboard have been replaced with vercel.json. Deleting a Project now also removes all associated Deployments, and deleted accounts or Teams immediately make their projects unavailable.

Domains

The Dashboard now correctly shows the Registrar field for .is Domains, and all second-level Domains for .br (such as .app.br) are supported. Adding a non-FQDN Domain to Project Settings surfaces a useful error. If the most recent Production Deployment failed, that is now communicated on the Domains page. The availability message for .vercel.app subdomains is more explicit, noting it might be unavailable if it matches a Vercel Account name. Adding a Domain using Cloudflare now links to a relevant knowledge base article. Domains ending in .im that violate the 3-character minimum are no longer listed on the purchase page, and attempting to remove a Domain's underlying alias via vercel alias rm now renders a proper error. Transferring a Domain generates an invoice immediately, and adding up to 50 Domains in quick succession to Project Settings no longer triggers a rate limit.

Documentation

The Deploy Button page has been overhauled to explain integrating Vercel's project creation flow into a Git repository or service. The Adding a Domain section now clarifies that Domains can be added using A and CNAME records without setting nameservers. Text fields (like the feedback form) now accept the / character without accidentally focusing the search bar. The Caching page reflects the updated company name, and a new Build Step section covers using or avoiding .env files. The FAQ now includes instructions for programmatically bypassing Password Protection. Nameserver lists for Domains without configured nameservers display "No Nameservers Found," and the System Environment Variables screenshot no longer shows the old company name.

CLI polish

The July release of Vercel CLI continues to smooth out the vercel dev workflow. Development Environment Variables from Project Settings are now fetched automatically at startup, removing the need for a separate vercel env pull step before local testing. The CLI also checks for updates asynchronously, so startup time is no longer affected by version checks.

A handful of behavior changes affect how configuration is handled. The CLI now reloads vercel.json for every incoming request in vercel dev, instead of watching the file for changes. The Output Directory field from Project Settings is also honored during local development. When vercel.json contains both functions and builds properties, running vercel dev now produces a descriptive error rather than failing silently.

Additional fixes are aimed at edge cases. External URL destinations for rewrites and routes work correctly in the development server. Serverless Node.js functions run with vercel dev support array spread syntax. Running the CLI inside a directory whose .vercel file points to a project or account you don't have access to returns a clear error message. The CI indicator badge for the vercel/vercel GitHub repository is operational again.

The .env file generated by vercel env pull now includes markers that let the CLI recognize its own output. On subsequent pulls, the file is extended in place without a confirmation prompt. Finally, all zeit.ink URLs have been swapped for their vercel.link equivalents.

Integration fixes

Several corrections land in the source-control integrations. The Bitbucket Integration now links to the correct documentation for pull request comments, rather than pointing at the GitHub Integration's docs. Deployments created via GitLab or Bitbucket display the correct author in the Activity feed.

GitLab also receives parity updates. Its merge request comments use the same styling as those from GitHub and Bitbucket. In addition, GitLab no longer leaves comments on commits made outside the Production Branch. The @vercel/integrations package has been updated to reflect the company's current naming.

Security checks are strengthened for pull request-based configuration changes. Modifying vercel.json in a fork pull request now triggers an approval prompt when the file contains Secrets or when the project defines Environment Variables. This behavior previously applied only to now.json. The prompt is suppressed, however, when the most recent commit's author is a member of the target Vercel team.