Views
A view is a task list you define yourself. You write a rule for what counts, and matching tasks show up in the view automatically.
Don't want to write the rule yourself?
Send this AI-readable spec to any assistant (ChatGPT, Claude, Gemini, …), describe in plain language what you want to see, and it will write the rule for you — paste the result straight into the Rule field:
Use views to keep lists the built-in ones don't cover, for example:
- Everything tagged
workthat's already overdue - Tasks in the inbox that have no tag and no date
- Anything in your Reading area you've been ignoring
Where to find it
Views live in the desktop sidebar, in a section called Views. Click the + next to the section heading to add one.
Creating a view
- In the sidebar's Views section, click +.
- Type a name in the page header.
- Open the detail panel on the right and write a rule in the Rule field.
- As soon as the rule is valid, matching tasks appear in the list.
If you leave the rule empty, the main area shows a list of starter rules — click any of them to fill the rule in. You don't need to write anything from scratch to get started.
You can drag views in the sidebar to reorder them. To delete a view, use the ⋯ menu in its detail panel.
Writing rules
A rule describes "what kind of task belongs in this view". Each task is referred to as item, and you write a condition about it.
For example:
item.status === 'created' && item.tags.includes('work')means the task is unfinished and has the work tag.
Fields you can use
| Field | What it means |
|---|---|
item.title | The task's title |
item.notes | The notes / description |
item.status | Status: 'created' unfinished / 'completed' done / 'canceled' cancelled |
item.tags | The list of tags on the task |
item.startDate | Start date (null if not set) |
item.dueDate | Due date (null if not set) |
item.completionAt | When the task was completed (null if not completed) |
item.createdAt | When the task was created |
item.parent | Where it lives: 'inbox' / 'project' / 'area' / 'heading' / 'task' (sub-task) |
item.projectTitle | Name of the enclosing project |
item.areaTitle | Name of the enclosing area |
Keywords you can use
When writing date-based rules, these built-in keywords come in handy:
| Keyword | Meaning |
|---|---|
TODAY | Today |
DAY | The length of one day — use it to write things like "7 days from now" |
SOMEDAY | "Someday" — a task you've parked for "some day later" |
What you can write
| Syntax | What it does |
|---|---|
===, !== | Equal to / not equal to |
>, >=, <, <= | Compare numbers and dates |
&&, ||, ! | And / or / not |
item.tags.includes('x') | The tags list contains x |
item.title.includes('x') | The title contains x |
item.tags.length | How many tags the task has |
... === null | Check whether a date field is unset |
If you'd rather not write a rule from scratch, the starter list in the rule docs panel will fill one in for you — tweak from there.
Starter rules at a glance
| What you want | Rule |
|---|---|
| Not yet done | item.status === 'created' |
| Completed | item.status === 'completed' |
| In the inbox | item.parent === 'inbox' |
| Available now (Anytime) | item.status === 'created' && (item.startDate === null || item.startDate <= TODAY) |
| Parked for Someday | item.startDate === SOMEDAY |
| Overdue | item.dueDate !== null && item.dueDate < TODAY |
| Due in the next 7 days | item.dueDate !== null && item.dueDate < TODAY + 7 * DAY |
Tagged work | item.tags.includes('work') |
| Inside a project | item.parent === 'project' |
A few practical examples
Work tasks due within 3 days
item.tags.includes('work') &&
item.status === 'created' &&
item.dueDate !== null &&
item.dueDate < TODAY + 3 * DAYInbox items with no tag and no date — likely needs triage
item.parent === 'inbox' && item.tags.length === 0 && item.startDate === nullEverything in the Reading area
item.areaTitle === 'Reading'Completed in the last 30 days
item.status === 'completed' &&
item.completionAt !== null &&
item.completionAt > TODAY - 30 * DAYThe list "freezes" while you're inside the view
A view's task list is locked the moment you open it, and is only re-matched when you re-open the view or change the rule.
So if you complete a task or change its date while you're in the view — and that makes it no longer match the rule — the task still stays in the list until you leave and come back.
This is intentional: the task you just acted on doesn't vanish out from under you, and the list feels steadier to work in.
When the rule has an error
If your rule has a problem (mismatched brackets, a typo, an unknown field, etc.), the detail panel shows a message under the Rule field telling you what's wrong. The main area falls back to the starter docs until you fix it.
Where views are stored
Views live in the same encrypted database as your tasks. On Pro and Lifetime, views sync between devices along with everything else. On the free (local-only) tier, a view stays on the device where you created it.
Opening a newer view on an older app
Views are versioned. If a view was created with a newer version of the app, an older version will refuse to open or edit it and prompt you to update — this prevents new fields or syntax from being silently dropped.