PackageTrack
Sign in Get early access

sabre/vobject

The VObject library for PHP allows you to easily parse and manipulate iCalendar and vCard objects

5.0.0 26M downloads/mo #782 most downloaded on Packagist sabre-io/vobject

What this package is like to depend on

Last release 1 months ago

07 Jul 2026

Release timing varies

gaps range from 3 weeks to 10 months

Nearly every release is documented

notes for 87 of 88 stable releases

Nothing withdrawn

no release was ever pulled

14 years old

99 releases · first in 2012

5 releases in the last 12 months

see the full history below

Release timeline

99 releases · Aug 2012 to Jul 2026
2013 2015 2017 2019 2021 2023 2025
Release Pre-release

Releases

latest 60 of 99
  1. 5.0.0 07 Jul 2026
    Release notes

    5.0.0 (2026-07-07)

    This major release v5 declares function parameter and return types across the
    codebase. Users will need to be careful to call functions/methods with the
    correct types.

    Support for PHP below 8.2 has been dropped.
    This release supports PHP 8.2 and up.

    Open source →
    Release notes
    • #767 Drop PHP 7.4 8.0 8.1 and support PHP 8.2 and up (@phil-davis)
    • #769 fix: minor code fixes (@phil-davis)
    • #586 PHP types (@tcitworld @phil-davis)

    This major release v5 declares function parameter and return types across the codebase. Users will need to be careful to call functions/methods with the correct types.

    Support for PHP below 8.2 has been dropped. This release supports PHP 8.2 and up.

    Open source →
  2. 4.6.1 07 Jul 2026
    Release notes

    4.6.1 (2026-07-07)

    Open source →
    Release notes
    • #776 fix: preserve UTC 'Z' indicator in Period JSON serialization (@bastien-roucaries @guimard @phil-davis)
    Open source →
  3. 4.6.0 31 May 2026
    Release notes

    4.6.0 (2026-05-31)

    A new getByTypes method has been added for Vcards. This allows the caller to get a specific property that has the specified list of types. See issue #717 for more details.

    Various deprecated time zones are updated to their new/current values by #756
    FindFromTimezoneMap::find no longer throws an (undocumented) exception when a timezone is not found. It will now return null, which was already a documented possible return in the return type definition. The method now conforms to its documented behaviour. But callers may have been expecting to catch an “unexpected” exception, so this change may require changes for callers that need to handle occurences of invalid time zones.

    Open source →
    Release notes
    • #718 feat(VCard): add getByTypes method (@JimKnoxx)
    • #756 fix: Update deprecated timezone names (@ralflang)
    Open source →
  4. 4.5.9 31 May 2026
    Release notes

    4.5.9 (2026-05-31)

    Open source →
    Release notes
    • #759 fix(itip): handle null old calendar/event (@ChristophWurst)
    Open source →
  5. 4.5.8 12 Jan 2026
    Release notes

    4.5.8 (2026-01-12)

    Open source →
    Release notes
    • #721: Fix variable scope (@KristofferFM)
    • #723: Broker shouldn't add EXDATE property with floating timezone (@KristofferFM)
    • #726: Improved check on property name (@KristofferFM)
    • #727: Improve error checks in Mimedir parser (@KristofferFM)
    • #728: Removing attendee from scheduled recurring event should generate an EXDATE property (@KristofferFM)
    • #735: use RDATE in time range check and use all instances (@SebastianKrupinski)
    • #743: send participation reply on fresh event (@SebastianKrupinski)
    Open source →
  6. 4.5.7 17 Apr 2025
    Release notes

    4.5.7 (2025-04-17)

    • #618: Add new exchangetimezone 'Amsterdam, Berlin, Bern, Rom, Stockholm, Wien' (@chr-is)
    • #674: Allow unknown value data types for VALUE (@heiglandreas)
    • #707: add phpdoc return types for arrayaccess methods (@smhg)
    Open source →
    Release notes
    • #618: Add new exchangetimezone 'Amsterdam, Berlin, Bern, Rom, Stockholm, Wien' (@chr-is)
    • #674: Allow unknown value data types for VALUE (@heiglandreas)
    • #707: add phpdoc return types for arrayaccess methods (@smhg)
    Open source →
  7. 4.5.6 14 Oct 2024
    Release notes

    4.5.6 (2024-10-14)

    Provides support for PHP 8.4

    Full Changelog: 4.5.5...4.5.6

    Open source →
    Release notes
    • #662: add PHP 8.4 to CI (@phil-davis)
    • #669: fix: check if event status was changed to cancelled and generate appropriate message (@SebastianKrupinski)
    • #673: Fix Implicitly marking parameter $param as nullable is deprecated (@cedric-anne)
    • #675: refactor: Replace dirname(FILE) with DIR (@ChristophWurst)
    • #692: Throw InvalidDataException when RRule is invalid (@mathroc)
    Open source →
  8. 4.5.5 02 Jul 2024
    Release notes

    4.5.5 (2024-07-02)

    Open source →
    Release notes
    • #632: Add PHP 8.3 to CI (@phil-davis)
    • #649: add lineIndex and lineString properties to a Property Node (@JohnRDOrazio)
    • #652: ITip\Broker: handle timezones in replies to exception events (@gharlan)
    • #654: chore: stop exporting php-cs-fixer config (@phil-davis)
    • #656: Yearly rrule compliance by the iterator (@kroky)
    • #658: throw ParseException when null input is provided (@phil-davis)
    • #653: Handle summer time jumps in event recurrences (@phil-davis)
    Open source →
  9. 4.5.4 09 Nov 2023
    Release notes

    4.5.4 (2023-11-09)

    Open source →
    Release notes
    • #619: fixed issue: Undefined index: plusminus (@sash04ek)
    • #622: Create Issue467Test.php for 619 (@sash04ek)
    • #623: docs: fix type definition for oldCalendar (@kesselb)
    Open source →
  10. 4.5.3 22 Jan 2023
    Release notes

    4.5.3 (2023-01-22)

    • #607: Apply 'Support sabre/xml v4' and needed code changes to 4.5 branch (@phil-davis)

    Release 4.5.2 was accidentally done from master branch, which had other changes that have various backward-compatibility issues and may not work with older PHP before 7.4.

    This release 4.5.3 is from the 4.5 branch. It includes the dependency change from PR #603 to allow using sabre/xml v3 or v4 as well as v2.
    To do that, a couple of return types had to be declared - xmlSerialize returns void and xmlDeserialize returns array. Those declarations are supported from PHP 7.1 onward, so that is fine for the 4.5 release series.

    If you start using sabre/xml major version 3 or 4 and are redeclaring/inheriting these in your code, then you may also need to make the matching return-type declarations. But this small thing is a lot better than the large amount of code changes that were accidentally released as 4.5.2.

    Open source →
    Release notes
    • #607: Apply 'Support sabre/xml v4' and needed code changes to 4.5 branch (@phil-davis)
    Open source →
  11. 4.5.2 20 Jan 2023
    Release notes
    • #603: Support sabre/xml v4 (@gharlan)
    Open source →
  12. 4.5.1 09 Oct 2022
    Release notes
    • #597: Remove utf8_encode to easily support PHP 8.2 (@phil-davis)
    Open source →
  13. 4.5.0 17 Aug 2022
    Release notes
    • #579: Update .gitattributes (@cedric-anne)
    • #561: PHP 8.1 deprecated support for null values in its APIs (@mstilkerich)
    • #571: Fully ignore invalid lines (@heiglandreas)
    • #564: Fix infinite loop caused by yearly with bySetPos (@liurxliu)
    • #567: Endless loop problem in RRuleIterator::nextDaily (@KristofferFM)
    • #466: Add support for MEMBER in a VCard (@sash04ek)
    • #559: Handle Vobjects without closing tag (@sash04ek)
    • #582: Fix bug in by year day (@KAYLukas)
    Open source →
  14. 4.4.3 15 Jul 2022
    Release notes
    • #577: Ignore multiple same parameter-values (@heiglandreas)
    Open source →
  15. 4.4.2 24 Jun 2022
    Release notes
    • #565: lowercase mailto:-addresses in getNormalizedValue() (@pk1234)
    • #568: Add NICKNAME fallback for VCards without FNs (@Evengard)
    • #573: Component/select: Before uppercasing $child->group, make sure it isn't null (@algernon)
    • #575: Fix encoding detection on PHP 8.1 (@come-nc)
    Open source →
  16. 4.4.1 07 Dec 2021
    Release notes

    #557: Fix Iterator method signatures and avoid passing null as separator for implode (PHP 8.1 support) (@come-nc)

    Open source →
  17. 4.4.0 16 Nov 2021
    Release notes

    #548: Allow easier extension of the timezone guessing (@heiglandreas)

    Open source →
  18. 4.3.8 14 Nov 2021
    Release notes
    • #538: fix EventIterator returns wrong end endTime (@floerke)
    • #541: Reordering of the attendees is not a significant change (@floerke)
    • #543: Reordering of vevent is not a significant change (@floerke)
    Open source →
  19. 4.3.7 04 Nov 2021
    Release notes
    • #551: version bump that was missed in 4.3.6 (@phil-davis)
    Open source →
  20. 4.3.6 03 Nov 2021
    Release notes
    • #544: Fix deprecated usages and return types on PHP 8.1 (@cedric-anne)
    Open source →
  21. 4.3.5 12 Feb 2021
    Release notes
    • #523: Fix setting properties with group assignment (@mstilkerich)
    • #532: Make use of until parameter in nextMonthly function (@jaircuevajunior)
    Open source →
  22. 4.3.4 04 Feb 2021
    Release notes
    • #529: Reassign modified date in yearly rrule (@laoneo)
    • #525: Add .gitattributes to reduce package size (@fezfez)
    Open source →
  23. 4.3.3 09 Nov 2020
    Release notes
    • #519: Remove US/Pacific-New obsolete timezone (@phil-davis)
    Open source →
  24. 4.3.2 03 Oct 2020
    Release notes
    • #513: Added Support for PHP 8.0 (@phil-davis)
    Open source →
  25. 4.3.1 13 Jul 2020
    Release notes
    • #510: Fix an incomplete phpdoc type annotation (@mstilkerich)
    • #505: Refactor unit test code for phpunit9 (@phil-davis)
    • #500: Standardize CI (@phil-davis)
    • #496: CI tooling changes (@JeroenVanOort)
    Open source →
  26. 4.3.0 31 Jan 2020
    Release notes
    • Added support for PHP 7.4, dropped support for PHP 7.0 (@phil-davis)
    • #487: Added phpstan coverage, updated testsuite for phpunit8 (@phil-davis, @JeroenVanOort)
    • #495: refactored maps to use ::class notation (@JeroenVanOort)
    Open source →
  27. 4.2.2 14 Jan 2020
    Release notes
    • #465: Add TZ in iTip REPLY iTip messages
    • #486: Add PHONE-NUMBER value type (used for TEL in vCard 3.0)
    Open source →
  28. 4.2.1 18 Dec 2019
    Release notes
    • #469, #451: fix compat with php 7.4
    • #443: prevent running in indefinite loop
    • #449: Preventing creating a component for a root document
    • #450: Fix parse with option Forgiving with trailing equal
    • #459: fixed typo in VCalendar which resulting in usage of the wrong TimeZone
    • #462: Broker::parseEventForOrganizer copies DTSTAMP from $eventInfo that causes broken scheduling
    Open source →
  29. 4.2.0 19 Feb 2019
    Release notes
    • #432: DTSTAMP must be specified in UTC
    • #435: ORGANIZER e-mail address are case-insensitive
    • #441: Repairing BASE64 encoded vCard version 3
    Open source →
  30. 4.2.0-alpha1 26 Sep 2018 pre-release
    Release notes
    • #412: Broker: add timezone to CANCEL messages
    • #424: Support php7.3
    Open source →
  31. 4.1.6 20 Apr 2018
    Release notes
    • #406, #407, #408, #409: Another round of performance improvements in serialization of properties (@gharlan, @staabm)
    • #410: Fixes in iTip for handling BYDAY=SA,SO (@gharlan)
    • #381: Fixes in iTip handling of SCHEDULE-FORCE-SEND (@alecpl)
    Open source →
  32. 4.1.5 08 Mar 2018
    Release notes
    • #404: Serialization: Performance boost for long properties (@gharlan)
    Open source →
  33. 4.1.4 22 Dec 2017
    Release notes
    • #383: Fix possible infinite loop in RRuleIterator, when the RRule FREQ is YEARLY and it uses BYYEARDAY only (@mvdnes).
    • #392: Improved significant change detection. This should reduce the number of unneeded update emails in scheduling systems. (@alecpl).
    • #395: Removed Canada/East-Saskatchewan timezone, as it got removed from PHP as well. (@remicollet).
    Open source →
  34. 4.1.3 18 Oct 2017
    Release notes
    • #363: Repair script and de-duplicate properties that are only allowed once, but appear more than once. (@ddolcimascolo).
    • #377: Added Pacific Time (US & Canada) as exchange timezone
    • #384: Added fallback for VCards without FN
    Open source →
  35. 4.1.2 06 Dec 2016
    Release notes
    • #340: Support for BYYEARDAY recurrence when FREQ=YEARLY. (@PHPGangsta)
    • #341: Support for BYWEEKNO recurrence when FREQ=YEARLY. (@PHPGangsta)
    • Updated to the latest windows timezone data mappings.
    • #344: Auto-detecting more Outlook 365-generated timezone identifiers. (@jpirkey)
    • #348: FreeBusyGenerator can now accept streams.
    • Support sabre/xml 1.5 and 2.0.
    • #355: Support DateTimeInterface in more places where only DateTime was supported. (@gharlan).
    • #351: Fixing an inclusive/exclusive problem with isInTimeRange and fastForward with all-day events. (@strokyl, thanks you are brilliant).
    Open source →
  36. 4.1.1 15 Jul 2016
    Release notes
    • #327: Throwing InvalidDataException in more cases where invalid iCalendar dates and times were provided. (@rsto)
    • #331: Fix dealing with multiple overridden instances falling on the same date/time (@afedyk-sugarcrm).
    • #333: Fix endless loop on invalid BYMONTH values in recurrence. (@PHPGangsta)
    • #339: Fixed a few validate() results when repair is off. (@PHPGangsta)
    • #338: Stripping invalid BYMONTH= rules during validate() (@PHPGangsta)
    • #336: Fix incorrect BYSECOND= validation. (@PHPGangsta)
    Open source →
  37. 4.1.0 07 Apr 2016
    Release notes
    • #309: When expanding recurring events, the first event should also have a RECURRENCE-ID property.
    • #306: iTip REPLYs to the first instance of a recurring event was not handled correctly.
    • Slightly better error message during validation of N and ADR properties.
    • #312: Correctly extracting timezone in the iTip broker, even when we don't have a master event. (@vkomrakov-sugar).
    • When validating a component's property that must appear once and which could automatically be repaired, make sure we report the change as 'repaired'.
    • Added a PHPUnitAssertions trait. This trait makes it easy to compare two vcards or iCalendar objects semantically.
    • Better error message when parsing objects with an invalid VALUE parameter.
    Open source →
  38. 4.0.3 12 Mar 2016
    Release notes
    • #300: Added VCard::getByType() to quickly get a property with a specific TYPE parameter. (@kbond)
    • #302: UNTIL was not encoded correctly when converting to jCal. (@GrahamLinagora)
    • #303: COUNT is now encoded as an int in jCal instead of a string. (@strokyl)
    • #295: RRULE now has more validation and repair rules.
    Open source →
  39. 4.0.2 11 Jan 2016
    Release notes
    • #288: Only decode CHARSET if we're reading vCard 2.1. If it appears in any other document, we must ignore it.
    Open source →
  40. 4.0.1 04 Jan 2016
    Release notes
    • #284: When generating CANCEL iTip messages, we now include DTEND. (@kewisch)
    Open source →
  41. 4.0.0 12 Dec 2015
    Release notes
    • #274: When creating new vCards, the default vCard version is now 4.0.
    • #275: VEVENT, VTODO and VCARD now automatically get a UID and DTSTAMP property if this was not already specified.
    • ParseException now extends \Exception.
    • Sabre\VObject\Reader::read now has a $charset argument.
    • #272: Sabre\VObject\Recur\EventIterator::$maxInstances is now Sabre\VObject\Settings::$maxRecurrences and is also honored by the FreeBusyGenerator.
    • #278: expand() did not work correctly on events with sub-components.
    Open source →
  42. 4.0.0-beta1 02 Dec 2015 pre-release
    Release notes
    • #258: Support for expanding events that use RDATE. (@jabdoa2)
    • #258: Correctly support TZID for events that use RDATE. (@jabdoa2)
    • #240: Component\VCalendar::expand() now returns a new expanded VCalendar object, instead of editing the existing VCalendar in-place. This is a BC break.
    • #265: Using the new InvalidDataException in place of InvalidArgumentException and LogicException in all places where we fail because there was something wrong with input data.
    • #227: Always add VALUE=URI to PHOTO properties.
    • #235: Always add VALUE=URI to URL properties.
    • It's now possible to override which class is used instead of Component\VCalendar or Component\VCard during parsing.
    • #263: Lots of small cleanups. (@jakobsack)
    • #220: Automatically stop recurring after 3500 recurrences.
    • #41: Allow user to set different encoding than UTF-8 when decoding vCards.
    • #41: Support the ENCODING parameter from vCard 2.1. Both ISO-8859-1 and Windows-1252 are currently supported.
    • #185: Fix encoding/decoding of TIME values in jCal/jCard.
    Open source →
  43. 4.0.0-alpha2 04 Sep 2015 pre-release
    Release notes
    • Updated windows timezone file to support new mexican timezone.
    • #239: Added a BirthdayCalendarGenerator. (@DominikTo)
    • #250: isInTimeRange() now considers the timezone for floating dates and times. (@armin-hackmann)
    • Added a duplicate vcard merging tool for the command line.
    • #253: isInTimeRange() now correctly handles events that throw the NoInstancesException exception. (@migrax, @DominikTo)
    • #254: The parser threw an E_NOTICE for certain invalid objects. It now correctly throws a ParseException.
    Open source →
  44. 4.0.0-alpha1 17 Jul 2015 pre-release
    Release notes
    • sabre/vobject now requires PHP 5.5.
    • #244: PHP7 support.
    • Lots of speedups and reduced memory usage!
    • #160: Support for xCal a.k.a. RFC6321! (@Hywan)
    • #192: Support for xCard a.k.a. RFC6351! (@Hywan)
    • #139: We now accept DateTimeInterface wherever it accepted DateTime before in arguments. This means that either DateTime or DateTimeImmutable may be used everywhere.
    • #242: Full support for the VAVAILABILITY component, and calculating VFREEBUSY based on VAVAILABILITY data.
    • #186: Fixing conversion of UTC-OFFSET properties when going back and forward between jCal and iCalendar.
    • Properties, Components and Parameters now implement PHP's JsonSerializable interface.
    • #139: We now always return DateTimeImmutable from any method. This could potentially have big implications if you manipulate Date objects anywhere.
    • #161: Simplified ElementList by extending ArrayIterator.
    • Removed RecurrenceIterator (use Recur\EventIterator instead).
    • Now using php-cs-fixer to automatically enforce and correct CS.
    • #233: The +00:00 timezone is now recognized as UTC. (@c960657)
    • #237: Added a destroy() method to all documents. This method breaks any circular references, allowing PHP to free up memory.
    • #197: Made accessing properties and objects by their name a lot faster. This especially helps objects that have a lot of sub-components or properties, such as large iCalendar objects.
    • #197: The $children property on components has been changed from public to protected. Use the children() method instead to get a flat list of objects.
    • #244: The Float and Integer classes have been renamed to FloatValue and IntegerValue to allow PHP 7 compatibility.
    Open source →
  45. 3.5.3 07 Oct 2016
    Release notes
    • #331: Fix dealing with multiple overridden instances falling on the same date/time (@afedyk-sugarcrm).
    Open source →
  46. 3.5.2 24 Apr 2016
    Release notes
    • #312: Backported a fix related to iTip processing of events with timezones, without a master event.
    Open source →
  47. 3.5.1 07 Apr 2016
    Release notes
    • #309: When expanding recurring events, the first event should also have a RECURRENCE-ID property.
    • #306: iTip REPLYs to the first instance of a recurring event was not handled correctly.
    Open source →
  48. 3.5.0 11 Jan 2016
    Release notes
    • This release supports PHP 7, contrary to 3.4.x versions.
    • BC Break: Sabre\VObject\Property\Float has been renamed to Sabre\VObject\Property\FloatValue.
    • BC Break: Sabre\VObject\Property\Integer has been renamed to Sabre\VObject\Property\IntegerValue.
    Open source →
  49. 3.4.9 11 Jan 2016
    Release notes
    • This package now specifies in composer.json that it does not support PHP 7. For PHP 7, use version 3.5.x or 4.x.
    Open source →
  50. 3.4.8 04 Jan 2016
    Release notes
    • #284: When generating CANCEL iTip messages, we now include DTEND. (@kewisch).
    Open source →
  51. 3.4.7 04 Sep 2015
    Release notes
    • #253: Handle isInTimeRange for recurring events that have 0 valid instances. (@DominikTo, @migrax).
    Open source →
  52. 3.4.6 06 Aug 2015
    Release notes
    • #250: Recurring all-day events are incorrectly included in time range requests when not using UTC in the time range. (@armin-hackmann)
    Open source →
  53. 3.4.5 02 Jun 2015
    Release notes
    • #229: Converting vcards from 3.0 to 4.0 that contained a LANG property would throw an error.
    Open source →
  54. 3.4.4 27 May 2015
    Release notes
    • #228: Fixed a 'party crasher' bug in the iTip broker. This would break scheduling in some cases.
    Open source →
  55. 3.4.3 19 May 2015
    Release notes
    • #219: Corrected validation of EXDATE properties with more than one value.
    • #212: BYSETPOS with values below -1 was broken and could cause infinite loops.
    • #211: Fix BYDAY=-5TH in recurrence iterator. (@lindquist)
    • #216: ENCODING parameter is now validated for all document types.
    • #217: Initializing vCard DATE objects with a PHP DateTime object will now work correctly. (@thomascube)
    Open source →
  56. 3.4.2 25 Feb 2015
    Release notes
    • #210: iTip: Replying to an event without a master event was broken.
    Open source →
  57. 3.4.1 24 Feb 2015
    Release notes
    • A minor change to ensure that unittests work correctly in the sabre/dav test-suite.
    Open source →
  58. 3.4.0 23 Feb 2015
    Release notes
    • #196: Made parsing recurrence rules a lot faster on big calendars.
    • Updated windows timezone mappings to latest unicode version.
    • #202: Support for parsing and validating VAVAILABILITY components. (@Hywan)
    • #195: PHP 5.3 compatibility in 'generatevcards' script. (@rickdenhaan)
    • #205: Improving handling of multiple EXDATE when processing iTip changes. (@armin-hackmann)
    • #187: Fixed validator rules for LAST-MODIFIED properties.
    • #188: Retain floating times when generating instances using Recur\EventIterator.
    • #203: Skip tests for timezones that are not supported on older PHP versions, instead of a hard fail.
    • #204: Dealing a bit better with vCard date-time values that contained milliseconds. (which is normally invalid). (@armin-hackmann)
    Open source →
  59. 3.3.5 10 Jan 2015
    Release notes
    • #168: Expanding calendars now removes objects with recurrence rules that don't have a valid recurrence instance.
    • #177: SCHEDULE-STATUS should not contain a reason phrase, only a status code.
    • #175: Parser can now read and skip the UTF-8 BOM.
    • #179: Added isFloating to DATE-TIME properties.
    • #179: Fixed jCal serialization of floating DATE-TIME properties.
    • #173: vCard converter failed for X-ABDATE properties that had no X-ABLABEL.
    • #180: Added PROFILE_CALDAV and PROFILE_CARDDAV to enable validation rules specific for CalDAV/CardDAV servers.
    • #176: A missing UID is no longer an error, but a warning for the vCard validator, unless PROFILE_CARDDAV is specified.
    Open source →
  60. 3.3.4 19 Nov 2014
    Release notes
    • #154: Converting ANNIVERSARY to X-ANNIVERSARY and X-ABDATE and vice-versa when converting to/from vCard 4.
    • #154: It's now possible to easily select all vCard properties belonging to a single group with $vcard->{'ITEM1.'} syntax. (@armin-hackmann)
    • #156: Simpler way to check if a string is UTF-8. (@Hywan)
    • Unittest improvements.
    • #159: The recurrence iterator, freebusy generator and iCalendar DATE and DATE-TIME properties can now all accept a reference timezone when working floating times or all-day events.
    • #159: Master events will no longer get a RECURRENCE-ID when expanding.
    • #159: RECURRENCE-ID for all-day events will now be correct when expanding.
    • #163: Added a getTimeZone() method to VTIMEZONE components.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive