Frontmatter
| id | 6597 |
| title | Calendar - Basic - Windows Browsers (all of them) - Maximum Call Stack Size Exceeded error |
| state | Closed |
| labels | bughelp wantedno auto close |
| assignees | [] |
| createdAt | Mar 30, 2025, 8:11 PM |
| updatedAt | Apr 6, 2025, 11:30 PM |
| githubUrl | https://github.com/neomjs/neo/issues/6597 |
| author | cgauthier |
| commentsCount | 4 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Apr 6, 2025, 11:30 PM |
Calendar - Basic - Windows Browsers (all of them) - Maximum Call Stack Size Exceeded error

@cgauthier thanks for opening the ticket! sadly, I can not reproduce it on Mac OS (it works locally as well as inside the deployed version: https://neomjs.com/examples/calendar/basic/index.html )
count = 1
/**
* Returns the merged data
* @param {Object} data=this.getPlainData()
* @returns {Object} data
*/
getHierarchyData(data=this.getPlainData()) {
let me = this,
parent = me.getParent();
console.log(me.id, parent, me.count);
me.count++;
if (parent) {
return {
...parent.getHierarchyData(data),
...me.getPlainData()
}
}
return me.getPlainData()
}
If I recall it correctly, you got more method calls than I do => for me it is 22x of getHierarchyData().
Since parent is always null, it leaves us with 2 options where the issue most likely happens.
- Inside
getPlainData() onDataPropertyChange()gets called more often on windows
I added the "help wanted" label to this ticket, since I don't have windows installed here => I can not verify that a hotfix candidate actually resolves it.

getPlainData(data=this.data) {
let plainData = {};
console.log(Object.entries(data).length);
Object.entries(data).forEach(([key, value]) => {
if (Neo.typeOf(value) === 'Object') {
plainData[key] = this.getPlainData(value)
} else {
plainData[key] = value
}
});
return plainData
}
This logs 22x:
which looks fine: https://github.com/neomjs/neo/blob/dev/src/calendar/view/MainContainerStateProvider.mjs
12 top level properties inside data, 4 properties inside data.events, 2 properties inside data.timeFormat.

onDataPropertyChange(key, value, oldValue) {
let me = this,
binding = me.bindings && Neo.ns(key, false, me.bindings),
component, config, hierarchyData, stateProvider;
console.log(key, value);
// ...
}
this part also looks fine on Mac OS. onDataPropertyChange() only gets called once for each data property.

as it turned out, this was not a windows issue, but UTC vs later starting timezones (e.g. USA). thanks a lot @cgauthier for the debugging session!
while it is working now, it needs follow up tickets.
When trying to load the Calendar demo (basic) in any windows browser, we get a maximum call stack size exceeded error which blocks the UI from rendering the component.
We suspect this code to to be the problem.
getHierarchyData(data=this.getPlainData()) { let me = this, parent = me.getParent(); console.log("getHierarchyData - parent:"); console.log(parent); if (parent) { return { ...parent.getHierarchyData(data), ...me.getPlainData() } } return me.getPlainData() }