📅
✦ Latest: v2.0.2

UltraCalendar

A Material 3 Android calendar that syncs with Google, tracks your routines, and puts everything on your home screen — exactly how you want it.

📱 Android
🎨 Material 3
🌙 AMOLED
🌤 Weather
🌍 12 Languages
⭐ Free with Premium

Features

Everything your day needs.

📅
Google Calendar Sync
Full two-way sync with Google Calendar including recurring events, incremental updates, and multi-account support.
Google Tasks
Tasks sync and complete directly to Google Tasks in real time. Multi-account isolated, never mixed up.
🎂
Birthday Sync
Contact birthdays appear automatically with age labels and customizable reminder times.
🔄
Routines & Streaks
Daily, weekly, or custom habits with streak tracking, completion animations, and a premium GitHub-style heatmap.
⭐ Heatmap is Premium
🌤
Weather Overlay
Hourly forecasts from Open-Meteo with GPS location, overlaid directly on your calendar view.
📱
8 Widget Styles
Dynamic, Simple, Month, DualMonth, Flip, UpcomingDays, Routine Banner, and Routine Square — all resizable.
🎨
Material 3 Dynamic Theming
Colors adapt to your wallpaper automatically. Custom color picker with full wheel and hex input for premium users.
⭐ Custom Colors: Premium
🌙
AMOLED Mode
True pure-black mode for OLED screens. Free for all users. Light, Dark, and AMOLED — your choice.
🔍
Universal Search
Find events, tasks, routines, and birthdays across your entire calendar from any screen.
🔔
Smart Notifications
Up to 5 reminders per item. Custom time-of-day for all-day events. Snooze, "Mark as done" from notification.
☁️
CalDAV Support
Sync with any CalDAV server including DAVx5 and local calendars. Full recurring event support.
✈️
Reservation Cards
Flights, hotels, and dining pulled from Google Calendar render as rich cards with a direct Gmail link.

Privacy

Data stays local.

Accesses Google Calendar, Tasks, and Contact birthdays to display in-app and on widgets. All data stored locally — no external transmission.

No user data used for advertising or analytics.

Read the Privacy Policy for details.

Changelog

What's new.

v2.0.2
May 26, 2026
  • Fixed holidays appearing on wrong/adjacent days — duplicate logic overhauled in RepeatHelper
  • Widgets now correctly follow the system dark/light theme automatically
  • Comprehensive widget scaling pass across all 8 widget types — better proportions on all screen sizes
  • Widget grid cells now respect available vertical space — no more overflow on compact layouts
v2.0
May 14, 2026
  • Gemini AI assistant — full voice & text overlay; speak naturally to create events, tasks, birthdays, or routines hands-free
  • Smart query support — ask "when is my dentist appointment?" and Gemini responds inline
  • Animated frosted-glass overlay with radial gradient, confirmation card, back-gesture safety, and first-launch onboarding
  • Per-routine journal with a Google Keep–style inline block editor — title + seamless body with headers, subheaders, checklists, and data grids all in one flowing document
  • Rich text formatting — Bold / Italic / Underline / Strikethrough toggles active while typing; font size (S/M/L/XL) and font family picker
  • Gemini journal organizer — Organize FAB reformats journal content into structured blocks; Gemini FAB on routines list creates routines from plain language
  • Search button on Routines screen — circular reveal + blur animation matching Agenda and MonthList; "Routine" type filter in search overlay
  • Seamless month header blend — header bar uses primaryContainer so scrolling month banners integrate with the top bar
  • Lint correctness pass — Compose state APIs, API level gating, permission guards, and intent filters corrected
v1.7.2.9
May 12, 2026
  • Recipe pill labels always display in full — "Expressive" no longer truncated on narrow screens or large font scales
  • Auto-size text in scheme selector pill — font shrinks to fit without clipping or word-wrap at any screen size or accessibility scale
  • Fixed first-frame label bleed where text could briefly overflow segment bounds before layout settled
v1.7.2.7
May 11, 2026
  • Event/Task/Birthday/Routine editors fully redesigned — editable title header, floating account picker, underlined date/time rows, and bottom sheet pickers
  • Tapping a date in split or month view now pre-fills that date in all creation screens
  • Fixed missing imports causing compile errors in Birthday and Task editor screens
v1.7.2.6
May 7, 2026
  • CalDAV all-day events now save correctly — previously failed silently; now falls back to Room on provider rejection
  • Toggling a timed event to all-day no longer leaves a stale timezone, preventing events from syncing a day early
  • Recurring all-day events now use the correct RFC 5545 duration format (PXD), fixing rejection by strict CalDAV servers
v1.7.2.5
May 7, 2026
  • Birthday off-by-one fix — birthday events no longer leak into the previous day
  • Events, tasks, and birthdays deleted on Google are now properly removed locally during sync
  • Birthday events no longer duplicate across adjacent days
  • Streamlined birthday sync reliability — eliminated unreliable calendar list lookups
v1.7.2.4
May 6, 2026
  • Birthday sync now fetches correctly using singleEvents=true with a 2-year time window
  • Birthday deduplication uses stable recurringEventId instead of per-instance event IDs
  • Birthday age labels no longer show incorrect "born in 2026" for current-year instances
v1.7.2.3
May 6, 2026
  • Google's Birthdays calendar is now discoverable (was hidden by default)
  • Hidden and shared calendars now sync correctly
  • Empty calendar list fallback to primary calendar instead of syncing nothing
  • Recurring task BYDAY patterns now expand to the correct weekdays
  • Fixed all-day event duplicates caused by UTC timezone mismatch
v1.7.2.2
May 4, 2026
  • Calendar widget no longer cuts off the last days of months that span 6 rows — May 31st and similar dates now always display on compact widgets
  • Task checkboxes added to Month view day sheet and Day detail screen — mark tasks complete from any view
  • Checking a task now cancels all pending reminders for it across all views — no more phantom alarms after completion
  • Completed recurring tasks stop rescheduling future alarms
v1.7.2.1
May 4, 2026
  • Recurring events now fire reminders on every occurrence — previously only the first occurrence ever notified
  • Recurring tasks now fire reminders on every occurrence too — parity with events
  • All-day events stay on the correct day — fixed the spillover bug where events showed on adjacent days after refresh
  • All-day events stop "stretching" when edited — re-saving no longer adds a phantom extra day each time
  • New time-of-day picker for all-day reminders — pick exact HH:mm, up to 5 reminders, defaults to 06:00 local
  • Birthdays use the same all-day time picker, defaulting to 06:00 local
  • Legacy all-day events auto-get a 06:00 default reminder so saving doesn't silently wipe alarms
  • CalDAV recurring events now save — Save button was silently doing nothing when repeats was enabled
  • CalDAV events stored as "starts at X, lasts this long" now appear correctly in all views
  • CalDAV recurring events keep their real length — no longer silently clamped to 60 minutes
v1.7.2
May 1, 2026
  • "Mark as done" button on task & routine reminder notifications — tap once to complete without opening the app
  • Per-widget color customization — pick distinct colors for each widget with live previews
  • Reservation cards — flight, hotel, and dining events from Google Calendar render with rich details
  • "Open Gmail" button on reservation cards — jumps directly into Gmail to the original confirmation email
  • FROM_GMAIL fallback card for reservations without full structured data
  • Paywall redesigned as a bottom sheet listing premium features at a glance
  • Bolder month banners and auto-collapse of expanded events when scrolling agenda
  • Smooth FAB color crossfade and removed circular ripple on event cards
  • Long-press haptic when entering bulk-delete mode
  • Reset button on App Colors screen — one tap returns to system dynamic-color defaults
  • Widgets now respect app's dark/light theme preference instead of always following system
  • Calendar widget renders only rows the current month actually needs
  • Fixed widgets not refreshing immediately after an app upgrade
  • Fixed end-of-animation pixel shift on month-view cards
  • Fixed widget colors silently falling back when ARGB values stored as negative Longs
  • CalDAV upserts now scope per account, preventing cross-account collisions
v1.7.1.1
Apr 29, 2026
  • Multiple reminders per item — events, tasks, birthdays, and routines now support up to 5 reminders each
  • Fixed duplicate recurring events — modified instances no longer show alongside their original time slot
  • Fixed "deleted events come back" — locally deleted events no longer overwritten by incoming sync data
  • Fixed shared calendars across multiple Google accounts — lookups now scoped per account
  • First-time Google sync now pulls from -20 years to +10 years (previously ±1 year)
  • Database-level uniqueness on synced tasks and birthdays — prevents rare duplicate-row from mid-write crash
  • Display-layer dedup across events, tasks, and birthdays — backstop for cross-source collisions
  • Google Tasks sync now dedupes within a batch
  • Pull-merge ordering fixed — inserts/updates run before deletes, eliminating brief "row gone" flashes
  • Fixed widget colors not applying — picking a color now updates widgets immediately on the first try
  • Fixed widget color picker rejecting opaque colors due to sign-extension bug
  • Debounced widget color/transparency changes — rapid adjustments coalesce into a single refresh
v1.7.1
Apr 29, 2026
  • Added universal search — find events, tasks, habits, and birthdays from any screen
  • New "Upcoming" home screen widget — 3-day agenda strip with expandable events/habits view
  • Bulk delete — long-press to multi-select; FAB turns red trash with count badge and confirmation dialog
  • Polished FAB animation — shrink-morph plus button, bouncy spring, tap-outside-to-close
  • Main header now left-justifies and auto-shrinks on small/large-DPI screens
  • Calendar widget events list shows ALL events (no more 5-item cap), sorts chronologically
  • Widget bug sweep — fixed alphabetic time sorting, multi-day all-day events, chronological routines
  • Fixed CalDAV recurring event delete dialog hiding the "this event only" option
  • Fixed CalDAV soft-delete tombstones piling up in local database
  • Fixed navigation flash when returning to main calendar from drawer screens
v1.7
Apr 28, 2026
  • Added CalDAV / DAVx5 / local calendar sync
  • Fixed animation bugs
  • Fixed widget bugs
  • Added option to select default screen on open
v1.6.2.4
Apr 17, 2026
  • Fixed Google API Authentication resetting OAuth Token
  • Native ad cards added to Agenda view
  • Fixed cut-out corner bug on list item cards across Agenda, Month List, and main calendar
  • Added "Open in Maps" button to events in Agenda view
  • Replaced back buttons with hamburger menu on drawer-accessible screens
  • Agenda top bar now updates month/year while scrolling
  • Tapping a routine in Agenda now opens the proper routine panel
  • Double underline indicator on main calendar dates that have items
  • Filter checklist added to main screen (Events/Tasks/Birthdays/Routines)
  • Horizontal slide transitions between drawer screens
  • Fixed month title centering in main header
  • Shared view models across drawer screens — no more empty-state flash on navigation
  • Widgets now refresh colors instantly on theme, dynamic color, and dark/light mode changes
  • Expanded widget resize ranges
v1.6.2
Apr 14, 2026
  • AdMob bug fixes
v1.6.1
Apr 13, 2026
  • Bug fixes
v1.6
Apr 10, 2026
  • New: Routines — build daily, weekly, or custom habits with streak tracking and completion animations
  • Routines appear on the main calendar alongside events, tasks, and birthdays
  • Two new home screen widgets: Routine Banner and Routine Square
  • Premium: GitHub-style heatmap for routine history and unlimited routines (free: up to 5)
  • Weather integration — daily forecast from Open-Meteo with GPS location
  • Category filter moved from main screen to Month List header
  • Defensive DataStore reads/writes to survive corrupted preferences
  • 100+ bug fixes and performance improvements
v1.5.6
Apr 9, 2026
  • Fixed vibration options not setting properly
  • Fixed banner widget displaying events from wrong dates
  • Updated event creation screen: end date auto-matches start date, end time auto-sets to +1 hour
  • Fixed localization strings not being pulled correctly (30+ hardcoded strings moved to translations)
  • Fixed task date sync from Google API to convert UTC to local timezone
  • Added "Open in Maps" option for events with a location
  • Added configurable first day of week (Sunday, Monday, Saturday)
  • Added scrollable list to banner widget
v1.5.5
Apr 8, 2026
  • Fixed recurring events (weekly, monthly, yearly) not showing across months
  • Full RRULE support: intervals, count limits, BYDAY, BYMONTHDAY
  • Delete single occurrence or entire recurring series
  • Two-way recurring event sync with Google Calendar
  • Incremental sync with per-calendar sync tokens (faster syncs)
  • Fixed all-day event date handling at timezone boundaries
  • Task completion now syncs to Google Tasks
  • Multi-account task isolation
  • Safe database migrations (no more data loss on update)
  • Premium: custom color picker with full color wheel and hex input
  • Seed mode (one color generates full palette) or Manual mode (pick each color individually)
  • 20 bug fixes across sync, events, tasks, and birthdays
v1.5.4
Apr 8, 2026
  • Firebase Cloud Messaging for push notifications
  • Firebase Analytics integration
v1.5.3
Apr 8, 2026
  • Dual-month side-by-side widget
  • Dutch language support (12th language)
  • Banner ad preloading for instant display
v1.5.2
Apr 7, 2026
  • Localized to 10 languages (Spanish, Portuguese, Hindi, Arabic, German, French, Japanese, Korean, Turkish, Indonesian)
  • GDPR/EU ad consent with UMP SDK
  • About screen with privacy and data usage info
v1.5.1
Apr 7, 2026
  • Free AMOLED pure-black mode for app and all widgets
  • Widget transparency slider (premium)
v1.5
Apr 7, 2026
  • Native ad cards in day views, Material 3 styled and dismissible
  • Premium removes all ads
v1.4
Mar 24, 2026
  • 4 widget styles: Dynamic, Simple, Month, and Flip
  • Widget picker previews
  • Widget date taps open main calendar
  • Battery optimization with adaptive sync
v1.3
Mar 21, 2026
  • Google Play Integrity API
  • Advertising ID permission for AdMob
v1.2
Mar 21, 2026
  • In-app premium purchase ($0.99) for custom colors and notifications
  • AdMob ad integration
v1.1
Mar 21, 2026
  • Initial release
  • Google Calendar, Tasks, and Contacts birthday sync
  • Material 3 dynamic theming
  • Interactive home screen widget
  • Month collapse/expand gestures
  • Customizable notifications with snooze

Contact & Legal