Skip to main content
Each app has its own browser tab title, favicon, and link preview (the card shown when someone shares the app’s URL in Slack, iMessage, or social media). They live under seoSettings in the app’s apps/<dir>/zite.config.json. The owner can edit the same fields under Settings → Branding, which writes to this file.

seoSettings

All four fields are required strings. Use "" for any field you don’t want to set: an empty string leaves that field to the fallbacks below. A seoSettings object missing a field fails config validation, and the build tools reject the file write with an error naming the field. Changes take effect when the app is published.

What wins

For each field, the first of these that exists is used:
  1. The value in seoSettings.
  2. The matching tag in the app’s own index.html: its <title>, <meta name="description">, <link rel="icon">, or og:image.
  3. The platform default: the app name followed by | Zite for the title, a generic Zite description, the Zite favicon, and, for public (external) apps, a screenshot of the app as the preview image. Internal apps get no preview image by default.
The starter’s <title>Zite App</title> and /vite.svg favicon count as placeholders, so they never override the platform defaults.

Image URLs

faviconUrl and thumbnailUrl must be URLs a browser can load. When the owner uploads an image under Settings → Branding, Zite hosts it and fills in the URL. The build tools can’t upload images, so an agent either uses a URL the user already has (their website’s favicon, a logo on a CDN) or asks the user to upload the image in Settings → Branding.