Skip to main content

Research decisions

Record which ecosystem lessons Nuxt Tour adopts and rejects.

Research decisions

The ecosystem research is evidence, not a feature checklist. Nuxt Tour adopts capabilities only when they support its core user journey.

SourceAdoptReject or defer
Driver.jsSmall controller and explicit late-target behaviorDOM-first identity and numeric navigation
ShepherdPreparation, conditional steps, scrolling, and missing-target policyLarge overlapping option surface
Intro.jsPromise-based navigationLegacy method aliases and generic option setters
React JoyrideComposable-first control and replaceable renderingReact-specific render contracts
NextStepRoutes as a first-class tour concernDirection-specific nextRoute and prevRoute
v-onboardingVue refs, slots, focus work, SVG overlay, and Nuxt integrationComponent-ref controller and selector-first definitions
svelte-tourSemantic registration of mounted targetsWrapper components around application markup
Floating UIPositioning, collision handling, and layout updatesExposing its complete middleware API in normal steps
WAI-ARIADialog semantics and modal focus behaviorCalling an interactive card a tooltip

Driver.js is MIT-licensed and remains an implementation reference. Shepherd and Intro.js are behavior and API references only because their current licensing does not fit a permissively licensed implementation source.

Deliberate changes from the initial research proposal

The shaped v1 is smaller than the initial proposal:

  • Direct element refs were removed from TourStep.target. They register a semantic target instead.
  • Multiple spotlight targets and a separate scroll target were deferred.
  • advanceOn was deferred. Application code can call next() after a domain action.
  • Persistence helpers were deferred with persistence itself.
  • Generic step metadata was deferred until a concrete consumer needs it.
  • The public headless core remains private.

These deletions preserve the distinguishing parts: Nuxt discovery and typing, route-aware transitions, late semantic targets, guaranteed cleanup, accessible Vue rendering, and one composable controller.

Primary references