Why the Canvas To Do list shows only seven items

The To Do list beside your Canvas Dashboard shows at most seven items. It asks Canvas's planner for your unfinished items starting two weeks before today, oldest first, and shows the first seven that are not done. So unfinished work from the past two weeks takes the top places, and work due later waits below the cut. Calendar events and your own planner notes count among the seven. Show All, on the Dashboard only, opens List View, which has everything. The X beside an item submits nothing: it marks the item done in your planner, the same as its checkbox in List View, and the item stays off the list until you uncheck it there.

What you see

The To Do list on the right of your Dashboard holds a few items, some of them already past, and the essay due Friday is not there. Or you clicked the X to clear an item you meant to come back to, and it never came back. Or the list on a course's home page has no Show All link. Or the Coming Up list you remember is gone.

Why it happens

Seven shown, counted from two weeks back. When the Dashboard loads, the To Do list asks Canvas's planner for the first 14 unfinished items, starting at the beginning of the day two weeks ago and sorted oldest first. It shows the first seven that are not done. Check one off and the next moves up. The request has no end date, so the limit is not a number of days ahead. It is the count. Instructure's student guide says past items stay on the list for four weeks; the code we read starts the list two weeks back.

Old unfinished work comes first. Because the list starts two weeks back and goes in date order, anything from the past two weeks that Canvas does not count as done comes before anything due later. Seven of those, and nothing due this week makes the list. Canvas counts an assignment as done once you submit it, or once you check it off yourself.

Events and notes count too. The list draws on everything in your planner: assignments, quizzes and discussions, pages an instructor gave a to-do date, events on your Canvas calendar, peer reviews, and notes you added yourself. An event, or an assignment you turn in on paper, has nothing to submit in Canvas, so it stays until you check it off. Instructure's guide says no-submission assignments "can only be removed from the list manually."

The X marks the item done. The X beside each item, which screen readers announce as "Dismiss" and the item's name, runs the same step as the checkbox in List View. It saves a mark in your planner that the item is complete. It does not submit anything. Canvas then leaves the item out of every request for unfinished planner items, so it stays off the To Do list until you uncheck it in List View.

The X can also meet a module requirement. If the item is in a module that requires you to mark it as done, and in only one such module, the X marks that requirement done too. Unchecking the item in List View takes the requirement back.

Show All is on the Dashboard only. Show All switches the Dashboard to List View, which lists everything in your planner by day. A course's home page shows the same To Do list for that course, without the Show All link.

Students get no Coming Up list. If you are only a student in Canvas, the Dashboard shows the To Do list and no Coming Up list. A course home page shows Coming Up only to people who are not students in that course.

What you can check

This is one reason Margin does not treat an item leaving a feed as evidence it was done — absence is not completion, and closing a task requires a positive per-user signal.

What an instructor or admin can do

Evidence

canvas-lms, ui/shared/planner/actions/sidebar-actions.js:81 (master at 1c9f0bb, retrieved 2026-11-11): the To Do list starts two weeks before the start of today (ui/shared/planner/components/ToDoSidebar/index.tsx:76-84):

const firstMomentDate = currentMoment.clone().subtract(2, 'weeks')

sidebar-actions.js:86-91, the request it sends to /api/v1/planner/items (:102):

const params = {
  start_date: firstMomentDate.toISOString(),
  order: 'asc',
  filter: 'incomplete_items',
  per_page: 14,
}

With no end date, the planner looks ten years ahead (app/controllers/planner_controller.rb:445):

@end_date = formatted_planner_date("end_date", @end_date, 10.years.from_now.beginning_of_day)

ui/shared/planner/components/ToDoSidebar/index.tsx:118, what it shows:

return items.filter(incompletedFilter).slice(0, 7)

The unfinished items come from planner_items (app/controllers/planner_controller.rb:227-238): assignments, ungraded quizzes, planner notes, pages, ungraded discussions, calendar events (:388-398), peer reviews and discussion checkpoints. An item is left out once it is marked complete in the planner or, for an assignment, once it has a submitted time (lib/plannable.rb:45-77).

The X is a close button labeled "Dismiss %{itemTitle}" for screen readers (ui/shared/planner/components/ToDoSidebar/ToDoItem.tsx:227). Clicking it calls sidebarCompleteItem (ToDoSidebar/index.tsx:122-130), which is the planner's completion toggle (ui/shared/planner/actions/index.js:308-310):

export const sidebarCompleteItem = item => {
  return togglePlannerItemCompletion(item)
}

That toggle saves a planner override with marked_complete set (ui/shared/planner/actions/index.js:276-306, posting to /api/v1/planner/overrides at :260-274), and List View's checkbox uses the same toggle (ui/shared/planner/components/PlannerApp/index.tsx:369). Saving it also runs sync_module_requirement_done (app/controllers/planner_overrides_controller.rb:128, 164), lib/planner_api_helper.rb:54-61:

def sync_module_requirement_done(item, user, complete)
  return unless item.is_a?(ContextModuleItem)

  doneable = mark_doneable_tag(item)
  return unless doneable

  if complete
    doneable.context_module_action(user, :done)

mark_doneable_tag returns a module item only when exactly one module requires the item to be marked done (:89-96); unchecking takes the requirement back (:62-68).

Show All appears only when the page passes a way to change the Dashboard view (ToDoSidebar/index.tsx:132-149). The Dashboard does (ui/features/dashboard/react/DashboardHeader.jsx:103-104); a course home page does not (ui/features/course_show/react/show.tsx:110-124). For a user with only student enrollments, the Dashboard renders the planner list and not the Coming Up list (app/views/users/dashboard_sidebar.html.erb:25-41), and a course home page renders Coming Up only for non-students (app/views/courses/show.html.erb:33).

Instructure's guide "How do I use the To Do list and sidebar in the Dashboard as a student?" (Instructure Community article 662818, retrieved 2026-11-11): "The To Do section shows up to seven items with due dates or event dates in the upcoming weeks." "To remove a To Do item, click the remove icon. The item(s) remain removed from the list." And: "no-submission assignments (submitted on paper/in class) can only be removed from the list manually." The same guide says "Once the due date has passed, items remain in this section for four weeks"; the code above starts the list two weeks back. The List View guide (article 662819, retrieved 2026-11-11): "To manually mark an item as complete, click the checkbox for the item." "To view information about completed To Do items, click the Show completed item link."

The Dashboard's To Do list reads the planner (/api/v1/planner/items), not Canvas's To Do API (/api/v1/users/self/todo).