I’ve been snooping around the public source code of glitch for a while for my current project, and they do seem to have the option to switch between themes:
import React from 'react';
import { LiveAnnouncer } from 'react-aria-live';
import { LocalStyle, lightTheme } from '@glitchdotcom/shared-components';
import { HelmetProvider } from 'react-helmet-async';
import Store from 'State/store';
import { APIContextProvider } from 'State/api';
import { APICacheProvider } from 'State/api-cache';
import { NotificationsProvider } from 'State/notifications';
import { RolloutsUserSync } from 'State/rollouts';
import { SubscriptionProvider } from 'State/subscription';
import OfflineNotice from 'State/offline-notice';
import ErrorBoundary from 'Components/error-boundary';
import Router from './presenters/pages/router';
const App = ({ apiCache, helmetContext, initialStore }) => (
<LocalStyle theme={lightTheme}> // <------ Check this out
<ErrorBoundary fallback="Something went very wrong, try refreshing?">
<LiveAnnouncer>
<Store initialStore={initialStore}>
<NotificationsProvider>
<APIContextProvider>
<APICacheProvider initial={apiCache}>
<SubscriptionProvider>
<HelmetProvider context={helmetContext}>
<OfflineNotice />
<Router />
<RolloutsUserSync />
</HelmetProvider>
</SubscriptionProvider>
</APICacheProvider>
</APIContextProvider>
</NotificationsProvider>
</Store>
</LiveAnnouncer>
</ErrorBoundary>
</LocalStyle>
);
export default App;