Deploying modern web applications should be fast, flexible, and reliable. As developers, we've come to expect instant previews, custom domain support, seamless environment configuration, automatic HTTPS, and the ability to deploy everything from static pages to full server-rendered apps.
Vercel has been a default choice for frontend teams building with Next.js. But with the launch of Appwrite Sites, you now have a new, integrated way to deploy web apps, especially when you want your front end to live alongside your backend, database, authentication, and storage.
In this post, we'll take a look at how Appwrite Sites compares to Vercel. We'll explore everything from framework support to deployment workflows, logging, performance, and how each platform fits into a larger developer workflow.
What is Appwrite Sites?
Appwrite Sites is Appwrite's new deployment and hosting platform, designed to support both static (including single-page applications) and server-side rendered (SSR) web applications. It's tightly integrated into the Appwrite ecosystem, so if you're already using Appwrite for authentication, database, storage, or functions, you can now deploy your front end in the same place, with automatic access to shared environment variables and services.
Whether you're building with Vite, Next.js, Nuxt, SvelteKit, Astro, or something simpler like Vanilla JS or even Flutter Web and Lynx, Appwrite Sites provides a unified deployment workflow for both static and dynamic applications.
Integrated, full-stack hosting with Sites
One of the biggest differences between Appwrite Sites and Vercel is how they fit into your application architecture.
Vercel focuses primarily on frontend deployment. It excels at handling static assets and serverless-rendered content, especially from Next.js. It also supports other frontend frameworks like Astro, SvelteKit, Nuxt, and Remix, although it's deeply optimized for Next.js and includes native support for features like ISR (Incremental Static Regeneration) and Edge Middleware.
Appwrite Sites, on the other hand, is part of a complete development platform. You're not just deploying your frontend. You're deploying it in the same environment that already knows about your database collections, users, sessions, cloud functions, storage buckets, and APIs. That means the same platform handles everything from user auth to file uploads to server-side logic, and your frontend can interact with it all without any manual configuration.
This level of integration also means less risk of misconfiguration when connecting your services. Your environment variables, domain rules, CORS policies, and secrets are all managed within one project scope, reducing the friction between your frontend and backend.
Deployment workflows
Both platforms support Git-based workflows, which means you can deploy by connecting a GitHub repo and pushing changes to a selected branch. Each deployment also generates automatic screenshots, giving you a quick visual snapshot of the deployed result.
Deploying on Vercel
- You connect your GitHub, GitLab, or Bitbucket repo.
- Vercel auto-detects your framework and sets up sensible defaults.
- Every push to your production branch triggers a build and deployment.
- Pull requests automatically create preview deployments with unique URLs.
- Each deployment includes a UI to inspect build logs, preview the deployment and view associated metadata.
- You can redeploy any previous commit and view full deployment history.
- There's no manual UI deployment support, although, there’s a CLI option.
Deploying on Appwrite Sites
- You connect a GitHub repo to your Appwrite project.
- Appwrite auto-detects your framework and applies default build, install, and output settings.
- You choose a production branch.
- Each commit triggers a build and deploy.
- You can preview pull requests, commits, and even branches, each with their own URLs.
- Manual deployment is supported, with a simple drag-and-drop interface in the Console. This lets you deploy without needing Git or the CLi.
- Rollbacks are instant. You can restore a previous deployment with one click.
- Deployment output is available as a downloadable folder you can inspect locally.
Manual deployment with Appwrite Sites offers an extra layer of flexibility, especially for small and simple static sites, which makes it easy to get started or quickly publish content without relying on Git or command-line tools.
Framework support
Vercel is best known for its deep Next.js integration, but it also supports other frameworks like Astro, SvelteKit, Nuxt, Angular, and Remix. However, its serverless and edge rendering infrastructure is most optimized for Next.js. Features like API Routes, Middleware, and ISR work out of the box with Next.js and require extra configuration or aren't supported at the same level with other frameworks.
Appwrite Sites offers SSR and static support for a wide range of frameworks, including:
- Next.js
- Nuxt
- SvelteKit
- Angular
- Astro
- Remix
- Flutter Web (static)
- Lynx
- Analog
- Vanilla JS and other static site generators
Each framework comes with its own build recommendations, and Appwrite Sites allows you to customize build and install commands, as well as define the output directory for compatibility.
Any static framework works well with Appwrite out of the box. For popular tools like Next.js, Nuxt, and SvelteKit, Appwrite offers presets that auto-configure your build and output settings. If your framework isn’t listed, you can choose “Other” and manually set the commands and output directory.
Most static and SPA setups work seamlessly. The only exception is SSR support for certain metaframeworks like Lit, which aren’t yet supported in SSR mode, but they still work fine as static sites.
If you're using a framework outside of Next.js, Appwrite Sites provides a more consistent experience across the board. This is also an advantage for teams that use different frameworks for different parts of their stack.
Hosting options: Static vs SSR
Appwrite Sites supports both Static/SPA hosting and Server-Side Rendering (SSR), much like Vercel. But there are a few differences in how they operate.
Static hosting
On both platforms, static content is pre-rendered at build time and served via a CDN. This gives you fast cold starts and simple deploys. Appwrite Sites provides build-time environment variables and supports any static framework or tool.
Server-side rendering
With SSR, both platforms render pages on demand.
Vercel runs SSR via serverless functions or edge functions depending on your configuration and framework. Its default serverless runtime supports dynamic SSR, and Next.js projects get special handling for API routes, dynamic rendering modes, and edge cache rules.
Appwrite Sites runs SSR apps in isolated containers, which means:
- You get full runtime access to environment variables
- Console output from server-side code is captured in logs
- The SSR runtime can access Appwrite services directly
That container-based model gives you more flexibility, especially if you're doing server-side API calls, interacting with Appwrite's SDK, or running custom logic during rendering.
Environment variables
Both platforms offer strong environment variable support, with scope control and secrets handling.
Environment variables on Vercel
- You define environment variables per environment: Development, Preview, and Production.
- You can override variables per branch.
- Secrets are encrypted and only available at build or runtime (depending on the variable).
- You can manage them from the dashboard or CLI.
Environment variables on Appwrite Sites
- You define project-wide and site-specific variables.
- Variables can be exposed at build time, runtime, or both.
- Appwrite injects built-in environment variables for your site, project, region, version, framework, and more.
- You can define secret variables that are hidden after creation and not exposed via Console or API.
These built-in variables make it much easier to integrate your front end with the rest of your Appwrite services. You don't have to manually pass your API endpoint or project ID because it's already available.
Appwrite also provides a dynamic API key automatically, scoped and injected for both the build process and runtime (for SSR). This makes it easier to create or configure collections at build time, or securely perform server-to-server operations during SSR. If you were deploying on Vercel, you’d need to manually generate an Appwrite API key, store it as a secret, and rotate it regularly to maintain security.
Domains, CORS, and routing
Both Vercel and Appwrite Sites allow you to connect custom domains and use automatically generated subdomains for previews.
Vercel provides:
- Auto-generated domains per project and deployment.
- Custom domain support with DNS configuration.
- Wildcard and branch subdomains.
- HTTPS with automatic renewal via Let's Encrypt.
Appwrite Sites offers:
- Auto-generated domain.
- Custom domain support via CNAME records or full nameserver (NS) configuration
- Branch and commit-specific URLs.
- HTTPS enforcement and TLS certificates out of the box.
When you host both frontend and backend on Appwrite, your domain is trusted automatically. This eliminates the need to manually add frontend origins to your CORS settings because Appwrite already knows your Sites deployment is part of your project. This simplifies development and removes a common pain point: CORS errors.
It’s also important for preview deployments. Vercel assigns preview URLs under a shared namespace (e.g. *.vercel.app). If you try to allow previews with a wildcard like *.vercel.app, you’re not just allowing your previews, you’re allowing every Vercel preview domain to access your backend. That introduces unnecessary risk. Appwrite avoids this entirely. Since previews are scoped to your project, they’re trusted automatically, giving you tighter control without needing to expose your backend to external domains.
Logging and monitoring
Both platforms offer ways to monitor your applications and track issues in production, with some key differences in their approaches.
Vercel provides:
- Build logs and deployment history.
- Function execution logs (for serverless and edge functions).
- Analytics for traffic and performance (on paid plans).
Appwrite Sites includes:
- Request logs: status codes, duration, methods, headers, paths.
-
Console output: SSR logs from
console.log()
andconsole.error()
. - Log retention: 24 hours on the free plan, up to 7 days on Pro.
- Optional log disabling: useful for privacy and performance-sensitive SSR routes.
These logs give you immediate visibility into how your app behaves in production and will help with troubleshooting issues when needed.
Performance and timeouts
Vercel uses edge functions and CDN caching for content delivery. Static content is served from edge locations, while serverless functions run in regional data centers. Performance varies by plan tier and deployment type.
Appwrite Sites uses a global CDN for static content, and container-based SSR for dynamic apps. You can configure timeouts (up to 30 seconds per request), and performance depends on your framework and hosting mode. Static hosting delivers near-instant responses through CDN caching, while SSR requires container initialization on cold starts but provides consistent performance afterward.
Security and isolation
Both platforms enforce HTTPS and protect secret environment variables.
Appwrite Sites also ensures:
- Container isolation per deployment
- TLS enforcement for all domains
- Secret environment variables hidden after creation
- Preview deployments can be restricted to team members
This is important for deploying apps that handle sensitive data or use server-side logic tied to specific users or accounts.
When to choose Appwrite Sites
If you're already building your backend with Appwrite, or want a single platform for your full-stack app, Appwrite Sites is a natural fit. You get integrated deployments, native access to your backend, and support for a wider range of frameworks with both static and SSR modes.
It's also a good choice if you:
- Need SSR for frameworks beyond Next.js
- Want to deploy front ends tightly coupled to backend services
- Prefer to manage authentication, database, storage, and hosting in one place
- Want rollback support, deployment visibility, and runtime logs built-in
Appwrite Sites vs Vercel: feature comparison
Feature | Appwrite Sites | Vercel |
---|---|---|
Full-stack integration | Yes | No |
Static hosting | Yes | Yes |
Server-side rendering | Yes (container-based) | Yes (serverless/edge) |
Git-based deployment | Yes | Yes |
Manual deployment via UI | Yes (drag-and-drop) | No |
Preview deployments | Branch, commit, PR | Branch, commit, PR |
Rollbacks | Yes | Yes |
CORS with Appwrite backend | Automatic (trusted by default) | Manual setup |
API key injection | Automatic (build + runtime) | Manual setup + rotation |
Environment variables | Build + runtime, auto-injected Appwrite vars | Build + runtime, manual |
Wide framework support | Yes | Yes |
Templates | Yes (multi-framework) | Yes (mostly Next.js) |
Timeout configuration | Yes (up to 30s) | Yes |
Logging | Build logs, request logs, SSR console output | Build + function logs |
Custom domains | Yes | Yes |
Final thoughts
Both Appwrite Sites and Vercel are great platforms for deploying modern web applications. But they're built for slightly different workflows.
Vercel is an excellent frontend-focused host, especially for teams that are all-in on Next.js, or for static sites that don’t need a backend. Appwrite Sites, meanwhile, offers a deeply integrated full-stack environment, where your front end, backend, and services all live in the same project.
If you want to simplify your stack and keep everything in one place, from database to auth to hosting, Appwrite Sites offers a compelling alternative that brings clarity and flexibility to full-stack development.
You can get started today by heading to your Appwrite Console and creating a new Site. Appwrite Sites has templates, GitHub integrations, and framework guides ready to go.
If you have any questions, reach out to the Appwrite community on Discord or use the contact form on the website.
Top comments (0)