Preflight: catching problems before you publish
30 checks that run as you build a Scenes course and stop the export on definite errors — broken triggers, unanswerable questions — and ask before exporting with accessibility gaps.
Last updated 4 min read
What preflight is
Preflight reads your course the way the player will and tells you what will not work — while you are building, not after you have uploaded a package to your LMS and watched someone hit a dead button.
There are 30 checks, 11 of which are definite failures rather than suggestions. Open it from the toolbar in the Scenes editor: the button shows a count as soon as something needs attention, and shows a tick and Ready when nothing does. The panel filters findings by All, Must fix, Worth checking and Suggestion.
Findings are grouped by slide, because the fix is almost always “go and look at that slide”. Clicking one takes you there and selects the object.
Tip: Errors that would break the course in an LMS stop export from the Scenes editor: the export stops and the panel opens on what needs fixing. Accessibility errors do not stop it: when they are all that is left, a dialog offers Fix them first or Export with N known issues, and the audit log records an export with known issues. See Accessibility triage after an import.
Things that point at nothing
The most common way a course breaks silently. Triggers refer to slides, layers, objects and variables by an internal reference. Delete the thing they point at and the trigger survives, looking perfectly healthy in the editor, doing nothing at all for the learner. Every check in this group is definite: if one fires, that trigger will not work.
- A trigger jumps to a slide that no longer exists — Must fix
- A trigger shows or hides a layer that no longer exists — Must fix
- A trigger targets an object that no longer exists — Must fix
- A trigger switches an object to a state it does not have — Must fix
- A trigger uses a variable that no longer exists — Must fix
Triggers that can never fire
Logic that is well-formed but unreachable. A timed trigger set for later than the slide lasts, a layer nothing ever shows, a variable checked by a condition that nothing ever changes. None of these are errors in the strict sense — the course still runs — but none of them do what you meant.
- A trigger has no actions — Worth checking
- A timed trigger is set past the end of its slide — Worth checking
- An object leaves the timeline before it arrives — Worth checking
- A variable is never used — Suggestion
- A variable is checked but never changes — Worth checking
- A layer can never be shown — Worth checking
- A lightbox slide is never opened — Worth checking
- A trigger jumps to the slide it is already on — Suggestion
Questions nobody can answer
A question with no correct answer marked, or whose correct option was deleted after the fact, can be answered but never passed. Learners discover this; you should first.
- A question has no correct answer — Must fix
- A question's correct answer is not one of its options — Must fix
- A multiple-choice question has fewer than two options — Worth checking
- A question is worth no points — Worth checking
What the LMS actually receives
The score your LMS records is not always the score you think you are sending. If every question in a course can be skipped with Next, a learner who skips them all is scored on how many slides they visited instead — and the gradebook will not say so.
- A learner can finish without answering the questions — Worth checking
- A scored course has no results slide — Suggestion
Whether a learner can actually use it
These checks run continuously against the course you are building, not against a published package after the fact. A control with no name, an image with no alt text, text that fails contrast, or a click target a keyboard can never reach will show up here as you create it.
- A control a learner must use has no name — Must fix
- An image has no alt text — Must fix
- A hotspot question cannot be answered without seeing it — Worth checking
- Text does not have enough contrast against its background — Must fix
- Two controls on a slide claim the same tab position — Worth checking
- A control can only be used with a mouse — Must fix
- A video has no captions — Worth checking
- A slide with text moves on by itself — Worth checking
Content a learner will never see
Empty slides and objects dragged off the edge of the canvas. Cheap to fix, easy to miss in a long course.
- A slide has nothing on it — Suggestion
- An object sits outside the slide — Worth checking
- Text is too long for the box it sits in — Worth checking
Three levels, and what they mean
Must fix — definitely broken for some or all learners. A trigger pointing at a deleted slide does nothing; a question with no correct answer cannot be passed; an image with no alt text is skipped by a screen reader. Broken references and unanswerable questions stop export from the Scenes editor; accessibility errors ask first.
Worth checking — probably not what you meant, but the course still runs. A layer nothing shows, a question worth zero points, a video with no captions.
Suggestion — worth a look at some point. An unused variable, an empty slide.
Preflight is deliberately quiet: a check that fires on a healthy course teaches you to ignore the panel, which costs you every other check too. If you see a finding you believe is wrong, it is a bug in preflight and worth reporting.
Why check while you build
A trigger pointing at a deleted slide, a question with no correct answer or a button a keyboard user cannot reach is easy to create and hard to spot by clicking through. Left alone, it surfaces when a learner hits it, or when someone runs an accessibility audit months later.
Preflight treats the course as something that can be checked the way code is: every rule runs over the whole course on each change, so a problem shows up the moment you create it and disappears the moment you fix it.
Part of the documentation: Build.
Found something here that does not match what the product does? That is a bug in the guide — see all guides or tell us from the Help Center.