Skip to content

Revert "Remove references to old onboarding service" #6130 and restor… - #6133

Merged
michelinewu merged 1 commit into
masterfrom
mw_restore_old_onboarding
Aug 27, 2026
Merged

Revert "Remove references to old onboarding service" #6130 and restor…#6133
michelinewu merged 1 commit into
masterfrom
mw_restore_old_onboarding

Conversation

@michelinewu

Copy link
Copy Markdown
Contributor

Revert "Remove References to Old Onboarding Service" and Restore the Components and Strings It Needs

Issues

#6109 (0cd4552a8) repointed every remaining OnboardingService call site at OnboardingV2Service and dropped OnboardingService from app-services.ts. The side nav login is broken as a result.

NavTools.tsx:116 calls UserService.actions.showLogin(). #6109 rewrote UserService.showLogin() to call onboardingV2Service.actions.showLogin() instead of onboardingService.start({ isLogin: true }), and the v2 path does not bring up a usable login for that entry point.

Reverting #6109 on its own does not build, because the code it reverts to depends on two earlier removals:

  • The onboarding page components are gone. OnboardingService.start() ends in navigationService.navigate('Onboarding'). Main.tsx:260 resolves the page with appPages[page] || appPages.Studio, and Remove deprecated components #6078 (511366ee7) deleted all 26 files under app/components-react/pages/onboarding/ and removed export { default as Onboarding } from app/components-react/pages/index.ts. So appPages.Onboarding is undefined and the lookup silently falls back to Studio — while Main.tsx separately hides SideNav and StudioFooter whenever page === 'Onboarding'. That combination is the visible symptom: the nav disappears and the editor is rendered underneath it, with no login anywhere.
  • Nine i18n keys the restored components resolve at runtime are gone. Remove stale translations and add missing ones #6075 (eb947b167) removed them as stale, which was correct at the time — the components using them were deleted a day later in Remove deprecated components #6078.

Fixes

Revert #6109. git revert 0cd4552a8 applies cleanly across all 11 files. app/services/onboarding.ts was never deleted, so services/onboarding resolves again as soon as the imports come back. This also removes the onboardingCompleted subject, showSingletonStep(), and fetchThemeData() that #6109 grafted onto onboarding-v2.ts purely to serve the migrated call sites; nothing else references them, verified by grep across app/ and test/.

Restore the 26 deleted files under app/components-react/pages/onboarding/ from 511366ee7^, and re-add the Onboarding export to app/components-react/pages/index.ts. Taking them from #6078's parent rather than an older commit matters: that tree is already past #6075, so Connect.tsx carries the joined Twitch 2FA literal #6075 introduced, and no #6075 code change is undone here.

Restore five i18n keys #6075 removed, verbatim, into the files they came from:

Key File
Check out 50+ amazing apps from independent developers, … onboarding.json
Only have one screen? Perfect! Enable our in-game overlay … onboarding.json
Importing Your Existing Settings From OBS onboarding.json
Importing Your Existing Settings From Twitch Studio twitch.json
Twitch requires two factor authentication to be enabled on your account … streaming.json

The first two are $t('a ' + 'b' + 'c') concatenations in ObsImport.tsx; the runtime key is the joined string, which is exactly the form #6075 deleted. The next two are the two resolutions of the template key `Importing Your Existing Settings From ${isObs ? 'OBS' : 'Twitch Studio'}` at ObsImport.tsx:33.

Add four keys that never existed. 1-Click Import, While we import your settings and scenes, check out these great features unique to Streamlabs, Something went wrong while importing. Please try again or skip to the next step. (all onboarding.json) and Log Out? (onboarding.json). These are pre-existing gaps, not #6075 regressions — the strings in ObsImport.tsx and FreshOrImport.tsx had already been genericised away from their … from OBS Studio wording before #6075, so the keys #6075 deleted were the older OBS-specific variants and the current wording was never in a dictionary. Confirmed absent at eb947b167^. Adding them costs nothing and stops the restored flow rendering four untranslatable strings in 25 locales.

Dictionary edits are append-only single lines at each file's tail, per the house convention that these files are never reserialized.

Files changed: 42 files. app/app-services.ts, app/services/app/app.ts, app/services/user/index.ts, app/services/onboarding/onboarding-v2.ts, app/components-react/highlighter/Export/StorageUpload.tsx, app/components-react/modals/onboarding/Themes.tsx, app/components-react/shared/DualOutputToggle.tsx, app/components-react/windows/go-live/platforms/TwitchTagsInput.tsx, app/components-react/windows/settings/General.tsx, app/components-react/windows/settings/Support.tsx, app/components/widgets/Poll.tsx, app/components-react/pages/index.ts, 26 restored files under app/components-react/pages/onboarding/, and app/i18n/en-US/{onboarding,twitch,streaming}.json.

Performance Implications

None meaningful. This restores the code that shipped through 0cd4552a8^, so runtime cost returns to that baseline: one more service registered in AppServices, and OnboardingService.init() runs setExistingCollections() once at startup, which reads sceneCollectionsService.loadableCollections — already in memory, no I/O.

Bundle size grows by the 26 restored files (~3,000 lines including LESS). They are reachable only from the Onboarding route, but the pages barrel is a static import in Main.tsx, so they land in the main chunk as they did before #6078.

Two $t() calls in ObsImport.tsx stop missing their dictionary entry, which removes a dev-mode console.error per render of the import step (app/app.ts:267); silent in production either way.

Notes

This is a straight revert, not a fix for whatever #6109 was trying to achieve. The old OnboardingService and OnboardingV2Service both exist again and both run, which is the state master was in before #6109 — v2 owns the modal flow via Main.tsx, the old service owns the full-page Onboarding route. Re-landing the migration needs the v2 login to actually work from the side nav entry point first.

app/components-react/pages/grow/ (Cards.tsx, Grow.tsx, Grow.m.less) and the Grow barrel export were also deleted by #6078 and are not restored here — nothing in the reverted code references them, and 'Grow' hitting the appPages.Studio fallback is a separate pre-existing issue on master.

General.tsx comes back with runAutoOptimizer() calling OnboardingService.actions.start({ isOptimize: true }) rather than the commented-out body #6109 left behind. The Optimize step is still disabled in ONBOARDING_STEPS, so views.singletonStep returns undefined for it and the route renders nothing — a dead button, but the same dead button that shipped before #6109.

Source Commits

Copilot AI lite review requested due to automatic review settings August 27, 2026 19:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Restores the legacy full-page onboarding flow and its dependencies after #6109 rerouted remaining login/onboarding entry points to OnboardingV2Service, which broke side-nav login and removed the Onboarding page route resolution.

Changes:

  • Reverts UserService.showLogin() (and other call sites) back to OnboardingService-driven login/onboarding navigation.
  • Restores the deleted React onboarding page components (route: Onboarding) and wires them back into the pages barrel export.
  • Restores/extends required en-US i18n keys for the reinstated onboarding pages and importer flows.

Reviewed changes

