Assignments with no due date never reach your Canvas to-do list
A Canvas assignment with no due date does not appear on your To Do list, on the calendar grid, or in the calendar feed you subscribe to from another app. Each of those chooses work by its due date, and an assignment without one falls in no date range at all. Canvas keeps it in two places you have to go and look: the course's Assignments page, under Undated Assignments, and the Calendar sidebar, under Undated items.
What you see
Your instructor posts "Reading response 4" and means to set the date later, or sets an availability window — open Monday, closed Friday — and leaves the due date blank. Your To Do list is unchanged. The calendar shows nothing on Friday. The assignment exists, it is graded, and the only thing telling you about it is a list you were not looking at.
The same thing can happen to one section and not another. Due dates can be set per section, and Canvas goes by the date that applies to you, so a classmate in another section can see a date while you see none.
Why it happens
The To Do list comes from a scope in Canvas's source that picks assignments by your due date: it keeps the ones whose date falls between four weeks ago and one week from now. It is a range check, and a missing date is not inside any range. There is no separate branch for undated work, so the scope never reaches it.
"Your due date" here is a value Canvas stores for each student on each assignment, worked out from the assignment's due date and any section or individual override. When there is no due date, the stored value is empty. Availability dates are not part of it, which is why an assignment that opens Monday and closes Friday, with no due date, still stays off the list. (Once it closes, it would be off the list anyway: locked assignments leave the to-do feed.)
The calendar works the same way. Its events API returns dated items unless an app asks for the undated ones specifically, and the calendar feed is built for a window from 30 days ago to a year ahead, which again only dated items can fall into.
What you can do about it
- Open each course's Assignments page. Canvas groups a student's assignments there, and one group is Undated Assignments. It takes a minute per course.
- Expand Undated items in the Calendar sidebar. It lists the events and assignments that have no date, marked with each calendar's color.
- Write down an "Available until" date if that is all there is. An assignment with no due date can still close. The closing date is the last moment you can submit, and nothing in the To Do list will remind you of it.
- Ask for the date. If a graded assignment has no due date, the instructor may not have set it yet.
- Check the syllabus. Undated in Canvas is often dated on paper. The syllabus is the record of what the course requires.
Margin does not invent a date either: it leaves out a Canvas assignment that has neither a due date nor an "Available until" date.
Evidence
canvas-lms, app/models/user_learning_object_scopes.rb:281-283 (master, retrieved 2026-10-30). The scope behind the To Do list, called from todo_items in app/controllers/users_controller.rb:974-980, defaults to a window from four weeks back to one week ahead, and assignments_for_student in the same file (:262), which it calls, filters by the student's own due date:
def assignments_needing_submitting(
due_after: 4.weeks.ago,
due_before: 1.week.from_now,
assignments = assignment_scope.due_between_for_user(due_after, due_before, self)
canvas-lms, app/models/abstract_assignment.rb:3458-3460, what that filter is:
scope :due_between_for_user, lambda { |start, ending, user|
with_user_due_date(user).where(submissions: { cached_due_date: start..ending })
}
A range condition in SQL is never true for an empty (NULL) value, so a student with no due date on an assignment never matches it.
canvas-lms, lib/submission_lifecycle_manager.rb:237, where the per-student cached_due_date is written. It is the due date that applies to that student, or NULL:
due_date = submission_info[:due_at] ? "'#{ActiveRecord::Base.connection.quoted_date(submission_info[:due_at].change(usec: 0))}'::timestamptz" : "NULL"
canvas-lms, app/controllers/calendar_events_api_controller.rb:348-350, the events API's own documentation of its undated parameter: "Defaults to false (dated events only). If true, only return undated events and ignore start_date and end_date." The calendar feed (public_feed, :1220-1233) sets @start_date = 30.days.ago and @end_date = 366.days.from_now, and with a start date set, assignments are selected with due_between_with_overrides over that window (:1600-1605, :1749).
Instructure Community, How do I view Assignments as a student? (retrieved 2026-10-30): "Undated Assignments: assignments, discussions, and quizzes that do not have a due date."
Instructure Community, How do I use the Calendar? (retrieved 2026-10-30): "Expanding the Undated items link displays a list of events and assignments that are not dated."
Margin extension, extension/sync-canvas.js (the date check in _pushAssignment): an item with no valid due date, no dated checkpoint and no valid lock_at is recorded as seen and skipped rather than added. (Read at product 97ef18df, 30 October 2026.)