Repository navigation
Availability and Announcements
StarryBio can show a status badge on the profile image and a schedule dialog, plus a separate dismissible announcement bar. Both features are optional and completely static-configured; they do not query a calendar, chat service, presence API, or account.
Enable status with a default state, named status types, and a schedule:
status: {
enabled: true,
ownerTimeZone: 'America/New_York',
showOwnerTime: true,
showVisitorTime: false,
showNextAvailable: true,
responseText: 'Usually replies within a few hours',
default: {
text: 'Offline',
color: '#6B7280',
icon: 'M20 12h-2v2h2v-2z',
},
types: {
available: {
text: 'Available',
color: '#10B981',
icon: 'assets/images/online.webp',
message: 'Online and ready to chat!',
},
busy: {
text: 'Deep work',
color: '#EF4444',
message: 'Replies may take longer today.',
},
},
schedule: [
{ status: 'busy', days: 'weekdays', start: '09:00', end: '17:00' },
{ status: 'available', days: 'weekdays', start: '18:00', end: '21:00' },
],
},enabled, default, types, and schedule are required when a status object is present. Every scheduled status must name a key in types. The default definition is used whenever no schedule item matches.
Each status definition has:
-
text— required badge/tooltip label. -
color— required hex color. -
icon— optional local/remote asset, inline path, or Simple Icon configuration. It is masked and colorized with the status color. -
message— optional tooltip text. It overridesresponseTextfor that status.
The generated badge opens a schedule dialog. The dialog categorizes daily entries under both weekdays and weekends.
Schedule matching uses the visitor’s local date and clock, not ownerTimeZone and not UTC. The owner timezone exists only to display an optional “Owner:” clock in the tooltip.
The allowed days values are:
daily-
weekdays(Monday through Friday in the visitor’s calendar) -
weekends(Saturday and Sunday in the visitor’s calendar)
Times must use 24-hour HH:MM, and the end time is exclusive. start and end must be different.
{ status: 'available', days: 'weekdays', start: '21:00', end: '05:00' }This is an overnight interval. It is active from 21:00 through 04:59 the next day and belongs to its start day. A Friday weekday interval continues early Saturday; a weekday interval does not continue early Monday because Sunday is not a weekday.
If more than one matching entry overlaps, the first matching item in the schedule array wins. Keep entries non-overlapping unless you deliberately want that ordering behavior.
-
ownerTimeZonemust be a valid IANA zone such asAmerica/New_YorkifshowOwnerTime: true. It is optional otherwise. -
showOwnerTimedefaults totruewhen an owner timezone is configured, otherwisefalse. -
showVisitorTimedefaults tofalse. -
showNextAvailabledefaults tofalse. When enabled and the current state is not namedavailable, the tooltip finds the next transition into a schedule entry whose key is exactlyavailable. -
responseTextis fallback explanatory text for non-available statuses, and is also displayed after “Available now” if the active type has nomessage.
The runtime updates status display on the next minute boundary, then every minute. It does not use a server or persist a current state.
Use an announcement for a short release note, schedule interruption, or time-sensitive link:
announcement: {
enabled: true,
text: 'New bookings open on Friday.',
url: 'https://example.com/book',
},enabled and text are required. url is optional and accepts the same supported destinations as a normal link, including hash links. Without a URL, the text is informational only.
Visitors can dismiss the banner. The dismissal is stored in a starrybioAnnouncement browser cookie for seven days, with SameSite=Lax and path /. The dismissal key is derived from the configured text and URL, so changing either value makes the changed announcement visible again.
Announcements have no start/end scheduling setting. To publish or retire one on a schedule, change enabled and redeploy a build at the desired time.
- Do not configure a status schedule as if it were your own timezone; visitors in other zones will see their local-time interpretation.
- Do not use
ownerTimeZoneto influence availability—it only displays a clock. - Do not use the
availablekey for an unrelated status if you expect “Next available” to be meaningful. - Do not treat announcement dismissal as durable consent or a cross-device preference; it is one browser cookie.
See Troubleshooting if a status does not change when expected, and Security and Privacy for the privacy implications of clocks, schedules, and cookies.
StarryBio · 🏠 Home · ✨ Configure · 🚀 Deploy · 🩺 Troubleshoot · 🛠 Developer guide
Static link-in-bio setup, operation, and development guides.
- Configuration Reference
- Managing Content
- Appearance and Branding
- Availability and Announcements
- Assets and Generated Downloads
- SEO and Analytics