I'm confident the listener is registered and retained. The pointer values of all involved FFI structs (stream, controller, task handle) are valid and stable.
I'm not sure if I'm missing a setup step, or if the Sliding Sync list needs to be explicitly created in a way the current bindings don't expose (e.g., .addList()).
Not sure if anything in here is helpful. These logs show a user login, sync timeout (happens intermittenly), refresh and then full sync completion. Often times that first timeout doesnt happen, so i dont believe it is related to that. I'll also note that sometimes when I create a room on the web client, ill see the app show an error and SDK sync state move to 3.
(NOBRIDGE) LOG [MatrixServiceV2] initClient called
(NOBRIDGE) LOG [MatrixServiceV2] Found saved session, attempting to restore
(NOBRIDGE) LOG [MatrixServiceV2] Building client...
(NOBRIDGE) LOG [MatrixServiceV2] Restoring session...
(NOBRIDGE) LOG [MatrixServiceV2] Session restored successfully
(NOBRIDGE) LOG [SyncServiceManager] Initializing sync service builder...
(NOBRIDGE) LOG [SyncServiceManager] Configuring UTD hook...
(NOBRIDGE) LOG [AppNavigator] Rendering with states: {"initialLoading": false, "isNewAccount": false, "isRecoveryMode": false, "loading": false, "otpVerified": true, "syncState": "IDLE", "syncTimeout": false, "user": "7a152836-cea3-48e9-b7d1-052b7ec885e1"}
(NOBRIDGE) LOG [SyncServiceManager] Finishing sync service setup...
(NOBRIDGE) LOG [SyncServiceManager] Setting up state listener…
(NOBRIDGE) LOG [SyncServiceManager] Starting sync service...
(NOBRIDGE) LOG SS version: Native
(NOBRIDGE) LOG [SyncServiceManager] Setting up room list sync indicator...
(NOBRIDGE) LOG [SyncServiceManager] Sync service started successfully
(NOBRIDGE) LOG [SyncServiceManager] Joined rooms: ["!fhHppWMhhnVlJJGZWI:commune-server.ahmr.it", "!mqbrXiNCyhENpySlUK:commune-server.ahmr.it", "!seoHqUTDtbBqufueqv:commune-server.ahmr.it", "!xaWcRDqpxXsRajHShw:commune-server.ahmr.it"]
(NOBRIDGE) LOG [SyncServiceManager] SDK SyncServiceState changed: 1
(NOBRIDGE) LOG [SyncServiceManager] SDK SyncServiceState received: 1
(NOBRIDGE) LOG [SyncServiceManager] App sync state changing: IDLE -> PREPARING
(NOBRIDGE) LOG [AppNavigator] Rendering with states: {"initialLoading": false, "isNewAccount": false, "isRecoveryMode": false, "loading": false, "otpVerified": true, "syncState": "PREPARING", "syncTimeout": false, "user": "7a152836-cea3-48e9-b7d1-052b7ec885e1"}
(NOBRIDGE) LOG [RoomsProvider] Result object {Symbol(pointer): 12970367463256896160n, Symbol(destructor): {}, Symbol(typeName): "RoomListEntriesWithDynamicAdaptersResult"}
(NOBRIDGE) LOG [RoomsProvider] result.entriesStream: [Function entriesStream]
(NOBRIDGE) LOG [RoomsProvider] entriesStream() returned: {Symbol(pointer): 12970367465941423392n, Symbol(destructor): {}, Symbol(typeName): "TaskHandle"}
(NOBRIDGE) LOG [SYNC-heartbeat] 1
(NOBRIDGE) LOG [SYNC-heartbeat] 1
(NOBRIDGE) LOG [AppNavigator] Sync timeout reached, proceeding anyway
(NOBRIDGE) LOG [AppNavigator] Rendering with states: {"initialLoading": false, "isNewAccount": false, "isRecoveryMode": false, "loading": false, "otpVerified": true, "syncState": "PREPARING", "syncTimeout": true, "user": "7a152836-cea3-48e9-b7d1-052b7ec885e1"}
(NOBRIDGE) LOG [SYNC-heartbeat] 1
(NOBRIDGE) LOG [SYNC-heartbeat] 1
(NOBRIDGE) LOG [AppNavigator] Rendering with states: {"initialLoading": false, "isNewAccount": false, "isRecoveryMode": false, "loading": false, "otpVerified": true, "syncState": "PREPARING", "syncTimeout": false, "user": "7a152836-cea3-48e9-b7d1-052b7ec885e1"}
(NOBRIDGE) LOG [AuthProviderV2] Unmounting. Unsubscribing auth listener.
(NOBRIDGE) LOG [MatrixServiceV2] initClient called
(NOBRIDGE) LOG [AuthProviderV2] Mounting. Setting initialLoading to true.
(NOBRIDGE) LOG Initializing app dependencies...
(NOBRIDGE) LOG [AuthProviderV2] onAuthStateChange: Event: INITIAL_SESSION, New Session User: 7a152836-cea3-48e9-b7d1-052b7ec885e1
(NOBRIDGE) LOG [AuthProviderV2] Initial session fetched: User 7a152836-cea3-48e9-b7d1-052b7ec885e1 (14243526473)
(NOBRIDGE) LOG [RoomsProvider] Result object {Symbol(pointer): 12970367463257019680n, Symbol(destructor): {}, Symbol(typeName): "RoomListEntriesWithDynamicAdaptersResult"}
(NOBRIDGE) LOG [RoomsProvider] result.entriesStream: [Function entriesStream]
(NOBRIDGE) LOG [RoomsProvider] entriesStream() returned: {Symbol(pointer): 12970367465941498512n, Symbol(destructor): {}, Symbol(typeName): "TaskHandle"}
(NOBRIDGE) LOG [AppNavigator] Rendering with states: {"initialLoading": false, "isNewAccount": false, "isRecoveryMode": false, "loading": false, "otpVerified": true, "syncState": "PREPARING", "syncTimeout": false, "user": "7a152836-cea3-48e9-b7d1-052b7ec885e1"}
(NOBRIDGE) LOG [MatrixServiceV2] Found saved session, attempting to restore
(NOBRIDGE) LOG [MatrixServiceV2] Building client...
(NOBRIDGE) LOG App dependencies initialized successfully.
(NOBRIDGE) LOG [MatrixServiceV2] Restoring session...
(NOBRIDGE) LOG [MatrixServiceV2] Session restored successfully
(NOBRIDGE) LOG [SyncServiceManager] Initializing sync service builder...
(NOBRIDGE) LOG [SyncServiceManager] Configuring UTD hook...
(NOBRIDGE) LOG [AppNavigator] Rendering with states: {"initialLoading": false, "isNewAccount": false, "isRecoveryMode": false, "loading": false, "otpVerified": true, "syncState": "IDLE", "syncTimeout": false, "user": "7a152836-cea3-48e9-b7d1-052b7ec885e1"}
(NOBRIDGE) LOG [SyncServiceManager] Finishing sync service setup...
(NOBRIDGE) LOG [SyncServiceManager] Setting up state listener…
(NOBRIDGE) LOG [SyncServiceManager] Starting sync service...
(NOBRIDGE) LOG SS version: Native
(NOBRIDGE) LOG [SyncServiceManager] Setting up room list sync indicator...
(NOBRIDGE) LOG [SyncServiceManager] Sync service started successfully
(NOBRIDGE) LOG [SyncServiceManager] Joined rooms: ["!fhHppWMhhnVlJJGZWI:commune-server.ahmr.it", "!mqbrXiNCyhENpySlUK:commune-server.ahmr.it", "!seoHqUTDtbBqufueqv:commune-server.ahmr.it", "!xaWcRDqpxXsRajHShw:commune-server.ahmr.it"]
(NOBRIDGE) LOG [SyncServiceManager] SDK SyncServiceState changed: 1
(NOBRIDGE) LOG [SyncServiceManager] SDK SyncServiceState received: 1
(NOBRIDGE) LOG [SyncServiceManager] App sync state changing: IDLE -> PREPARING
(NOBRIDGE) LOG [AppNavigator] Rendering with states: {"initialLoading": false, "isNewAccount": false, "isRecoveryMode": false, "loading": false, "otpVerified": true, "syncState": "PREPARING", "syncTimeout": false, "user": "7a152836-cea3-48e9-b7d1-052b7ec885e1"}
(NOBRIDGE) LOG [RoomsProvider] Result object {Symbol(pointer): 12970367463256974240n, Symbol(destructor): {}, Symbol(typeName): "RoomListEntriesWithDynamicAdaptersResult"}
(NOBRIDGE) LOG [RoomsProvider] result.entriesStream: [Function entriesStream]
(NOBRIDGE) LOG [RoomsProvider] entriesStream() returned: {Symbol(pointer): 12970367465941555104n, Symbol(destructor): {}, Symbol(typeName): "TaskHandle"}
(NOBRIDGE) LOG [SyncServiceManager] Room list sync indicator: SHOW
(NOBRIDGE) LOG [SyncServiceManager] Room list service state updated: SettingUp
(NOBRIDGE) LOG [SyncServiceManager] Room list sync indicator: HIDE
(NOBRIDGE) LOG [SyncServiceManager] Sync indicator shows sync complete, promoting to LIVE
(NOBRIDGE) LOG [SyncServiceManager] App sync state changing: PREPARING -> LIVE
(NOBRIDGE) LOG [AppNavigator] Rendering with states: {"initialLoading": false, "isNewAccount": false, "isRecoveryMode": false, "loading": false, "otpVerified": true, "syncState": "LIVE", "syncTimeout": false, "user": "7a152836-cea3-48e9-b7d1-052b7ec885e1"}
(NOBRIDGE) LOG [MatrixServiceV2] self-DM lookup for @7a152836-cea3-48e9-b7d1-052b7ec885e1:commune-server.ahmr.it
(NOBRIDGE) LOG [MatrixServiceV2] found existing self-DM: !fhHppWMhhnVlJJGZWI:commune-server.ahmr.it
(NOBRIDGE) LOG [AppNavigator] Rendering with states: {"initialLoading": false, "isNewAccount": false, "isRecoveryMode": false, "loading": false, "otpVerified": true, "syncState": "LIVE", "syncTimeout": false, "user": "7a152836-cea3-48e9-b7d1-052b7ec885e1"}
(NOBRIDGE) LOG [RoomsProvider] Result object {Symbol(pointer): 12970367463257045408n, Symbol(destructor): {}, Symbol(typeName): "RoomListEntriesWithDynamicAdaptersResult"}
(NOBRIDGE) LOG [RoomsProvider] result.entriesStream: [Function entriesStream]
(NOBRIDGE) LOG [RoomsProvider] entriesStream() returned: {Symbol(pointer): 12970367465941548864n, Symbol(destructor): {}, Symbol(typeName): "TaskHandle"}
(NOBRIDGE) LOG [AppNavigator] Rendering with states: {"initialLoading": false, "isNewAccount": false, "isRecoveryMode": false, "loading": false, "otpVerified": true, "syncState": "LIVE", "syncTimeout": false, "user": "7a152836-cea3-48e9-b7d1-052b7ec885e1"}
@Johennes im having a hard time getting room list diffs to show up through my sync. While everything appears to be setup correctly, sync state goes live, i can get a room list from client.rooms, for whatever reason i can't seem to get any diffs to come through. i am using app.element.io to login on the desktop with my test user from the app, and I create new rooms, join rooms, and yet no diffs. I have tried so many different approaches I thought it would be worth reaching out to see if there is something I am missing. Details below
✅ The setup
SlidingSyncVersion.Native()with a supported Synapse 1.114+ homeserver.d.tsfiles, with no hand-written glueProxy()version)client.restoreSession()after a first-timeclient.login()or admin-API loginsyncService.start():🧭 Observed behavior
SyncServiceState.LIVEand see:RoomListServiceState.RunningSync indicator: HIDEclient.rooms()RoomListEntriesListener.onUpdate()never firesEven after:
I'm confident the listener is registered and retained. The pointer values of all involved FFI structs (stream, controller, task handle) are valid and stable.
🔍 What we’ve tried
client.rooms()to confirm room visibility.setVisibleRange(...)is called beforestart()🛠️ What we’re looking for
I'm not sure if I'm missing a setup step, or if the Sliding Sync list needs to be explicitly created in a way the current bindings don't expose (e.g.,
.addList()).📖 Logs
Not sure if anything in here is helpful. These logs show a user login, sync timeout (happens intermittenly), refresh and then full sync completion. Often times that first timeout doesnt happen, so i dont believe it is related to that. I'll also note that sometimes when I create a room on the web client, ill see the app show an error and SDK sync state move to 3.