live demo

every widget, running for real.

This page is a static Astro page using the same components you would install. Vote, react, comment and subscribe: everything goes to a demo site on Jamwidgets.

Reader analytics

One component in your layout records pageviews, referrers and campaigns, and your dashboard shows what readers do.

Waiting for this pageview to send. A content blocker can stop it.

snippet
---
import Analytics from "@jamwidgets/astro/Analytics";
---
<Analytics siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} />

View counter

Counts a visit when the page loads and shows the running total. Reload and watch it go up.

-
snippet
---
import Views from "@jamwidgets/astro/Views";
---
<Views siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} pageId={Astro.url.pathname} showUnique />

Reactions

Anonymous, per-page reactions. One tap each; tap again to take it back.

snippet
---
import Reactions from "@jamwidgets/astro/Reactions";
---
<Reactions
  siteKey={import.meta.env.JAMWIDGETS_SITE_KEY}
  pageId={Astro.url.pathname}
  reactions={["love", "clap", "fire", "think"]}
/>

Comments

Threaded comments and replies with no reader accounts. New comments wait in your moderation queue, so yours won't appear until it's approved.

snippet
---
import Comments from "@jamwidgets/astro/Comments";
---
<Comments siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} pageId={Astro.url.pathname} />

Polls

Ask a question and show the tally after people vote. One vote per visitor.

snippet
---
import Poll from "@jamwidgets/astro/Poll";
---
<Poll siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} slug="features-demo" />

Contact form

Bring your own fields; submissions land in your dashboard. Spam checks hold suspicious ones for review instead of dropping them.

snippet
---
import Form from "@jamwidgets/astro/Form";
---
<Form siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} formSlug="features-demo">
  <input name="name" required />
  <input name="email" type="email" required />
  <textarea name="message" required></textarea>
  <button type="submit">Send</button>
</Form>

Feedback

Readers send bug reports and feature ideas; you triage them privately in the dashboard.

snippet
---
import Feedback from "@jamwidgets/astro/Feedback";
---
<Feedback siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} />

Newsletter

Double opt-in email subscriptions. Subscribers confirm by email and can unsubscribe in one click.

snippet
---
import Subscribe from "@jamwidgets/astro/Subscribe";
---
<Subscribe siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} buttonText="Get updates" />

Waitlist

Collect pre-launch signups and see each person's place in line. Move them to invited or converted from the dashboard.

snippet
---
import Waitlist from "@jamwidgets/astro/Waitlist";
---
<Waitlist siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} />

Announcements

A site-wide banner you change from the dashboard without a rebuild. Readers can dismiss it.

snippet
---
import Announcements from "@jamwidgets/astro/Announcements";
---
<Announcements siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} />

Widgets inside posts

Drop a poll into a post in the editor; the Embed component brings it to life wherever the post renders.

Notes from a slow week

A post rendered from Markdown. The editor placed a poll right here:

snippet
---
import Embed from "@jamwidgets/astro/Embed";
const { Content } = await render(post);
---
<article><Content /></article>
<Embed siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} />

Galleries

Upload photos once and publish responsive galleries, or show one random photo from a gallery.

random photo

snippet
---
import Gallery from "@jamwidgets/astro/Gallery";
import RandomPhoto from "@jamwidgets/astro/RandomPhoto";
---
<Gallery siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} slug="demo-gallery" />
<RandomPhoto siteKey={import.meta.env.JAMWIDGETS_SITE_KEY} slug="demo-gallery" />

Posts

Write in the dashboard and publish to your static site at build time, as a content collection or a plain fetch.

  • Analytics without cookies

    Pageviews, referrers and campaigns from one component, with no cookies and no cross-site tracking.

    Oct 12, 2026

  • Write here, publish to your static site

    Posts written in the Jamwidgets editor reach your static site at build time, through a content loader or a plain fetch.

    Oct 12, 2026

  • Comments without accounts

    Readers reply with a name and a comment. Spam checks queue anything suspicious for you to review.

    Oct 12, 2026

snippet
---
import { fetchPosts } from "@jamwidgets/astro/loader";
const posts = await fetchPosts({
  siteKey: import.meta.env.JAMWIDGETS_SITE_KEY,
  limit: 3,
});
---
{posts.map((post) => <a href={`/blog/${post.slug}`}>{post.title}</a>)}

put them on your site.

One free site includes every widget on this page. Your snippets come with your own site key in the dashboard.