Installiere das Package über die npm Registry.
npm install add-to-calendar-buttonImportiere das Modul in deine Komponente, in welcher du den Button nutzen möchtest.
import 'add-to-calendar-button';Beginne mit der Nutzung, indem du einen <add-to-calendar-button> Tag in deinem HTML-Quellcode einfügst - mit den Optionen als Attribute.
Ganz genau - es ist derart einfach.
Dein Code kann hierbei bspw. wie folgt aussehen.
<add-to-calendar-button
name="Titel"
options="'apple','google'"
location="World Wide Web"
start-date="2026-10-03"
end-date="2026-10-03"
start-time="10:15"
end-time="23:30"
time-zone="Europe/Berlin"
language="de"
></add-to-calendar-button>Das Skript wird mit dem "default"-Button-Style und dem englischen Sprachpaket ausgeliefert - der Button sieht also von Haus aus gut aus und funktioniert ohne jegliche zusätzliche Konfiguration.
Wenn du das Browser-Skript direkt lädst, werden weitere Styles und Sprachen automatisch bei Bedarf geladen (jeweils wenige KB). Bei gebündelten Integrationen solltest du die benötigten Module wie unten gezeigt explizit registrieren.
Wenn du das Skript bundlest, importiere die benötigten Style- und Sprachmodule vor dem Hauptmodul. So sind sie ohne Netzwerk-Anfrage registriert, bevor das Custom Element übernimmt - auch bei der SSR-Hydration:
import 'add-to-calendar-button/styles/3d'; // any style besides "default"
import 'add-to-calendar-button/i18n/de'; // any language besides English
import 'add-to-calendar-button'; // load the component lastUm alle Styles oder alle Sprachen in einer Anweisung zu laden, nutze die Aggregat-Module: import 'add-to-calendar-button/styles/all' und import 'add-to-calendar-button/i18n/all'.
Siehe die Optionen "button-style" und "language" auf der Konfigurations-Seite für alle Details.
Der Button kann zusätzlich eine Hülle auf dem Server vor-rendern - für ein sofortiges, layout-stabiles erstes Rendern. Bei der Hydration behält die Komponente die passenden Styles der Hülle bei, bis der Client-Button vollständig gestylt ist. Siehe den "Server-seitiges Rendern"-Abschnitt auf der Profi-Funktionen-Seite. Server-seitiges Rendern
Ein komplettes Beispiel könnte so aussehen.
<!-- +page.svelte (SvelteKit, SSR enabled) -->
<script>
import { atcb_generate_ssr_html } from 'add-to-calendar-button/ssr';
import { onMount } from 'svelte';
const ssrHtml = atcb_generate_ssr_html({
name: 'Reminder to check the add-to-calendar-button demo',
options: ['Apple', 'Google'],
location: 'World Wide Web',
startDate: '2026-10-03',
endDate: '2026-10-03',
startTime: '10:15',
endTime: '23:30',
timeZone: 'Europe/Berlin',
buttonStyle: '3d',
language: 'de',
});
onMount(async () => {
await Promise.all([
import('add-to-calendar-button/styles/3d'),
import('add-to-calendar-button/i18n/de'),
]);
await import('add-to-calendar-button'); // client-side upgrade; load last
});
</script>
{@html ssrHtml}Nicht dein Tech-Stack?
Klicke hier für weitere Anleitungen!
Wir unterstützen alle großen Frontend-Stacks und viele weitere Umgebungen, wie bspw. WordPress.
Entdecke mehr komplette Projekt-Beispiele auf Stackblitz: Hier klicken .

Mehr Funktionen (wie RSVP) und deutlich weniger Stress dank ics-Datei-Hosting, No-Code-Bearbeitung und vielem mehr.