[Admin Tools] Improve load time for LTIs

Problem statement:

Canvas LTI load times do not seem to have been improved much in the past 12 years. The LTI handshake takes about 1.5 seconds while the page is white, and API calls are throttled still to 100 items and can take 2-3 seconds for large requests. The internet has changed and a 1.5 second blank screen when loading an LTI is TOO long :). We have optimized our load time to 300ms, and then we wait for 4 seconds for Canvas to do its part. It makes our apps feel sluggish and of lower quality.

Proposed solution:

Optimize the LTI handshake so that it is as fast as possible. Right now, it takes about 1.5 seconds. Scope graphQL so we can use it in real LTI tools with real clients. Remove or enlarge pagination limits so we can ask for the data we need in a timely way. Throttle less so applications, like dashboards, can pull in more data at the same time.

User role(s):

admin,instructor,student,ta,designer,observer

6 Comments
AlexisNast
Instructure
Instructure
Status changed to: Added to Theme

Thank you for this feedback! It has been added to a theme for further consideration. If you're able to give more details about the tool setup that is having these issues it may help us pinpoint the problem as well.

10618071
Community Participant
Author

Thanks for looking at this, here is a video of what I mean

 

https://www.loom.com/share/b4f3e590572f4d8da0e1cdc53fd9fac8

 

I'll add more information about our LTI configuration soon

10618071
Community Participant
Author

@AlexisNast here is my LTI configuration, anything there that we can improve speed with on our end? Anything on the canvas end that can be sped up?

 

{
"title": "Δ Delphinium",
"description": "Motivation and Engagement for Canvas courses",
"oidc_initiation_url": "https://gor-api.delphinium.tools/green-house",
"target_link_uri": "https://gor-api.delphinium.tools/green-house",
"scopes": [
"https://purl.imsglobal.org/spec/lti-ags/scope/lineitem",
"https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly",
"https://purl.imsglobal.org/spec/lti-ags/scope/score",
"https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly",
"https://purl.imsglobal.org/spec/lti-ags/scope/lineitem.readonly",
"https://canvas.instructure.com/lti/public_jwk/scope/update"
],
"extensions": [
{
"domain": "gor-api.delphinium.tools",
"tool_id": "Δ Delphinium",
"privacy_level": "public",
"platform": "canvas.instructure.com",
"settings": {
"text": "Motivation and Engagement for Canvas courses",
"icon_url": "https://demo.delphinium3.com/themes/delphinium-theme/assets/images/favicon.svg",
"selection_height": 600,
"selection_width": 600,
"placements": [
{
"enabled": true,
"default": "disabled",
"text": "Δ Delphinium",
"placement": "course_navigation",
"message_type": "LtiResourceLinkRequest",
"icon_url": "https://demo.delphinium3.com/themes/delphinium-theme/assets/images/favicon.svg",
"target_link_uri": "https://gor-api.delphinium.tools/green-house",
"selection_height": 0,
"selection_width": 0,
"custom_fields": {
"custom_canvas_api_domain": "$Canvas.api.domain"
}
},
{
"enabled": true,
"text": "Δ Delphinium",
"placement": "account_navigation",
"message_type": "LtiResourceLinkRequest",
"icon_url": "https://demo.delphinium3.com/themes/delphinium-theme/assets/images/favicon.svg",
"target_link_uri": "https://gor-api.delphinium.tools/organization",
"selection_height": 600,
"selection_width": 600
},
{
"enabled": true,
"text": "Delphinium",
"placement": "editor_button",
"message_type": "LtiDeepLinkingRequest",
"icon_url": "https://demo.delphinium3.com/themes/delphinium-theme/assets/images/favicon.svg",
"target_link_uri": "https://gor-api.delphinium.tools/editor",
"selection_height": 600,
"selection_width": 600
}
]
}
}
],
"custom_fields": {
"custom_account_name": "$Canvas.account.name",
"custom_canvas_account_id": "$Canvas.account.id",
"custom_canvas_api_domain": "$Canvas.api.domain",
"custom_canvas_course_id": "$Canvas.course.id",
"custom_canvas_course_section_ids": "$Canvas.course.sectionIds",
"custom_canvas_root_account_id": "$Canvas.rootAccount.id",
"custom_canvas_root_account_uuid": "$vnd.Canvas.root_account.uuid",
"custom_canvas_user_id": "$Canvas.user.id",
"custom_external_tool_url": "$Canvas.externalTool.url",
"custom_membership_roles": "$Canvas.membership.roles",
"launch_presentation_locale": "$Message.locale"
},
"public_jwk": {

nathanatkinson
Community Team
Community Team
Status changed to: New
 
nathanatkinson
Community Team
Community Team
Status changed to: New
 
nathanatkinson
Community Team
Community Team
Status changed to: Open