Skip to main content

Overview

This integration guide shows you how to how to update your existing project to:
  1. install the ButterCMS package
  2. instantiate ButterCMS
  3. create components to fetch and display each of the three ButterCMS content types: Pages, Collections, and Blog Posts.
In order for the snippets to work, you’ll need to setup your dashboard content schemas inside of ButterCMS first.

Starter project

Or, you can jump directly to the starter project below, which will allow you to clone, install, run, and deploy a fully working starter project that’s integrated with content already inside of your ButterCMS account.

Angular Starter Project

Hit the ground running with a pre-configured Angular + ButterCMS setup.

Installation

Add your API token to environment.ts:

Initialize the client

Create a reusable service:
For complete SDK documentation including all available methods and configuration options, see the JavaScript SDK Reference.

Pages

Angular is zoneless by default (standalone since v17, and the v22 CLI), so these examples use signals for reactive state — signal updates notify the zoneless change detector, whereas mutating a plain field (this.loading = false) would not re-render the view. For an NgModule-based app, declare these components in your module — the ButterCMS code is identical.

Collections

Dynamic components

Component Renderer

Example Component

Using in Pages

This uses a distinct page type (component_page) whose body is a Component Picker (Page Builder) field — an array of components — separate from the WYSIWYG landing_page in the Pages section (whose body is a string). A page’s body is one field type or the other, so the Page Builder example needs its own page type. Add a components/:slug route (see Routing) to view it.

Blog

Caching

Use a caching service for better performance:

SEO

Routing

Resources

Angular Starter

Pre-configured starter project

JavaScript SDK

Complete SDK reference

GitHub Repository

View source code

Content API

REST API documentation