MartinOttosen
Optimizely
Dec 17, 2021
visibility 5384
star star star star star
(3 votes)

JS SDK and Optimizely jamstack

With CMS 12 we introduced long awaited support for .Net 5 not just because it’s faster or adds cross platform support but because .NET Core is the future of .NET. Incidentally, a faster and cross platform CMS is also good news for folks whose interests runs more along the lines of JavaScript, APIs and Markup. The latest CMS 12 addition exposes new capabilities through REST APIs and with it the JS SDK which is now officially released.

The JS SDK

The JS SDK has a few pieces to it:

  1. A Node.js CLI for managing your content definitions [GitHub] [npm]
    npx content-definitions push manifest.json
  2. A typescript client for fetching content from the CMS [GitHub] [npm]
    getContent('...', { select: ['heading', 'body'] })
      .then((content) => {
        // Content was successfully loaded
      });
  3. A decoupled Vue.js sample site running on Node.js and CMS 12 [GitHub]

APIs

This is not an exhaustive list of APIs, but a good starting point for many decoupled content applications:

  1. Content Delivery API [package], [spec], [docs]
  2. Content Definitions API [package], [spec], [docs]
  3. Content Management API [package], [spec], [docs]

Btw check out this useful list of .NET packages and status with respect to .NET 5.

How to get started

The simplest way to get acquainted with the SDK is to clone the repository and setup the sample site. The sample site is based on CMS 12 and uses the new Content Definitions API and a simple in-process OIDC server based on OpenIddict meaning no need for an external identity provider to get things going, but makes it easy to transition to Azure AD or some other OIDC capable provider once you near production.

The decoupled sample site demonstrates how you can build completely decoupled applications without breaking preview or on-page-edit. Note, at the time of writing on-page-edit is not working in updated chrome browsers, but we expect to have a solution for that soon, which should work with the approach used in this sample.

Dec 17, 2021

Comments

error Please login to comment.
Latest blogs
A note on using async computed fields with Optimizely Graph

Computed fields can be async, but do they work smoothly with the Graph C# SDK?

Johan Kronberg | Nov 9, 2026 |

Visual Builder without Next.js, Part 2: The Routing Decision Travels, the Engine Contract Doubles

One content tree, two engines, one edge: a strangler for Astro and Next.js on CMS 13. The same routing decision in a Next.js proxy and in a...

Piotr | Nov 8, 2026 |

Stride on SaaS CMS and Frontend Hosting, with Claude Code

This post shows how I set up the Optimizely Stride sample site on a new Optimizely CMS (SaaS) instance. The front end is on Optimizely Frontend...

Minesh Shah (Netcel) | Nov 7, 2026

What changed in Optimizely LanguageManager 5.5.4

LanguageManager 5.5.4 for Optimizely CMS 12 has no public release notes. I compared it to 5.5.3 and found no new features, but an axios upgrade tha...

Tomas Hensrud Gulla | Nov 7, 2026 |

Log your Optimizely Graph queries

Log Graph calls from .NET in in a way where it's easy to copy the query and parameters to GraphiQL.

Johan Kronberg | Nov 6, 2026 |

Introducing Optimizely Feature Flagging: Flag Your Content Model

Feature flag Optimizely CMS content properties without code changes: visibility, validation, editors and whole content types, with any flag provider.

Andy Blyth | Nov 3, 2026 |