Skip to content
Lockerverse SDK
Esc
↑↓navigate↵open⌘Jpreview
On this page

Public event listings

Add saved public Events to an existing site with the Lockerverse SDK.

Connect the existing Events section instead of adding a duplicate list. Keep the host’s page structure and light/dark theme. Import only the public Events entry and its CSS. The SDK owns loading, retry, empty states, paging, image cards, and sharing. Keep event links as supplied. Do not add ticket checkout or registration controls unless separately requested. Configure dates and sorting through the hook; do not fetch and sort Events in separate page code.

Public event listings

Use the public Events entry to show publicly listed Events that are happening now, start in the future, or have ended. It does not load ticket or payment UI.

import {
  LockerversePublicEvents,
  useLockerversePublicEvents,
} from "@lockerverse/react/public-events";
import "@lockerverse/react/public-events.css";

function CommunityEvents() {
  const events = useLockerversePublicEvents({ communitySlug: "auburn" });
  return <LockerversePublicEvents events={events} title="Events" theme="light" />;
}

The hook returns client, events, loading, error, and refresh. The component takes the full hook result so it can show loading, empty, and retry states. title sets the visible heading, showHeading can hide it, and timeZone controls date display. The default time zone is America/New_York. Use style with LockerverseStyle tokens or className to match the host site. Links open in a new tab when they use HTTP or HTTPS. Events can include an optional imageUrl. The list uses image cards when an image is present and a date tile when it is absent. The default view groups events into “Happening now” and “Upcoming”. The “Past Events” view loads on demand and offers “Load more” for older events. Each card has a share action. Sharing uses the event link when one exists; otherwise it uses a link to the event card on the host page. For a one-list view, a card link can load up to five more pages to find its Event. The visitor can still use Load more.

Pass one configuration object to the hook for a different list. The component reads that configuration from the hook result. With showTabs: false, it shows one full-width list; includePast selects whether that list includes ended Events. from, to, and sort set the server-side date range and order. Without from or to, a one-list view reads all publicly listed Event history. It includes past Events by default and sorts by descending start time, so newer Events appear first. With includePast: false, the default is ascending start time for current and future Events. Each page has 20 Events.

const config = {
  showTabs: false,
  includePast: true,
  from: "2026-09-01T00:00:00.000Z",
  to: "2026-10-01T00:00:00.000Z",
  sort: "startAtAsc",
} as const;
const events = useLockerversePublicEvents(
  { communitySlug: "auburn" },
  { config, initialPage }
);
return <LockerversePublicEvents events={events} />;

For server rendering, obtain initialPage with the SDK client’s search() and the same date, scope, sort, and page size. Without this configuration, initialEvents from list() keeps the original Upcoming and Past views.

Date bounds are ISO instants. An Event is included when its time overlaps the range: from is inclusive and to is exclusive. Omit either bound when it is not needed. showTabs and includePast are independent. Match an SSR seed to the same community, date range, sort, and page size. Keep available data visible when a browser refresh fails. Use the shared integration guide for static-site limits and verification.

Public attendee lists

Add an attendee list only when the resource prompt requests it and public listing is enabled. Use createLockerversePublicApiClient and getPublicEventAttendees from @lockerverse/sdk; do not build the API endpoint. The generated client takes the API origin, without /api. Use publicApiOrigin when supplied; otherwise derive it with new URL(apiBaseUrl).origin for the supplied standard Lockerverse API URL. Pass that client, path: { communitySlug, eventId }, and throwOnError: true to each request. Read data only after success inside try; show a retry action in catch. Pass each data.nextCursor as query.cursor until it is null.

Display only attendee names from data.registrations. Do not display party size, total counts, email addresses, or other registration values. Match the existing page and include loading, empty, and error states. The generated public API types and the installed Core SDK README define the response.

Last updated on October 15, 2026

Was this page helpful?