web boot at /app never activates instance runtime, channel URLs boot fine

(#3881) Bug Open: Needs triage desktop self-hosting

Reproduction steps

  1. While logged in, reopen the installed webapp (which opens /app)
  2. Observe permanent skeleton UI on every load
  3. Open Console: [Router] initial guard check failed RuntimeConfigUnavailableError: No instance runtime is active, gateway then READYs, every REST call fails RestRuntimeUnavailableError
  4. In the same window, change the location to any channel (e.g. "location.href='/channels/@me'") -> fixed
  5. Reverse check: open any instance webpage with a logged in account at /app -> breaks identically
5+1. Bonus crash: clicking a chat notification while runtime-less crashes via MobX error 32 in the directMessagesDisabled derivation (get community, RuntimeConfig.ts:270)

Expected behaviour

/app boots into the signed-in session like channel URLs do.

Actual behaviour

/app boots through the signed-out document flow and no runtime is ever activated: router guard rejects, skeleton forever, gateway READY + live events continue behind the dead UI. Clicking a chat notification in this state crashes the app (MobX error 32 in the directMessagesDisabled derivation, get community, RuntimeConfig.ts:270). (Also reproduced on the official instance on pre-13:54-UTC builds; official no longer reproduces after the branding-before-boot cluster (#3396), self-hosted 125122 still does.)

Build information

Canary Web 2026.1011.125122, Linux (x86), Chrome 154.0.0.0, Locale en-US

Platform

Windows, Linux, Web, Self-hosting

Evidence

AppLogger.ts:141 [16:20:21] [Router] [Error] initial guard check failed RuntimeConfigUnavailableError: No instance runtime is active
    at Object.readableSnapshot (RuntimeConfig.ts:292:10)
    at eA (mobx.mjs:1077:15)
    at Object.readableSnapshot (mobx.mjs:1064:12)
at get community (RuntimeConfig.ts:270:15)
    at eR (mobx.mjs:1606:16)
    at eE.computeValue_ (mobx.mjs:1451:13)
    at eE.trackAndCompute (mobx.mjs:1428:27)
    at eE.get (mobx.mjs:1393:18)
    at t9.getObservablePropValue_ (mobx.mjs:4516:23)
    at Object.get (mobx.mjs:4969:26)
log @ AppLogger.ts:141
AppLogger.ts:141 [16:20:21] [MediaEngineFacade] [Info] Voice engine v2 prewarm completed Object
AppLogger.ts:141 [16:20:21] [ElectronScreenSharePicker] [Info] Screen share picker unavailable (missing platform handler)
AppLogger.ts:141 [16:20:21] [GatewayConnection] [Info] Using gateway compression: zstd-stream
AppLogger.ts:141 [16:20:21] [Gateway] [Info] Gateway state DISCONNECTED -> CONNECTING
AppLogger.ts:141 [16:20:21] [GatewayWireTransport] [Info] Adopted the preboot gateway socket with 1 buffered message(s)
AppLogger.ts:141 [16:20:21] [Gateway] [Info] Gateway connection established
AppLogger.ts:141 [16:20:21] [Gateway] [Info] Sending IDENTIFY to gateway
AppLogger.ts:141 [16:20:21] [Gateway] [Info] Gateway state CONNECTING -> CONNECTED
AppLogger.ts:141 [16:20:21] [Gateway] [Info] Gateway READY, session=<redacted>, ready_ms=195
AppLogger.ts:141 [16:20:21] [ExperimentAssignments] [Warn] Experiment assignment request failed: RestRuntimeUnavailableError: A relative REST request requires an active instance runtime
    at Object.dispatchAccountScoped (RestTransport.ts:260:26)
    at Object.dispatch (RestTransport.ts:240:15)
    at Object.get (RestTransport.ts:280:15)
    at Object.<anonymous> (ExperimentAssignments.ts:233:27)
    at Generator.next (<anonymous>)
    at s (9995a8b891d7a840.js:2:166523)
    at l (9995a8b891d7a840.js:2:166720)
at 9995a8b891d7a840.js:2:166779 at new Promise (<anonymous>) at Object.<anonymous> (9995a8b891d7a840.js:2:166661) log @ AppLogger.ts:141
AppLogger.ts:141 [16:20:21] [Premium] [Error] Premium state fetch failed RestRuntimeUnavailableError: A relative REST request requires an active instance runtime
    at Object.dispatchAccountScoped (RestTransport.ts:260:26)
    at Object.dispatch (RestTransport.ts:240:15)
    at Object.get (RestTransport.ts:280:15)
at PremiumCommands.ts:90:25
    at Generator.next (<anonymous>)
    at u (a51a01fb2309e813.js:9:312770)
    at s (a51a01fb2309e813.js:9:312967)
log @ AppLogger.ts:141
AppLogger.ts:141 [16:20:21] [AccountReadyWork] [Warn] Failed to refresh premium state after READY RestRuntimeUnavailableError: A relative REST request requires an active instance runtime
    at Object.dispatchAccountScoped (RestTransport.ts:260:26)
    at Object.dispatch (RestTransport.ts:240:15)
    at Object.get (RestTransport.ts:280:15)
at PremiumCommands.ts:90:25
    at Generator.next (<anonymous>)
    at u (a51a01fb2309e813.js:9:312770)
    at s (a51a01fb2309e813.js:9:312967)
log @ AppLogger.ts:141 Bonus: Error: [MobX] minified error nr: 32 ObservableObject.key,get directMessagesDisabled(){return this.community.direct_messages_disabled}. See mobx.js.org/errors
    at i (/assets/7a750277fc989333.js:1:13257)
    at eE.get (/assets/7a750277fc989333.js:1:26160)
    at t9.getObservablePropValue_ (/assets/7a750277fc989333.js:1:53276)
    at Object.get (/assets/7a750277fc989333.js:1:57968)
at /assets/116f141f3081a4a1.js:1:2572 at /assets/6b5e68203fc145fe.js:1:482278 at /assets/6b5e68203fc145fe.js:1:481474
    at eR (/assets/7a750277fc989333.js:1:28363)
    at eY.track (/assets/7a750277fc989333.js:1:32954)
    at l (/assets/6b5e68203fc145fe.js:1:481457)

Comments

Sign in with Fluxer to comment and vote.

No comments yet.