frontend-app-api: hand off finalized apps through callback

Replace the prepared app promise/snapshot finalization API with an onFinalized callback so bootstrap consumers can switch to the finalized app through a simple one-way handoff.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
This commit is contained in:
Patrik Oldsberg
2026-03-14 08:39:42 +01:00
parent 89f83827c9
commit 01d3c2ec0f
2 changed files with 10 additions and 7 deletions
+9 -6
View File
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { JSX, lazy, ReactNode, Suspense, useSyncExternalStore } from 'react';
import { JSX, lazy, ReactNode, Suspense, useEffect, useState } from 'react';
import {
ConfigApi,
coreExtensionData,
@@ -150,11 +150,14 @@ function PreparedAppRoot(props: {
preparedApp: PreparedSpecializedApp;
}): JSX.Element {
const bootstrapApp = props.preparedApp.getBootstrapApp();
const finalizedApp: FinalizedSpecializedApp | undefined =
useSyncExternalStore(
props.preparedApp.subscribe,
props.preparedApp.getFinalizedApp,
);
const [finalizedApp, setFinalizedApp] = useState<
FinalizedSpecializedApp | undefined
>();
useEffect(
() => props.preparedApp.onFinalized(setFinalizedApp),
[props.preparedApp],
);
if (!finalizedApp) {
return bootstrapApp.tree.root.instance!.getData(