While Qwik focuses on Component API, Qwik City contains API to support the component with common server focused features:
- routing: Define your application routes with directory based routing. (Supports both MPA and SPA routing models.)
- pages: Render application pages, the main feature of an application.
- layouts: Define common shared page layouts to be reused across pages.
- loaders: Fetch data on the server to be used by the component.
- actions: Provide a way for the component to request the server to perform an action.
- validators: Provide a way for validating actions and loaders.
- endpoints: A way to define data endpoints for your RESTful API, GraphQL API, JSON, XML or reverse proxy.
- middleware: A centralized way to perform cross-cutting concerns such as authentication, security, caching, redirects, and logging.
- server$: A simple way to execute logic on the server.
- cache: Control caching of your content.
- env variables: API to manage reading environment variables, commonly used for keys, in a platform independent way.
- Supports both Server Side Rendering (SSR) for fully dynamic sites as well as Static Site Generation (SSG) to be hosted on static web servers and CDNs.
Qwik¹: Core framework, stable, primitives, component model.
City²: Opinionated file-based router, middleware, endpoints, and data fetching and update.
Qwik (core) and Qwik City (routing) solve problems at two layers of abstraction. Qwik, focuses on component and state management primitives, while Qwik City brings an opinionated and performant way to build sites at scale. We don't want to lock the ecosystem into a single correct way of building sites, in fact we encourage the community to build alternative solutions on top of Qwik.
High Level API Overview
This table shows which file (
layout.tsx) the respective feature should be implemented in.
Qwik City also comes pre-integrated with Partytown allowing you to execute your third-party code off the main thread.