nextcloud / nextcloud/calendar
[Bug]: ProposalEditor renders before CalDAV store initializes — location field resets, selectedProposal is null
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 1.2k
- Forks
- 332
- Avg merge
- 16h 13m
- Merged PRs (30d)
- 137
Description
Steps to reproduce
- Open Nextcloud calendar
- Click the + next to Meeting Proposals in the left sidebar
- Fill in title, description, location duration and participants
- Click on any field eg. duration after setting the location
- Location resets to empty "No Location"
- Open an existing proposal to view responses. Second crash occurs.
Expected behavior
Location field retains its value when interacting with other fields
Proposal view renders without crashing
Actual behavior
Location is silently cleared when clicking other fields
ProposalEditor crashes with two Vue render errorrs
`[ERROR] calendar: [Vue error]: Error in render:
TypeError: can't access property "scheduleDefaultCalendarUrl",
this.currentUserPrincipal is undefined
ProposalEditor.vue:587
[ERROR] calendar: [Vue error]: Error in render:
TypeError: can't access property "title", e.selectedProposal is null
ProposalEditor.vue:967`
Calendar app version
6.2.2
CalDAV-clients used
None - web interface only
Browser
Firefox 149.0.2
Client operating system
Windows
Server operating system
Alpine Linux
Web server
Apache
Database engine version
MariaDB
PHP engine version
PHP 8.4
Nextcloud version
33
Updated from an older installed version or fresh install
None
List of activated apps
- activity: 6.0.0
- admin_audit: 1.23.0
- admincockpit: 1.2.3
- announcementcenter: 7.3.0
- app_api: 33.0.0
- audiowaveform_preview_provider: 0.3.0
- bruteforcesettings: 6.0.0
- calendar: 6.2.2
- circles: 33.0.0
- cloud_federation_api: 1.17.0
- comments: 1.23.0
- contacts: 8.4.4
- contactsinteraction: 1.14.1
- dashboard: 7.13.0
- dashlink: 1.2.1
- dav: 1.36.0
- deck: 1.17.1
- done: 1.7.0
- doom_nextcloud: 1.0.6
- drawio: 4.2.3
- federatedfilesharing: 1.23.0
- federation: 1.23.0
- files: 2.5.0
- files_3dmodelviewer: 0.0.16
- files_accesscontrol: 4.0.0
- files_confidential: 4.1.0
- files_downloadactivity: 1.18.1
- files_downloadlimit: 5.1.0
- files_external: 1.25.1
- files_reminders: 1.6.0
- files_sharing: 1.25.2
- files_trashbin: 1.23.0
- files_versions: 1.26.0
- firstrunwizard: 6.0.0
- forms: 5.2.7
- integration_miro: 1.0.8
- integration_overleaf: 2.0.1
- logreader: 6.0.0
- lookup_server_connector: 1.21.0
- mail: 5.7.11
- nextcloud_announcements: 5.0.0
- notes: 4.13.1
- notifications: 6.0.0
- oauth2: 1.21.0
- password_policy: 5.0.0
- photos: 6.0.0
- privacy: 5.0.0
- profile: 1.2.0
- provisioning_api: 1.23.0
- recommendations: 6.0.0
- related_resources: 4.0.0
- richdocuments: 10.1.2
- roll_dice_bot: 1.0.0
- serverinfo: 5.0.0
- settings: 1.16.0
- sharebymail: 1.23.0
- solitaire: 1.0.0
- spreed: 23.0.3
- support: 5.0.0
- survey_client: 5.0.0
- systemtags: 1.23.0
- tables: 2.0.1
- text: 7.0.0
- theming: 2.8.0
- twofactor_backupcodes: 1.22.0
- twofactor_nextcloud_notification: 7.0.0
- twofactor_totp: 15.0.0
- updatenotification: 1.23.0
- user_status: 1.13.0
- viewer: 6.0.0
- weather_status: 1.13.0
- webhook_listeners: 1.5.0
- whiteboard: 1.5.7
- workflowengine: 2.15.0
Nextcloud configuration
{
"system": {
"htaccess.RewriteBase": "/",
"memcache.local": "\\OC\\Memcache\\APCu",
"apps_paths": [
{
"path": "/var/www/html/apps",
"url": "/apps",
"writable": false
},
{
"path": "/var/www/html/custom_apps",
"url": "/custom_apps",
"writable": true
}
],
"upgrade.disable-web": true,
"instanceid": "***REMOVED***",
"passwordsalt": "***REMOVED***",
"secret": "***REMOVED***",
"trusted_domains": [
"REMOVED"
],
"datadirectory": "***REMOVED***",
"dbtype": "mysql",
"version": "33.0.2.2",
"overwrite.cli.url": "REMOVED",
"overwriteprotocol": "https",
"trusted_proxies": "***REMOVED***",
"dbname": "***REMOVED***",
"dbhost": "***REMOVED***",
"dbport": "",
"dbtableprefix": "oc_",
"mysql.utf8mb4": true,
"dbuser": "***REMOVED***",
"dbpassword": "***REMOVED***",
"installed": true,
"loglevel": 2,
"maintenance": false,
"mail_from_address": "***REMOVED***",
"mail_smtpmode": "smtp",
"mail_sendmailmode": "smtp",
"mail_domain": "***REMOVED***",
"mail_smtphost": "***REMOVED***",
"mail_smtpport": "465",
"mail_smtpauth": true,
"mail_smtpname": "***REMOVED***",
"mail_smtppassword": "***REMOVED***",
"app_install_overwrite": [
"files_downloadactivity",
"solitaire",
"multiboards"
]
}
}
Web server error log
Log file
`{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T20:16:22+00:00","remoteAddr":"","user":"--","app":"no app in context","method":"","url":"--","scriptName":"/var/www/html/cron.php","message":"Skipping updater backup clean-up - could not find updater backup folder /var/www/html/data/updater-[REMOVED]/backups","userAgent":"--","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T20:29:19+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T20:39:45+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:16:56+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:23:40+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/apps/tables/table","scriptName":"/index.php","message":"Undefined array key \"sort\" at /var/www/html/custom_apps/tables/lib/Model/ViewUpdateInput.php#89","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:23:54+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/apps/notes/notes","scriptName":"/index.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:24:19+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:24:41+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T21:24:54+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T22:23:26+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":3,"time":"2026-04-17T22:33:22+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"jsresourceloader","method":"GET","url":"/settings/user/workflow","scriptName":"/index.php","message":"Could not find resource core/js/systemtags.js to load","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T22:33:34+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"no app in context","method":"GET","url":"/settings/admin/groupware","scriptName":"/index.php","message":"Invalid google_oauth_client_id data provided to provideInitialState by mail","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T22:33:34+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"no app in context","method":"GET","url":"/settings/admin/groupware","scriptName":"/index.php","message":"Invalid microsoft_oauth_client_id data provided to provideInitialState by mail","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T22:39:53+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T22:40:01+00:00","remoteAddr":"","user":"--","app":"no app in context","method":"","url":"--","scriptName":"/var/www/html/cron.php","message":"Skipping updater backup clean-up - could not find updater backup folder /var/www/html/data/updater-[REMOVED]/backups","userAgent":"--","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T23:05:32+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}
{"reqId":"[REMOVED]","level":2,"time":"2026-04-17T23:05:33+00:00","remoteAddr":"[REMOVED]","user":"[REMOVED]","app":"PHP","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v1/widgets","scriptName":"/ocs/v2.php","message":"Undefined array key \"node\" at /var/www/html/custom_apps/notes/lib/Service/NoteUtil.php#201","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0","version":"33.0.2.2"}`
Browser log
`Content-Security-Policy warnings 5
Content-Security-Policy: Ignoring "'self'" within script-src-elem: 'strict-dynamic' specified now
Content-Security-Policy: Ignoring "https://cdn.jsdelivr.net" within script-src-elem: 'strict-dynamic' specified now
Content-Security-Policy: Ignoring "https://[REMOVED]" within script-src-elem: 'strict-dynamic' specified now
Content-Security-Policy: Ignoring "blob:" within script-src-elem: 'strict-dynamic' specified now
Content-Security-Policy: Ignoring 'unsafe-eval' or 'wasm-unsafe-eval' inside "script-src-elem". now
[ERROR] calendar: [Vue error]: Error in render: TypeError: can't access property "scheduleDefaultCalendarUrl", this.currentUserPrincipal is undefined
Object { app: "calendar", uid: "[REMOVED]", level: 2, error: TypeError, vm: {…}, info: "render" }
index.mjs:47:17
@nextcloud/calendar-js app is using version 2.2025b of the timezone database index.mjs:251:13
Calendar API not initialized yet ProposalEditor.vue:587:1
[Miro] standalone modal is ready integration_miro-standalone.mjs:2:1539
Initializing unified search plugin-filters from talk search.js:22:10
[WARN] @nextcloud/vue: You need to fill either the text or the ariaLabel props in the button component.
Object { uid: "[REMOVED]", app: "@nextcloud/vue", level: 2, text: undefined, ariaLabel: null, instance: {…} }
index.mjs:44:17
[WARN] @nextcloud/vue: You need to fill either the text or the ariaLabel props in the button component.
Object { uid: "[REMOVED]", app: "@nextcloud/vue", level: 2, text: undefined, ariaLabel: null, instance: {…} }
index.mjs:44:17
Notifications permissions granted NotificationsApp.vue:449:13
Polling interval updated to 30000 NotificationsApp.vue:412:12
Started background fetcher as session_keepalive is enabled NotificationsApp.vue:279:13
Got notification data, restoring default polling interval. NotificationsApp.vue:368:13
calendar home scanned
Array [ {…}, {…} ]
Array [ {…} ]
Array []
calendars.js:271:12
Skipping availability fetch for non-internal participant:
Object { id: Getter & Setter, name: Getter & Setter, address: Getter & Setter, attendance: Getter & Setter, status: Getter & Setter, realm: Getter & Setter, … }
ProposalEditor.vue:967:1
(repeated 5 times on initial load)
This page is in Quirks Mode. Page layout may be impacted. For Standards Mode use "<!DOCTYPE html>". blank
[ERROR] calendar: [Vue error]: Error in render: TypeError: can't access property "title", e.selectedProposal is null
Object { app: "calendar", uid: "[REMOVED]", level: 2, error: TypeError, vm: {…}, info: "render" }
index.mjs:47:17
Skipping availability fetch for non-internal participant:
Object { id: Getter & Setter, name: Getter & Setter, address: Getter & Setter, attendance: Getter & Setter, status: Getter & Setter, realm: Getter & Setter, … }
ProposalEditor.vue:967:1
(repeated 5 more times)`
Additional info
Root cause:
The log shows Calendar API not initialized yet at ProposalEditor.vue:587, followed by calendar home scanned appearing later. This confirms the component renders before the async CalDAV store resolves the user principal.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in ProposalEditor.vue, especially the render locations reported at lines 587 and 967, and reproduce the issue by creating a meeting proposal and opening an existing one. Trace when the CalDAV store provides currentUserPrincipal and selectedProposal relative to rendering. Done means the location remains populated while editing and the proposal view renders without either reported error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100