background page is only executed once when the app is loaded into memory. if the user closes the window he won't be able to launch it again for some non-deterministic time, until Chrome runtime removes it from memory. UI creation code *usually* is attached to a lifecycle event - almost always onLaunched.

I never saw code creating a window in the global context of background page and I think there could cause some other corner case issues. Is there a reason why you run window.create outside of the onLaunched listener?