Copilot reviewed 41 out of 41 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
app/app-services.ts Re-exports and re-registers OnboardingService so legacy call sites can resolve it via DI.
app/services/app/app.ts Injects OnboardingService back into AppService for startup orchestration needs.
app/services/user/index.ts Reverts login/onboarding completion behavior back to OnboardingService APIs.
app/services/onboarding/onboarding-v2.ts Removes onboardingCompleted + theme-fetch helpers that were added to serve migrated call sites.
app/components-react/highlighter/Export/StorageUpload.tsx Routes auth/login prompting back through OnboardingService.start({ isLogin: true }).
app/components-react/modals/onboarding/Themes.tsx Switches theme metadata fetch from v2 service back to OnboardingService.
app/components-react/shared/DualOutputToggle.tsx Uses OnboardingService.onboardingCompleted to resume dual-output enablement after login/onboarding.
app/components-react/windows/go-live/platforms/TwitchTagsInput.tsx Routes re-auth back through OnboardingService login flow.
app/components-react/windows/settings/General.tsx Re-enables legacy onboarding entry points for optimizer/hardware/import actions.
app/components-react/windows/settings/Support.tsx Routes OBS import entry point through OnboardingService import flow.
app/components/widgets/Poll.tsx Routes Twitch scope re-auth back through OnboardingService login flow.
app/components-react/pages/index.ts Re-adds Onboarding page export so navigation to 'Onboarding' resolves to the route component.
app/components-react/pages/onboarding/Common.m.less Restored shared onboarding layout styling.
app/components-react/pages/onboarding/Connect.m.less Restored Connect step styling.
app/components-react/pages/onboarding/Connect.tsx Restored Connect/login step UI and flow logic.
app/components-react/pages/onboarding/ExtraPlatformConnect.tsx Restored extra platform connection UI (e.g., custom RTMP style flows).
app/components-react/pages/onboarding/FreshOrImport.m.less Restored import choice step styling.
app/components-react/pages/onboarding/FreshOrImport.tsx Restored “Fresh vs Import” step for onboarding.
app/components-react/pages/onboarding/HardwareSetup.m.less Restored hardware setup step styling.
app/components-react/pages/onboarding/HardwareSetup.tsx Restored mic/webcam setup step implementation.
app/components-react/pages/onboarding/MacPermissions.tsx Restored macOS permissions step.
app/components-react/pages/onboarding/ObsImport.m.less Restored OBS/Twitch Studio import step styling.
app/components-react/pages/onboarding/ObsImport.tsx Restored OBS/Twitch Studio import step logic.
app/components-react/pages/onboarding/ObsSvg.tsx Restored OBS logo SVG used by import UI.
app/components-react/pages/onboarding/Onboarding.m.less Restored top-level onboarding page styling.
app/components-react/pages/onboarding/Onboarding.tsx Restored top-level onboarding flow controller and step rendering.
app/components-react/pages/onboarding/OnboardingContext.ts Restored onboarding skip-context helper for custom skip behavior.
app/components-react/pages/onboarding/Optimize.tsx Restored optimizer step UI (even if currently gated/disabled in steps).
app/components-react/pages/onboarding/PrimaryPlatformSelect.tsx Restored primary platform selection step for partial SL auth.
app/components-react/pages/onboarding/Prime.m.less Restored Ultra/Prime step styling.
app/components-react/pages/onboarding/Prime.tsx Restored Ultra/Prime upsell step logic.
app/components-react/pages/onboarding/Signup.m.less Restored signup step styling.
app/components-react/pages/onboarding/Signup.tsx Restored signup step UI and SLID signup call.
app/components-react/pages/onboarding/StreamingOrRecording.m.less Restored streaming-vs-recording step styling.
app/components-react/pages/onboarding/StreamingOrRecording.tsx Restored streaming-vs-recording step behavior.
app/components-react/pages/onboarding/ThemeSelector.m.less Restored theme selector step styling.
app/components-react/pages/onboarding/ThemeSelector.tsx Restored theme selector step UI and theme install flow.
app/components-react/pages/onboarding/steps.ts Restored onboarding steps barrel exports.
app/i18n/en-US/onboarding.json Restores/adds onboarding strings required by reinstated onboarding pages.
app/i18n/en-US/twitch.json Restores Twitch Studio import title key used at runtime.
app/i18n/en-US/streaming.json Restores Twitch 2FA error key used by onboarding login handling.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +40 to +42
const detailTheme = useMemo(() => {
return themesMetadata.find(theme => theme.data.id === showDetail);
}, [showDetail]);
Comment on lines 82 to 86
UserService.actions.showLogin();

const onboardingCompleted = OnboardingV2Service.onboardingCompleted.subscribe(() => {
const onboardingCompleted = OnboardingService.onboardingCompleted.subscribe(() => {
DualOutputService.actions.setDualOutputModeIfPossible();
SettingsService.actions.showSettings('Video');
onboardingCompleted.unsubscribe();
display: none;
}

// Accomodate progress bar so still centered when there's a skip button to its right
Comment on lines +145 to +163
{obsImported ? (
<SupportLinks
inline
links={[
{
label: $t('Imported from OBS'),
icon: 'icon-download',
disabled: true,
className: styles.obsImportSuccess,
onClick: () => {},
},
]}
/>
) : (
<SupportLinks
inline
links={[{ label: $t('OBS Import'), icon: 'icon-download', onClick: importFromObs }]}
/>
)}
Comment on lines +54 to +77
if (
progress.event === 'starting_step' ||
progress.event === 'progress' ||
progress.event === 'stopping_step'
) {
if (stepInfo && stepInfo.description === progress.description) {
stepInfo.percentage = progress.percentage;
} else {
setStepInfo({
description: progress.description,
summary: summaryForStep(progress)!,
percentage: progress.percentage,
});
}
} else if (progress.event === 'done') {
setProcessing(false);
sub.unsubscribe();
next();
} else {
console.error("AutoConfigService error:", progress.description);
setProcessing(false);
sub.unsubscribe();
setOptimizingState('error');
}
@michelinewu
michelinewu merged commit 2c33aea into master Aug 27, 2026
6 of 13 checks passed
@michelinewu
michelinewu deleted the mw_restore_old_onboarding branch August 27, 2026 19:39
@bundlemon

bundlemon Bot commented Aug 27, 2026

Copy link
Copy Markdown

BundleMon

Unchanged files (4)
Status Path Size Limits
renderer.(hash).js
10.47MB -
vendors~renderer.(hash).js
4.67MB -
updater.js
115.29KB -
guest-api.js
40.23KB -

No change in files bundle size

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants