doc/lti/18_asset_reports.md
As of November 2025, Asset Reports (LTI Asset Processor storage) are shown in 6 places, listed below.
Paths below are relative to canvas-lms or canvas-lms/ui/shared/lti-asset-processor
platform_service_speedgrader is ondependenciesShims.tsplatform_service_speedgrader is offui/features/speed_grader/jquery/speed_grader.tsx rendersLtiAssetReportsForSpeedgraderWrapper.tsxdependenciesShims.tsExample URL: http://canvas-web.inseng.test/courses/1/grades/2 (where 2 is student user id)
Visible by teacher and student.
Shown when SiteAdmin FF student_grade_summary_upgrade is on.
Frontend:
ui/features/grade_summary/react/GradeSummary/AssignmentTableRows/AssignmentRow.jsx, which uses --ui/features/grade_summary/react/LtiAssetProcessorCell.tsx, which uses --LtiAssetReportStatus and LtiStudentAssetReportModalData: part of Grades graphql query in
ui/features/grade_summary/graphql/Assignment.js and
ui/features/grade_summary/graphql/Submission.js (note: query shared with
New Student Submission AP)
Example URL: http://canvas-web.inseng.test/courses/1/grades/2 (where 2 is student user id)
Visible by teacher and student.
Shown when SiteAdmin FF student_grade_summary_upgrade is off
Frontend:
app/views/gradebooks/grade_summary.html.erb renders placeholder divs #asset_processors_header and .asset_processors_cellui/features/grade_summary/jquery/index.jsx renders --ui/features/grade_summary/react/LtiAssetProcessorCellWithData.tsx which uses --ui/features/grade_summary/react/LtiAssetProcessorCell.tsx, which uses --LtiAssetReportStatus and LtiStudentAssetReportModalData: ui/features/grade_summary/react/LtiAssetProcessorCellWithData.tsx uses
ui/shared/lti-asset-processor/react/hooks/useCourseAssignmentsAssetReports.ts which use
Tanstack Query + GraphQL to get all Asset Processors and Asset Reports for
the student and course.
assignments_2_student onui/features/assignments_show_student/react/components/StudentContent.jsx renders --ui/features/assignments_show_student/react/components/DocumentProcessorsSection.tsx
checks useShouldShowLtiAssetReportsForStudent() and renders
LtiAssetReportsForStudentSubmission along with some Submission-specific
presentational componentsui/features/assignments_show_student/react/components/AttemptTab.jsx lazy-loadsui/features/assignments_show_student/react/components/AttemptType/FilePreview.jsx checks
useShouldShowLtiAssetReportsForStudent() and renders
LtiAssetReportsForStudentSubmissionLtiAssetReportsForStudentSubmission uses hook in
useLtiAssetProcessorsAndReportsForStudent which use Tanstack Query +
GraphQL to fetch dataExample URL:
http://canvas-web.inseng.test/courses/1/assignments/2/submissions/3
(where 3 is student user id). Visible for student and teacher.
Shown when FF assignments_2_student off.
Frontend 1 -- Text Entry or Discussion Entry
app/views/submissions/show.html.erb renders container div asset_report_status_containerui/features/submissions/jquery/index.jsx (non-React) renders TextEntryAssetReportStatusLink into that container div.Frontend 2 -- Attachment
app/views/submissions/show.html.erb renders container div asset_report_modalui/features/submissions/jquery/index.jsx renders StudentAssetReportModalWrapper into that iframe.StudentAssetReportModalWrapper listens to postMessages with reports data to display. (see next part)app/views/submissions/show_preview.html.erb renders container elements asset-report-status-header and asset-report-status-container.ui/features/submissions_show_preview_asset_report_status/react/index.tsx renders into those divs (in particular, using the LtiAssetReportStatus component). This file also makes the status links send a postMessage when clicked, to open up the modal in the main window.