We support now syncing global state - #86679. It is an opt in functionality. If you think the global state you own shall be synced, you have to opt in by registering your global state key to be syncable.
As shown above, you have to provide the storage key that has to be key along with version number. Versioning gives you flexibility to change your storage data semantics and makes sure old clients does not sync old data.
@microsoft/vscode Please find references to StorageScope.Global and check the state you own and opt in to sync if you think so.
Guidelines: Here are some guidelines to follow. They are not fixed, feel free to add
Here is the list of usages. Please check off either by opting in or not
Completed (March + April)
src/vs/editor/contrib/gotoSymbol/peek/referencesController.ts - @jrieken src/vs/editor/contrib/suggest/suggestMemory.ts - @jrieken src/vs/editor/contrib/suggest/suggestWidget.ts - @jrieken src/vs/platform/extensionManagement/common/extensionEnablementService.ts - @sandy081src/vs/platform/quickinput/browser/commandsQuickAccess.ts - @bpasero src/vs/platform/serviceMachineId/common/serviceMachineId.ts - @sandy081src/vs/platform/userDataSync/common/userDataSyncService.ts - @sandy081src/vs/workbench/browser/parts/activitybar/activitybarPart.ts - @sandy081 src/vs/workbench/browser/parts/editor/editorPart.ts - @isidorn src/vs/workbench/browser/parts/panel/panelPart.ts - @sandy081 src/vs/workbench/browser/parts/statusbar/statusbarPart.ts - @sandy081src/vs/workbench/browser/parts/titlebar/menubarControl.ts - @sbatten src/vs/workbench/browser/parts/views/views.ts - @sandy081 src/vs/workbench/browser/workbench.ts - @bpasero src/vs/workbench/contrib/bulkEdit/browser/bulkEditPane.ts - @jrieken src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.ts - @jrieken src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.ts - @jrieken src/vs/workbench/contrib/debug/browser/debugToolBar.ts - @isidorn src/vs/workbench/contrib/experiments/common/experimentService.ts - @connor4312 src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts - @bpasero src/vs/workbench/contrib/localizations/browser/localizations.contribution.ts - @sandy081 src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts - @roblourens src/vs/workbench/contrib/quickopen/browser/commandsHandler.ts - @bpasero src/vs/workbench/contrib/remote/browser/explorerViewItems.ts - @alexr00 src/vs/workbench/contrib/terminal/browser/terminalInstance.ts (not a good candidate) - @Tyriar src/vs/workbench/services/notification/common/notificationService.ts - @bpasero src/vs/workbench/services/remote/common/remoteExplorerService.ts - @alexr00 src/vs/workbench/services/textMate/browser/abstractTextMateService.ts - @alexdima src/vs/workbench/services/views/browser/viewDescriptorService.ts - @sandy081src/vs/workbench/services/workspaces/browser/workspacesService.ts - @bpasero src/vs/workbench/contrib/url/common/trustedDomains.ts - @octref src/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider.ts - @octref src/vs/editor/contrib/find/findWidget.ts - @rebornix src/vs/platform/telemetry/browser/workbenchCommonProperties.ts - @RMacfarlane src/vs/platform/telemetry/node/workbenchCommonProperties.ts - @RMacfarlane src/vs/workbench/api/browser/mainThreadAuthentication.ts - @RMacfarlane src/vs/workbench/contrib/extensions/browser/extensionTipsService.ts - @sandy081 src/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.ts - @egamma src/vs/workbench/contrib/surveys/browser/nps.contribution.ts - @egamma src/vs/workbench/electron-browser/window.ts - @deepak1556 src/vs/workbench/services/integrity/node/integrityService.ts - @alexdima src/vs/workbench/services/themes/browser/fileIconThemeData.ts - @aeschli src/vs/workbench/services/themes/browser/productIconThemeData.ts - @aeschli src/vs/workbench/services/themes/browser/workbenchThemeService.ts - @aeschli src/vs/workbench/services/themes/common/colorThemeData.ts - @aeschli src/vs/workbench/contrib/update/browser/update.ts - @joaomoreno src/vs/workbench/services/extensions/browser/extensionUrlHandler.ts - @joaomoreno src/vs/workbench/browser/layout.ts - @sbatten src/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut.ts - @sbatten src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts - @sandy081 Went through mine and did not fine good candidates for this.
I added a few. There are some which I am unsure, such as NPS surveys or extension tips. My feeling is they should be synced too.
@sandy081 I tried to adopt the service for notifications that offer a "Do not show again" action, but get tons of exceptions when requiring it in my layer. I think I cannot depend on that service as it seems to drag in other things? Try adding the dependency to notificationService.ts to see that in action.
@bpasero I tried adding IStorageKeysSyncRegistryService to notificationService.ts and it seems to work for me. I did not see any errors.
Sorry, nevermind. I pushed a change to register these keys.
NPS and language surveys is probably PM/DevLead decision, I assigned @egamma
@microsoft/vscode
Those who opted in to sync their global state, can you please provide steps to verify them in the comment below
Verify that following state is synced
Commands: the recently used command is being synced to the other machine.
for outline make sure this UX state is sync'd

Recently used and commands and Outline state are not getting synced.
I do not think experiment state should be synced at this time. We store evaluation results there, and between computers those results might be different. For instance, say we have an insiders-only experiment. If I happen to open stable first, that will evaluate to NoRun, and then syncs to my insiders instance, preventing me from ever seeing the experiment. We might want to add other user-global conditions later but for now I think keeping them locally is fine.
@sandy081 Wondering what you think about trusted domains. I feel it shouldn't be synced but I could be convinced otherwise.
I fee they should be synced. Its the user choice and as a I user I want my choice to be synced.
@octref Can you please provide steps to test if trusted domains are synced and working as expected?
@sandy081 Added trusted domains.
@sandy081 the crashreporter guid is machine dependent, it should not be synced. Removing my assignment.
Added trusted extensions.
To verify:
const session = await vscode.authentication.login("github", ['user:email']);
const token = await session.getAccessToken();
vscode.window.showInformationMessage('Successfully logged in');
Should be prompted to confirm that extension can access auth info on the first machine, and not see the consent dialog on subsequent machines when using the same extension id
For themes what's stored are the cached theme colors to avoid flickering on reload. We will not sync these at they also contain paths.
We still have 3 instances to fix from @sbatten and me.
One from me is not as simple as registering the keys as it needs updating the extensions resource while syncing. This is about locking the extension version to install. So will look into it early next milestone.
@sbatten Please take a look at the other two entries that are assigned to you.
Most helpful comment
I fee they should be synced. Its the user choice and as a I user I want my choice to be synced.