Zotero 11.0-beta.4 on macOS: app runs with no window after auto-update
**Summary**
After Zotero 11 beta installs an automatic update on macOS, the updater relaunches Zotero but the app never opens a window. The process stays alive and fully initialized (profile, database, and plug-ins load; it is not hung), but it has zero windows. Clicking the Dock icon only activates the existing headless process, so no window appears. Fully quitting Zotero and launching it again restores the window.
The update itself completed successfully and the installation is not corrupted; this is only about the post-update relaunch.
**Environment**
- Zotero 11.0-beta.4+045d52044 (BuildID 20261109124800), beta channel, arm64
- Updated from 11.0-beta.3+212a7d6a
- macOS 27.2 (26B123)
**Steps to reproduce**
1. Run Zotero 11 beta on macOS with automatic updates enabled.
2. Allow an update to download and ing (or choose "Restart to Update").
3. Let Zotero restart so the updater can perform the replace request.
4. After the updater finishes and rw appears.
5. Clicking the Dock icon does nothing because the process is already running.
6. Quit Zotero completely and reopeears normally.
**Evidence**
Updater log (`~/Library/Caches/Zotetero/updates/last-update.log`):
```
2026-11-12 17:14:41+0800: Performing a staged update
2026-11-12 17:14:49+0800: succeeded
2026-11-12 17:14:49+0800: Writing status to file: applied
...
2026-11-12 17:20:12+0800: sUpdateSilently=true
2026-11-12 17:20:12+0800: Performin
2026-11-12 17:20:12+0800: succeeded
2026-11-12 17:20:12+0800: Writing s
2026-11-12 17:20:12+0800: Running LaunchCallbackAndPostProcessApps
2026-11-12 17:20:12+0800: Launching
```
The relaunched process (started at 17:20:12, parent `launchd`) had:
```
MOZ_APP_SILENT_START=1
MOZ_APP_RESTART=1
MOZ_LAUNCHED_CHILD=1
```
and zero windows:
```
$ osascript -e 'tell application "Sess "zotero" to count windows'
0
```
The process was not hung: sampling the normal `NSApplication` eventloop, and the profile and plug-ins loaded normally.
After quitting and relaunching, the process had one window and none of the environment variables
above:
```
$ osascript -e 'tell application "System Events" to tell process "zotero" to count windows'
1
$ ps eww -p | tr ' ' '\n' | grep '^MOZ_'
(no output)
```
**Likely cause**
`Services.startup.wasSilentlyStarted` is true when `MOZ_APP_SILENT_START` is set to a non-empty
value. Zotero's `modules/BrowserConde `omni.ja`) contains this branch:
```js
if (
cmdLine.state == Ci.nsICommandLin
Services.startup.wasSilentlyStarted
) {
// If we are starting up in silent mode, don't open a window. ...
return;
}
```
The updater itself ran with `sUpdat the updater's relaunch helperpasses the updater's environment to the new app (`LaunchMacApp`), and `LaunchCallbackApp` sets
`MOZ_LAUNCHED_CHILD=1` but does notRT`. As a result, the final appinherits the silent-start marker that was intended for the intermediate update process and
suppresses its window.
This appears to be an update-relaunfile, data, or plug-in problem.
**Workaround**
Quit the headless process completel
```bash
osascript -e 'tell application "Zotero" to quit'
sleep 2
open -a Zotero
```
or:
```bash
killall zotero && open -a Zotero
```
This restores the window, but must ected update.
**Questions**
- Is this a known regression in Zot
- Would the right fix be to clear `MOZ_APP_SILENT_START` before the updater relaunches the app, or to treat the post-update relaunctero?
- I can provide additional logs or a debug ID if useful; note that Zotero runs headless until it is restarted.
After Zotero 11 beta installs an automatic update on macOS, the updater relaunches Zotero but the app never opens a window. The process stays alive and fully initialized (profile, database, and plug-ins load; it is not hung), but it has zero windows. Clicking the Dock icon only activates the existing headless process, so no window appears. Fully quitting Zotero and launching it again restores the window.
The update itself completed successfully and the installation is not corrupted; this is only about the post-update relaunch.
**Environment**
- Zotero 11.0-beta.4+045d52044 (BuildID 20261109124800), beta channel, arm64
- Updated from 11.0-beta.3+212a7d6a
- macOS 27.2 (26B123)
**Steps to reproduce**
1. Run Zotero 11 beta on macOS with automatic updates enabled.
2. Allow an update to download and ing (or choose "Restart to Update").
3. Let Zotero restart so the updater can perform the replace request.
4. After the updater finishes and rw appears.
5. Clicking the Dock icon does nothing because the process is already running.
6. Quit Zotero completely and reopeears normally.
**Evidence**
Updater log (`~/Library/Caches/Zotetero/updates/last-update.log`):
```
2026-11-12 17:14:41+0800: Performing a staged update
2026-11-12 17:14:49+0800: succeeded
2026-11-12 17:14:49+0800: Writing status to file: applied
...
2026-11-12 17:20:12+0800: sUpdateSilently=true
2026-11-12 17:20:12+0800: Performin
2026-11-12 17:20:12+0800: succeeded
2026-11-12 17:20:12+0800: Writing s
2026-11-12 17:20:12+0800: Running LaunchCallbackAndPostProcessApps
2026-11-12 17:20:12+0800: Launching
```
The relaunched process (started at 17:20:12, parent `launchd`) had:
```
MOZ_APP_SILENT_START=1
MOZ_APP_RESTART=1
MOZ_LAUNCHED_CHILD=1
```
and zero windows:
```
$ osascript -e 'tell application "Sess "zotero" to count windows'
0
```
The process was not hung: sampling the normal `NSApplication` eventloop, and the profile and plug-ins loaded normally.
After quitting and relaunching, the process had one window and none of the environment variables
above:
```
$ osascript -e 'tell application "System Events" to tell process "zotero" to count windows'
1
$ ps eww -p | tr ' ' '\n' | grep '^MOZ_'
(no output)
```
**Likely cause**
`Services.startup.wasSilentlyStarted` is true when `MOZ_APP_SILENT_START` is set to a non-empty
value. Zotero's `modules/BrowserConde `omni.ja`) contains this branch:
```js
if (
cmdLine.state == Ci.nsICommandLin
Services.startup.wasSilentlyStarted
) {
// If we are starting up in silent mode, don't open a window. ...
return;
}
```
The updater itself ran with `sUpdat the updater's relaunch helperpasses the updater's environment to the new app (`LaunchMacApp`), and `LaunchCallbackApp` sets
`MOZ_LAUNCHED_CHILD=1` but does notRT`. As a result, the final appinherits the silent-start marker that was intended for the intermediate update process and
suppresses its window.
This appears to be an update-relaunfile, data, or plug-in problem.
**Workaround**
Quit the headless process completel
```bash
osascript -e 'tell application "Zotero" to quit'
sleep 2
open -a Zotero
```
or:
```bash
killall zotero && open -a Zotero
```
This restores the window, but must ected update.
**Questions**
- Is this a known regression in Zot
- Would the right fix be to clear `MOZ_APP_SILENT_START` before the updater relaunches the app, or to treat the post-update relaunctero?
- I can provide additional logs or a debug ID if useful; note that Zotero runs headless until it is restarted.
Upgrade Storage