Custom complication published via updateComplication() from background service doesn't reach watch face until app is opened/closed

Good day all

I have a watch-app type app (SDK 9.2.0, Instinct 3 AMOLED) that runs a ServiceDelegate background service every 30 minutes to fetch weather data and publish it as a custom complication (Complications.updateComplication(id, data)), declared via complications.xml with access="public".

What I'm seeing: overnight, the background service runs successfully — I've confirmed this by checking Application.Storage values (which the app's own foreground view reads independently), and they're correctly updated with fresh data. However, the watch face consuming the complication continues to display stale data from the previous update, sometimes for hours and well past when I can confirm the background fetch succeeded.

The interesting part: if I open the app itself, its own screen immediately shows the correct, fresh data (since it reads directly from Storage, not from the complication). It's only after I exit the app that the watch face's complication updates to the correct values — even though my code doesn't call updateComplication() on app startup or on exit; the only place it's called is inside onBackgroundData(), which already ran successfully hours earlier.

This strongly suggests updateComplication() calls made during genuine background execution are received/queued by the system but not reliably flushed to consuming watch faces until the publishing app has a foreground session — at which point something in that lifecycle transition triggers the actual sync.

Relevant code (simplified):

monkeyc
(:background)
function onBackgroundData(data) {
// ... merge logic, Storage.setValue(...) ...
try {
Complications.updateComplication(0, { :value => displayString, :shortLabel => "H/L" });
} catch (ex) {
System.println("Complication update error: " + ex.getErrorMessage());
}
}

No exception is ever thrown from this call.


Questions:

Is there a known/expected delay or additional sync step required for complications published from true background execution to actually reach subscribing watch faces?

Is there an API to explicitly force a complication sync/flush, similar to ComplicationDataSourceUpdateRequester on other platforms?

Regards