Skip to main content
Question

Undocumented Change to monday.listen function in the SDK?

  • November 6, 2025
  • 0 replies
  • 15 views

Hi Everyone,

 

This is my first time posting here.

 

I have a question relating to a behavioral change I’ve noticed in the monday.listen function, which I was using in an app I am developing for concurrency management.

 

Objective

 

Use monday.listen to facilitate concurrency management in an Item View feature. This would enable multiple users to edit the same item without a "last write wins" condition.

 

Previous Success

 

In early September 2025, I successfully configured a listener in my app that would retrieve updates to the item and perform a reconciliation process.

I validated this by performing a "two-tab" test:

  1. Open the same item and load the app in two separate browser tabs (Tab A and Tab B).

  2. Submit a change to the item in Tab A.

  3. Receive the change_column_value event in Tab B, display a notification, and reconcile the data.

This is the code pattern that was working:

const handleEvents = (res) => {
// Note: My real code checked the event type, but the
// key point is that I *was* receiving the event cross-tab.
if (res.data.type === 'change_column_values' && res.data.itemIds.includes(itemId)) {
monday.api(`query { items (ids: [${itemId}]) { name column_values { id type text value } } }`)
.then(itemRes => {
if (itemRes.data.items[0]) {
reconcileData(itemRes.data.items[0]);
}
});
}
};

const eventsListener = monday.listen("events", handleEvents);

 

Current Troubleshooting

 

Because this listener logic was embedded in a much larger app, I created a second, simple app with the explicit goal of validating the monday.listen function. Its only function is to log all events to the browser’s console.

Here is the complete validation app's code:

import React, { useEffect } from 'react';
import mondaySdk from "monday-sdk-js";

const monday = mondaySdk();
monday.setApiVersion("2024-10");

function App() {
useEffect(() => {
// 1. Define our single event callback
const eventCallback = res => {
console.log("EVENT RECEIVED:", res);
};

// 2. Listen for "events"
console.log("Subscribing to 'events'...");
monday.listen("events", eventCallback);

}, []); // Empty dependency array, runs only once

// Render nothing. We are only watching the console.
return null;
}

export default App;

 

Results

 

I used this new validation app to perform my tests again:

  • Two-Tab Test: I opened the Item View (with the app) in Tab A. In Tab B, I modified the same item.

    • Creating a new item (works): new_item event is logged in Tab A's console.

    • Changing a column value (fails): change_column_value event is NOT logged in Tab A's console.

  • Same-Tab Test: I opened the Item View (with the app) and its console. Then, in the same tab, I clicked on the board behind the panel and edited the item.

    • Changing a column value (works): change_column_value event IS logged in the app's console.

This suggests that since I last tested this, change_column_value events are no longer broadcast across tabs, while new_item events still are. I checked the changelogs but didn't see a note on this.

 

My Questions

  1. Has anyone else run into this?

  2. Is this a conscious, permanent change to optimize performance (i.e., to reduce "chatty" events)?

  3. If so, is there any way to restore or opt-in to cross-tab broadcasting for change_column_value?


Any recommendations or insights into this would be greatly appreciated. Hopefully, I provided enough detail!

0 replies

Be the first to reply!