Revert "Remove references to old onboarding service" #6130 and restor… - #6133
Merged
Conversation
…e the components and strings it needs
wesrupert
approved these changes
Aug 27, 2026
gettinToasty
approved these changes
Aug 27, 2026
Contributor
There was a problem hiding this comment.
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 toOnboardingService-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'); | ||
| } |
BundleMonUnchanged files (4)
No change in files bundle size Final result: ✅ View report in BundleMon website ➡️ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Revert "Remove References to Old Onboarding Service" and Restore the Components and Strings It Needs
Issues
#6109 (
0cd4552a8) repointed every remainingOnboardingServicecall site atOnboardingV2Serviceand droppedOnboardingServicefromapp-services.ts. The side nav login is broken as a result.NavTools.tsx:116callsUserService.actions.showLogin(). #6109 rewroteUserService.showLogin()to callonboardingV2Service.actions.showLogin()instead ofonboardingService.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:
OnboardingService.start()ends innavigationService.navigate('Onboarding').Main.tsx:260resolves the page withappPages[page] || appPages.Studio, and Remove deprecated components #6078 (511366ee7) deleted all 26 files underapp/components-react/pages/onboarding/and removedexport { default as Onboarding }fromapp/components-react/pages/index.ts. SoappPages.Onboardingisundefinedand the lookup silently falls back toStudio— whileMain.tsxseparately hidesSideNavandStudioFooterwheneverpage === 'Onboarding'. That combination is the visible symptom: the nav disappears and the editor is rendered underneath it, with no login anywhere.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 0cd4552a8applies cleanly across all 11 files.app/services/onboarding.tswas never deleted, soservices/onboardingresolves again as soon as the imports come back. This also removes theonboardingCompletedsubject,showSingletonStep(), andfetchThemeData()that #6109 grafted ontoonboarding-v2.tspurely to serve the migrated call sites; nothing else references them, verified by grep acrossapp/andtest/.Restore the 26 deleted files under
app/components-react/pages/onboarding/from511366ee7^, and re-add theOnboardingexport toapp/components-react/pages/index.ts. Taking them from #6078's parent rather than an older commit matters: that tree is already past #6075, soConnect.tsxcarries 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:
Check out 50+ amazing apps from independent developers, …onboarding.jsonOnly have one screen? Perfect! Enable our in-game overlay …onboarding.jsonImporting Your Existing Settings From OBSonboarding.jsonImporting Your Existing Settings From Twitch Studiotwitch.jsonTwitch requires two factor authentication to be enabled on your account …streaming.jsonThe first two are
$t('a ' + 'b' + 'c')concatenations inObsImport.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'}`atObsImport.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.(allonboarding.json) andLog Out?(onboarding.json). These are pre-existing gaps, not #6075 regressions — the strings inObsImport.tsxandFreshOrImport.tsxhad already been genericised away from their… from OBS Studiowording before #6075, so the keys #6075 deleted were the older OBS-specific variants and the current wording was never in a dictionary. Confirmed absent ateb947b167^. 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 underapp/components-react/pages/onboarding/, andapp/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 inAppServices, andOnboardingService.init()runssetExistingCollections()once at startup, which readssceneCollectionsService.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
Onboardingroute, but the pages barrel is a static import inMain.tsx, so they land in the main chunk as they did before #6078.Two
$t()calls inObsImport.tsxstop missing their dictionary entry, which removes a dev-modeconsole.errorper 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
OnboardingServiceandOnboardingV2Serviceboth exist again and both run, which is the state master was in before #6109 — v2 owns the modal flow viaMain.tsx, the old service owns the full-pageOnboardingroute. 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 theGrowbarrel export were also deleted by #6078 and are not restored here — nothing in the reverted code references them, and'Grow'hitting theappPages.Studiofallback is a separate pre-existing issue on master.General.tsxcomes back withrunAutoOptimizer()callingOnboardingService.actions.start({ isOptimize: true })rather than the commented-out body #6109 left behind. TheOptimizestep is still disabled inONBOARDING_STEPS, soviews.singletonStepreturnsundefinedfor it and the route renders nothing — a dead button, but the same dead button that shipped before #6109.Source Commits
0cd4552a8336197fcada4f0211aba0dc0b79463e— Remove references to old onboarding service (Remove references to old onboarding service #6109)511366ee79f8e39ab4b0cdf8b3fd96e672fa9540^— Remove deprecated components (Remove deprecated components #6078)eb947b1678170eaf81d8cbefd528d32bb0d5a389^— Remove stale translations and add missing ones (Remove stale translations and add missing ones #6075)