Skip to content

Limitations

Daylight makes deliberate tradeoffs to stay focused on local-first productivity. This page documents what Daylight doesn’t do—and why these are features, not bugs.

  • Start/stop timer functionality
  • Automatic time tracking
  • Pomodoro-style sessions
  1. Timers assume uninterrupted work. Real work gets interrupted. A timer that needs babysitting adds friction, not clarity.
  2. Manual entry captures reality. You know better than a timer how long you actually worked on something, especially after context switches.
  3. Simplicity over features. Timer state would need to persist across app restarts, handle edge cases, and sync between devices. That complexity isn’t worth it.

Use manual time entries. Daylight rounds to 15-minute increments by default, making estimates quick to enter. Log time at the end of a work session when you know how long it actually took.


  • Creating calendar events from Daylight
  • Editing existing events
  • RSVP functionality
  • Two-way sync with calendars
  1. Your calendars already work. Google Calendar, Outlook, and Apple Calendar are mature products. Daylight showing your schedule provides context without duplicating functionality.
  2. Write access is complex. OAuth flows, token refresh, API rate limits, and provider-specific quirks add significant maintenance burden.
  3. Conflict avoidance. Two-way sync between tasks and calendar events creates ambiguity about which is the source of truth.

Create events in your native calendar app. Use Daylight’s calendar overlay to see your schedule while planning tasks.


  • Shared task lists
  • Collaborative editing
  • Team features
  • Assigning tasks to others
  1. Single-user by design. Daylight is a personal productivity tool, not a team workspace. Personal tools can be simpler and faster.
  2. No server, no real-time. Real-time collaboration requires a server to coordinate changes. Daylight has no server.
  3. Conflict complexity. Multi-user editing of the same task would require operational transforms or CRDTs—massive complexity for a personal tool.

For household or small team coordination, use a shared Syncthing folder with clear conventions (e.g., prefix tasks with initials, use separate project tags). Accept that sync conflicts may occur if two people edit simultaneously.


  • Built-in cloud storage
  • Account/login system
  • Managed cross-device sync
  1. Data ownership matters. Your tasks are your data. They shouldn’t live on someone else’s server.
  2. No vendor lock-in. If Daylight disappeared tomorrow, your tasks are still plain Markdown files.
  3. Privacy by architecture. There’s no server that could be breached because there’s no server at all.

Use Syncthing for peer-to-peer sync (recommended), or any file sync service: Dropbox, Google Drive, iCloud, OneDrive, Nextcloud, etc.

See Sync & Conflicts for setup guidance.


  • Home screen widgets
  • Quick-add from notification shade
  • Glanceable task counts
  1. Platform complexity. iOS and Android have completely different widget systems. Supporting both well would double the mobile development effort.
  2. Core app first. The main app experience is the priority. Widgets would divert focus.
  3. Battery tradeoffs. Widgets that stay updated require background processes, affecting battery life.

Pin Daylight to your home screen for quick access. On Android, you can create a direct shortcut to add tasks.


  • “Tomorrow at 3pm” parsing
  • “Every weekday” interpretation
  • “Next Friday” understanding
  1. Ambiguity is real. Does “next Friday” mean this coming Friday or the Friday after? It depends on context, and getting it wrong is worse than being explicit.
  2. Internationalization. Natural language date parsing varies by locale, language, and culture.
  3. Explicit is clearer. Typing a date takes a few extra seconds but removes all ambiguity.

Use the date picker (fast and unambiguous) or type ISO dates directly (2026-01-31). For recurring tasks, use the recurrence editor which shows exactly what you’re setting up.


AspectPractical limitWhy
Task count~10,000 tasksAll tasks load into memory at startup
File size~1MB per taskLarge files slow parsing and sync
Time entries~1,000 per taskArray operations in YAML
  1. File-per-task architecture. Each task is a separate file. Filesystems handle thousands of files well, but not millions.
  2. In-memory loading. For snappy UI, all tasks are loaded on startup. This trades memory for speed.
  3. No pagination. The current UI loads everything. Pagination would add complexity.
  • Archive completed tasks regularly (move to a separate folder)
  • Use projects to segment large workloads
  • For truly large scale, consider a database-backed tool

  • File attachments on tasks
  • Image embedding
  • Document uploads
  1. Sync size. Attachments would bloat sync, especially on mobile with limited storage and bandwidth.
  2. Scope creep. Attachment handling (preview, search, versioning) is a large feature surface.
  3. File system works. Your files already exist on disk. Duplicating them inside tasks adds complexity without value.

Add file paths or URLs in your task notes:

---
title: Review contract
status: active
---
See: ~/Documents/contracts/2026-renewal.pdf
Or: https://drive.google.com/...

FeatureStatusWhyAlternative
TimersNot plannedComplexity, interruption realityManual time entries
Calendar writeNot plannedAPI complexity, conflict riskNative calendar apps
CollaborationNot plannedSingle-user tool, no serverShared Syncthing folders
Cloud syncNot plannedPrivacy, data ownershipSyncthing, Dropbox, etc.
WidgetsConsideringPlatform complexityApp shortcuts
NLP datesConsideringAmbiguity, i18nDate picker
ScaleInherent limitArchitecture tradeoffArchive regularly
AttachmentsNot plannedSync bloat, scopeExternal file links

These constraints aren’t apologies—they’re choices. Every feature has a cost, and saying no to some things lets Daylight be great at what it does: personal task management that respects your data.