Widget

Add a "What's new" widget to your website so users can see your latest changelog entries without leaving your app.

The widget is available on Starter and Pro plans.

Quick start

Add a single script tag to your website. That's it — no build step, no dependencies.

html
<script src="https://app.itslive.dev/api/widget/your-slug" defer></script>

Replace your-slugwith your project's slug. You can find the ready-to-copy snippet in your project's dashboard under Share & integrate.

Floating button

The default mode. A button appears fixed in the bottom-right corner of the page. Clicking it opens a popup panel with your latest entries.

html
<!-- Floating button (default) -->
<script src="https://app.itslive.dev/api/widget/your-slug" defer></script>
PositionFixed, bottom-right (24px margin)
Panel width400px (responsive on mobile)
Max entries10 most recent published entries
Button colorUses your project's brand color

JavaScript API

The widget exposes a global window.ItsLive object in both modes. Use it to control the widget programmatically.

Method / PropertyDescription
ItsLive.open()Open the widget panel or modal
ItsLive.close()Close the widget panel or modal
ItsLive.toggle()Toggle the widget open/closed
ItsLive.entriesRead-only array of the latest changelog entries
javascript
// Check if widget is loaded
if (window.ItsLive) {
  ItsLive.open();
}

// Safely call from frameworks (React, Vue, etc.)
window.ItsLive?.toggle();

// Access entry data
console.log(ItsLive.entries);
// → [{ id, title, summary, tags, cover_image, date }, ...]

Dark mode

The widget automatically adapts to your site's theme. It detects dark mode by checking (in priority order):

  1. class="dark" on <html>
  2. data-theme="dark" or data-mode="dark"
  3. The actual background color of your page (computed luminance)
  4. prefers-color-scheme: dark (OS preference)

The widget updates in real time when the theme changes — no reload needed. It watches for class and attribute mutations on the <html> element.

Notification badge

In floating mode, a red notification dot appears on the button when there are new entries the user hasn't seen yet.

StorageUses localStorage to track the last seen entry date
When it showsOnly when there are entries published after the user last opened the widget
When it hidesAs soon as the user opens the widget

Examples

React / Next.js

tsx
// components/changelog-button.tsx
'use client';

export function ChangelogButton() {
  return (
    <button onClick={() => (window as any).ItsLive?.open()}>
      What's new
    </button>
  );
}

// app/layout.tsx — add the script tag
<Script
  src="https://app.itslive.dev/api/widget/your-slug"
  data-mode="modal"
  strategy="lazyOnload"
/>

Vue

vue
<template>
  <button @click="openChangelog">What's new</button>
</template>

<script setup>
function openChangelog() {
  window.ItsLive?.open();
}
</script>

Navbar "What's new" link

html
<nav>
  <a href="/features">Features</a>
  <a href="/pricing">Pricing</a>
  <a href="#" onclick="event.preventDefault(); ItsLive.open()">
    What's new
  </a>
</nav>

<script
  src="https://app.itslive.dev/api/widget/your-slug"
  data-mode="modal"
  defer
></script>

Custom notification badge

html
<!-- Show a badge on your own button using ItsLive.entries -->
<script
  src="https://app.itslive.dev/api/widget/your-slug"
  data-mode="modal"
  defer
></script>

<script>
  // Wait for widget to load, then check for entries
  window.addEventListener('load', function() {
    setTimeout(function() {
      if (window.ItsLive && ItsLive.entries.length > 0) {
        document.getElementById('changelog-badge').style.display = 'block';
      }
    }, 500);
  });
</script>