Deploying frontend applications has gotten easier over the past decade, but also more complex behind the scenes. Most apps today need more than just HTML, CSS, and a CDN. They need authentication, secure APIs, environment configs, storage access, and sometimes server-side rendering.
Netlify helped kick off a modern approach to hosting, especially for static sites and JAMstack-style architectures. But if you're building an app that also depends on a backend, managing that split becomes a real part of your workflow.
With Appwrite Sites, you get an alternative that treats frontend deployment as part of a full-stack environment. Instead of connecting your frontend to a separate backend via API tokens and CORS rules, Sites lives in the same platform as your database, storage, authentication, and functions.
In this article, we'll break down how Appwrite Sites and Netlify compare, from framework support and SSR, to environment variables, deployment flows, and the developer experience of hosting modern apps.
What is Appwrite Sites?
Appwrite Sites is a deployment and hosting platform within the Appwrite ecosystem. It supports both static sites and server-side rendered applications, with built-in Git integration, preview deployments, custom domain support, and container-based SSR.
Because it's part of the same platform as Appwrite's backend services, like auth, database, storage, and cloud functions, you don't need to stitch together separate providers or manage secrets manually. Your frontend and backend live in the same project, with a shared security model and automatically scoped environment variables.
Sites supports a wide range of frameworks, from Next.js and Nuxt to Astro, SvelteKit, Angular, Remix, and Flutter Web. For static apps, you can deploy via Git or manually upload a .tar.gz
. For SSR, Sites runs your app in a container with runtime access to secrets and Appwrite SDKs.
Netlify and the JAMstack model
Netlify pioneered the JAMstack movement, where apps are decoupled into static frontends + serverless functions + external APIs. That model works especially well for sites that are mostly static, with light dynamic behavior: marketing pages, documentation, or e-commerce frontends backed by third-party services.
Netlify offers automatic builds from Git, preview URLs, branch-based environments, edge functions, form handling, and even built-in identity support (though limited in scope). It also includes a CLI and plugin ecosystem for customizing builds.
But while it's flexible, it's not tightly integrated. You still need to bring your own database, authentication, file storage, and backend logic, and manage how your frontend connects to all of it.
If you're building a simple frontend, Netlify is fast and effective. But for applications where frontend and backend logic are deeply connected, managing those boundaries becomes the challenge.
Deployment workflows
Netlify
Netlify uses Git-based deployment as its primary model. You connect your GitHub, GitLab, or Bitbucket repository, and Netlify auto-detects your framework. Every push to a branch triggers a build, with a unique deployment URL.
- Branch-based previews are automatically generated
- Build settings can be customized via the UI or
netlify.toml
- Environment variables can be scoped to Production, Preview, and Dev
- Rollbacks are supported
- There's no drag-and-drop UI deployment option, manual deploys must go through the CLI
Netlify does provide build plugins, custom functions, and API routing, but you'll need to wire those up separately if you're using a custom backend.
Appwrite Sites
Appwrite Sites also supports Git-based deployment with preview environments:
- You connect a GitHub repo to your Appwrite project
- Framework detection sets defaults for build, install, and output
- Pushes to the production branch deploy automatically
- Every commit, branch, or pull request generates a unique URL for preview
- All builds include downloadable artifacts
-
Manual deployments are supported via
.tar.gz
or drag-and-drop in the Appwrite Console
Rollbacks are instant and available through the UI. Because the deployment lives inside your Appwrite project, it inherits access to your backend services automatically, without needing to configure tokens, keys, or external origins.
This is especially helpful for teams working in mixed Git workflows, or solo developers who want a quick manual deploy option without setting up CI.
Framework support
Netlify supports most popular frontend frameworks, including Astro, Eleventy, SvelteKit, Nuxt, Next.js, and Angular. Most are treated as static frameworks unless you configure SSR explicitly using Netlify Functions or Edge Functions.
SSR support is more limited. While you can run serverless functions alongside your frontend, the integration varies depending on your framework. Next.js and Astro get the most complete support.
Appwrite Sites supports a similar set of frameworks, but adds SSR support via containers, which allows full runtime access to environment variables and Appwrite services:
- Next.js – SSR and static
- Nuxt – SSR and static
- SvelteKit – SSR and static
- Angular – SSR and static
- Astro – SSR and static
- Remix – SSR and static
- Flutter Web – static only
- Vanilla JS, Lynx, Analog, etc. – static
Each framework can be customized with its own build and install commands. If your framework isn't listed, you can use “Other” and specify custom config.
If you're using SSR with anything beyond Next.js or Astro, Appwrite Sites provides broader and more consistent support out of the box.
Hosting options: Static vs SSR
Both platforms support static and server-side rendered hosting, but their architectures differ significantly.
Netlify
- Static: Content is pre-rendered and served from a global CDN
- SSR: Pages are rendered using serverless or edge functions
- Timeouts: Default timeout is 10s, up to 26s for Pro plans
- Limitations: Memory and cold starts depend on function tier and region
- Environment access: Functions get runtime env vars, but static content does not
Netlify's SSR works well for lightweight APIs and dynamic content, but lacks full access to services unless you add integrations or connect to external providers.
Appwrite Sites
- Static: CDN-hosted HTML/CSS/JS, with build-time env vars
- SSR: Full server-side rendering in isolated containers
- Timeouts: Configurable up to 30s per request
- Environment access: Both build-time and runtime variables are supported
- Logging: Console output from SSR code is captured in logs
The container-based SSR model means you can use Appwrite's SDK at runtime, securely read secrets, and interact directly with databases, functions, or storage, all from your rendering logic.
If your SSR routes require access to auth tokens, protected storage, or custom logic, Appwrite's model gives you more control than Netlify's function-based execution.
Environment variables and secrets
Netlify uses a three-scope model, Production, Preview, Development, with env vars scoped accordingly. You define them in the dashboard or via the CLI, and they're injected at build or function runtime.
Appwrite Sites provides:
- Project-wide variables shared across services
- Site-specific variables
- Secret variables (hidden after creation)
- Built-in Appwrite variables (project ID, endpoint, region, etc.)
- Automatic API key injection at build and runtime (for SSR)
You can define variables once in your Appwrite project and access them across deployments, functions, and services, without needing to sync values manually.
For example, instead of creating a token in Netlify and passing it to your frontend, Appwrite Sites automatically injects a scoped API key with access to your project, removing the need to manually rotate secrets or configure CORS.
Custom domains, CORS, and trust boundaries
Both platforms allow custom domains and HTTPS via auto-generated certificates.
Netlify:
- Supports custom domains via DNS config
- Wildcard subdomains and previews (e.g.
.netlify.app
) - Requires manual CORS configuration when connecting to external APIs
Appwrite Sites:
- Supports custom domains via CNAME or NS records
- Auto-generated domains for every branch and commit
- Built-in CORS trust if your backend is hosted on Appwrite
Since Appwrite Sites and your backend live in the same project, deployed frontends are automatically recognized and trusted. You don't have to manually list frontend origins or manage preflight responses, Appwrite knows your Sites deployment is part of the same scope.
This eliminates one of the most common pitfalls in multi-platform deployments: CORS misconfigurations.
Logging and observability
Netlify provides basic logging:
- Build logs for every deployment
- Function logs for serverless execution
- Analytics for traffic and latency (paid plans)
Appwrite Sites offers:
- Build logs
- Request logs (status code, path, duration, headers)
- Console output for SSR apps
- Log retention (24h on Free, 7d on Pro)
- Optional log disabling (for performance-sensitive routes)
Appwrite's SSR logs include server-side console output, which is helpful when debugging SSR failures, auth edge cases, or unexpected rendering issues, without needing to integrate a third-party logging tool.
Security and isolation
Both platforms enforce HTTPS and offer secret management.
Appwrite adds additional safeguards:
- Isolated containers for SSR deployments
- Secrets not visible after creation
- Automatic API key injection scoped to the current site
- Project-based access controls
- Preview deployment restrictions (e.g. team-only)
Since everything runs inside your Appwrite project, the surface area for misconfigurations is smaller. You're not exposing separate public APIs or managing external API keys, access happens within a single trusted environment.
Appwrite Sites vs Netlify: feature comparison
Feature | Appwrite Sites | Netlify |
---|---|---|
Static hosting | ✅ | ✅ |
Server-side rendering | ✅ (containers) | ✅ (functions) |
Git-based deployment | ✅ | ✅ |
Manual deployment (UI) | ✅ | ❌ |
Preview deployments | ✅ (branch, PR, commit) | ✅ |
Custom domains | ✅ (CNAME + NS) | ✅ |
Environment variables | ✅ (build + runtime, project-wide) | ✅ (scoped by env) |
Secrets support | ✅ (Option to hide after creation) | ✅ |
Automatic API key injection | ✅ | ❌ |
Auth, DB, storage integration | ✅ (native) | ❌ (external required) |
SSR console logs | ✅ | Limited |
CORS for Appwrite backend | ✅ (auto-trusted) | ❌ (manual config) |
Timeout configuration | ✅ (up to 30s, self-configurable) | ✅ (10s default, requires support team on paid plans) |
Final thoughts
Netlify is an excellent platform for static frontends and lightweight JAMstack sites. If you're building a marketing page, blog, or frontend that only talks to third-party APIs, it still delivers a clean and fast workflow.
But if your application needs more than that, auth flows, custom APIs, server-side logic, secure data access, etc., Appwrite Sites provides an integrated alternative. Instead of wiring together services across platforms, you keep your frontend and backend in one place, with fewer moving parts and tighter defaults.
Appwrite Sites is built for teams that want their frontends to do more, and for developers who want full control without unnecessary complexity.
Top comments (0)