Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Icalendar Generator

Icalendar Generator Laravel Package

spatie/icalendar-generator

Generate RFC 5545 iCalendar (.ics) feeds with a fluent PHP API. Create calendars and events (start/end times, summary, metadata) for use in Apple Calendar, Google Calendar, and other clients. Outputs valid iCalendar text ready to serve or download.

View on GitHub
Deep Wiki
Context7

Generate calendars in the iCalendar format

Frequently asked questions about Icalendar Generator
How do I generate a basic .ics file for a single event in Laravel using this package?
Use the `Calendar` and `Event` components directly. For example, `Calendar::create('My Calendar')->event(Event::create('Event Name')->startsAt(new DateTime('2023-10-01'))->endsAt(new DateTime('2023-10-02')))->get()` generates a string. For downloads, use Laravel’s `response()->download()` with the returned string and `text/calendar` MIME type.
Does this package support recurring events (e.g., weekly meetings) with RRULEs?
Yes, the package supports RRULEs for recurring events. Use methods like `event()->recursDaily()->until(new DateTime('2023-12-31'))` to define recurrence rules. Test with your target calendar app (e.g., Google Calendar) to ensure compatibility, as some apps may interpret RRULEs differently.
Can I integrate this with Eloquent models to auto-generate .ics files for user events?
Absolutely. Extend your Eloquent model with a method like `generateIcs()` that uses the package’s `Calendar` and `Event` components. Map model attributes (e.g., `start_at`, `end_at`) to the package’s methods. For example, `$event->generateIcs()` could return a formatted .ics string or trigger a download.
What Laravel and PHP versions does this package support?
The package requires PHP 8.1+ and is tested up to Laravel 10+. Check the [GitHub repository](https://github.com/spatie/icalendar-generator) for the latest compatibility notes. If using an older Laravel version, ensure your PHP version aligns with the package’s requirements.
How do I handle time zones in generated .ics files?
Use Carbon instances with explicit time zones (e.g., `new Carbon('2023-10-01 10:00:00', 'America/New_York')`). The package defaults to UTC for `DTSTAMP` but respects the time zone of your input. For consistency, ensure your Laravel app’s time zone settings match the package’s expectations.
Can I generate bulk .ics files for thousands of events efficiently?
The package is optimized for performance, but generating large calendars (e.g., 10K+ events) may impact response times. For bulk operations, consider queueing the generation (e.g., Laravel queues) or generating files asynchronously. Test with your expected load to benchmark performance.
Does this package support custom iCalendar properties (e.g., X-PROPERTIES) beyond RFC 5545?
Yes, you can add custom properties using the `customProperty()` method on `Event` or `Calendar` objects. For example, `$event->customProperty('X-MYAPP-ATTRIBUTE', 'value')`. Verify these properties are supported by your target calendar app, as non-standard fields may not display or sync correctly.
How do I test the generated .ics files for compatibility with Google Calendar or Outlook?
Manually upload the generated .ics files to your target calendar app to verify rendering and functionality. For automated testing, use tools like [ical.js](https://github.com/blueimp/jQuery-UI/wiki/ical.js) to parse and validate the output. Focus on edge cases like recurring events, time zones, and custom properties.
Is there a way to generate .ics files without exposing them directly to users (e.g., for API responses or background jobs)?
Yes, the package returns raw strings, so you can use them in API responses (e.g., `return response($icsString)->header('Content-Type', 'text/calendar'))` or store them in a file system. For background jobs, queue the generation using Laravel’s queue system and return a job ID or URL for later retrieval.
What alternatives exist for generating .ics files in Laravel, and why choose this package?
Alternatives include writing custom iCalendar logic or using libraries like `Sabre/VObject`. This package stands out for its Laravel-friendly API, Eloquent integration, and adherence to RFC 5545/7986. It’s actively maintained by Spatie, reducing long-term risk, and offers a simpler, more intuitive interface than raw RFC implementation.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport