- More streamlined HTML skeleton and more flexbox-based CSS (as opposed to table-based)
- No longer a need to call
.updateSize()
after the page's dimensions have been programmatically changed. All sizing/positioning of events and views will stay updated automatically. Related to the "resizing" bugfixes below. - Improve Bootstrap 5 theme color mode, use of semantic color vars (#7465)
eventSlicing
setting, which controls whether DayGrid can can put fragments of multi-day events with +more links. Defaults totrue
to preserve v6 compatibility.- In Resource Timeline view,
resourceAreaHeaderContent
above columns now stays fixed during horizontal scrolling (#7779) - If
resourceAreaWidth
orresourceAreaColumns.width
specified as percentage, will persist as percentage after user-resize
- Fixed unnecessary event rendering and calling of
eventContent
when unrelated events change (#3003, #7650) - DayGrid/TimeGrid rendering performance gain (#7677)
- MultiMonth performance gain, solving "Forced reflow while executing JavaScript took <#> ms" violation (#7209)
- Less layout thrashing (#4906)
- Less flickering during event rerendering for React connector (#7488)
- Better table semantics for screen readers (#6641, #7656, #7455)
- Non-editable events should not be rendered as anchor tags (#7675)
- List-view weekday navLinks should not have aria-hidden (#7645)
- List-view accessibility markup less table-like, more list-like. Removed table pseudo-headers and thus removed the
eventHint
andtimeHint
locale settings. - TimeGrid accessibility markup more table-like, puts timed events in single "row" labelled by
timedText
setting - Add aria-current="date" for "today" highlight (#7502)
- Use aria-label instead of title attribute (#7584)
- Aria improvement for view-switcher within toolbar (#7809, #6522)
- Customizable heading hierarchy level via
headingLevel
(#6972) - Improve MultiMonth title hierarchy via role=list (#7537)
- Improve +more link popover-like aria attributes (#7567)
- Improve navLink aria attributes, give role=link (#7567)
- Give role=button to clickable event elements w/o urls (#7567)
- Tabbable popover close button (#7157)
- Navigate popover items with keyboard (#6624)
- Disabled day cells have broken ARIA references (#7379)
- Move aria-label/labelledby away from invalid elements to cells (#7566)
- Invalid
role
attributes on td/th/tr elements inside a table element (#7568) - Event time order different than DOM order, bad for tabbing (#6943)
- Certain date/time text should be text-selectable (#5628)
All calendar views now pass Axe accessibility testing with the exception of a false-positive scrollbar error (TODO: create demo of workaround)
- DayGrid
- Event titles should not repeat each day (#6657)
- TimeGrid
- Timeline
- Resource-Timeline
- Resource rows no longer break across pages
- Resource-area columns shrink-to-fit based on percentage, saving more space for timeline
- Responsiveness
- Resizing
- Layout does not resize to new container width after browser resizing (#6407)
- Resource rows don't adjust height to fit resourceLaneContent (#6103)
- Resource rows don't render with correct height (#6082)
- Dynamic calendar width doesn't adjust (#5507)
- Adjust calendar sizing when scrollbar width changes (or (de)activated) (#5561)
- Day number in day cells are hidden by vertical scrollbar (#6798)
- Scrollbars
- List View sticky headers lack bottom border (#7778)
- Vertical Resource views with no resources shows blank resource row (#7377)
- DayGrid view
- Better dayGrid height row height, height:auto, and +more link behavior (#6033)
- Day cells are not always equal height with calendar height set to auto (#5762)
- Events not rendered when container is resized (#7555)
- Events overflow below day cell with dayMaxEvents:true and showNonCurrentDates:false (#6749)
- Events times are cutoff with eventDisplay: "block" when there is not enough space for the title (#6457)
- Compressed space between events in dayGrid when month-start title (#7184)
- Resource-Timeline scrolls down when it shouldn't, attempting to preserve scroll state (#4443)
- The
moreLinkClick
date is always UTC, not adjusted by timezone plugins (#7314) - TimeGrid "all-day" text is better aligned, better split across multiple lines
v7 is designed to be backwards-compatible with v6, but with the following minor exceptions:
- API changes
windowResize
event no longer fireswindowResizeDelay
setting removedhandleWindowResize
callback removed- The
moreLinkClick
date will be adjusted to a timezone plugin's offset, no longer unconditionally UTC - Removed Angular 12 support
- Users of
@fullcalendar/icalendar
must upgrade theirical.js
peerDependency to v2 (#7734) - Users of
@fullcalendar/bootstrap5
must upgradebootstrap
to 5.2.x or newer and explicitly list it as as peerDependency
- Visual-only changes
- For all table headers, no longer bold styling by default. To restore, use the following CSS:
.fc-header-cell { font-weight: bold }
- Newlines in
allDayText
will be displayed as line breaks in TimeGrid - Disabled days (via
validRange
) now display text in TimeGrid and DayGrid header cells. Still no content within body cells. - The
multiMonthMinWidth
pixel value now includes the padding within each month tile - For headerToolbar/footerToolbar for RTL calendars, elements within toolbar sections specified as
left
andright
now span right-to-left - Bootstrap theme default line-height less chunky
- TimeGrid overlapping events that previously spanned full column width now have a right margin. This was an accidental regression from v5 -> v6, and the v5 behavior is restored (#6569)
- The
weekNumbers:true
setting no longer displays week numbers in certain cases:resourceTimeGridDay
view, because x-axis header cell alongside resource names is reserved for a future labeldayGridDay
view,dayGridWeek
view, or any dayGrid-based view with only one row
- For all table headers, no longer bold styling by default. To restore, use the following CSS:
- Markup-related changes
- See
MIGRATION-CUSTOM-CSS.md
for how to upgrade your custom CSS
- See
- FullCalendar-internal exports
DayTable
from'@fullcalendar/daygrid/internal'
removedDayTableView
from'@fullcalendar/daygrid/internal'
renamed toDayGridView
DayTimeCols
from'@fullcalendar/timegrid/internal'
removedDayTimeColsView
from'@fullcalendar/timegrid/internal'
renamed toTimeGridView
Unfortunately we didn't have time to do these but will implement them in a follow-up minor release:
- Improve resource timeline performance with virtual rendering (#5673)
- Resource open/close animation (#4844)
While the STANDARD FullCalendar packages have been, and always will be, licensed under the permissive MIT license, the PREMIUM packages have more complex licensing:
Application Type | Company Type | v6 Premium License |
---|---|---|
Closed-source | For-profit | Custom commercial license |
Closed-source | Not-for-profit | Creative Commons non-commercial license |
Open-source | For-profit | GPLv3 copyleft license |
Open-source | Not-for-profit | GPLv3 copyleft license |
In v7, AGPLv3 is replacing GPLv3 as the copyleft license used for open-source projects. If your project's frontend and backend are open-source and AGPLv3-compliant, use the following license key:
schedulerLicenseKey: 'AGPL-My-Frontend-And-Backend-Are-Open-Source'
We've discovered a few instances of for-profit companies using FullCalendar Premium in closed-source projects, claiming to be GPLv3-compliant via the SaaS loophole. By switching to AGPLv3, we are closing this loophole and forcing such companies to either purchase a commercial license or stay on v6.
If you are the author of a GPL'd SaaS project that uses FullCalendar Premium and are concerned that you cannot upgrade to v7 due to the license change, please consider the benefits of switching to AGPLv3 yourself.