Studio Native still has to dynamically import the raw Playground client module and call startPlaygroundWeb during browser preview boot. That keeps a product consumer coupled to Playground internals instead of the Codebox public browser SDK.\n\nNeeded contract:\n- A versioned browser SDK method, e.g. window.wpCodeboxBrowser.v1.startBrowserPreview(...) or equivalent, that accepts the Codebox preview boot DTO/session boot contract and returns the browser client/session handle currently returned by startPlaygroundWeb.\n- The product should not need to read client_module_url or import @wp-playground/client directly.\n\nConsumer blocker:\n- studio-native assets/preview/codebox-client.ts cannot remove the dynamic startPlaygroundWeb import until this contract exists.
Studio Native still has to dynamically import the raw Playground client module and call startPlaygroundWeb during browser preview boot. That keeps a product consumer coupled to Playground internals instead of the Codebox public browser SDK.\n\nNeeded contract:\n- A versioned browser SDK method, e.g. window.wpCodeboxBrowser.v1.startBrowserPreview(...) or equivalent, that accepts the Codebox preview boot DTO/session boot contract and returns the browser client/session handle currently returned by startPlaygroundWeb.\n- The product should not need to read client_module_url or import @wp-playground/client directly.\n\nConsumer blocker:\n- studio-native assets/preview/codebox-client.ts cannot remove the dynamic startPlaygroundWeb import until this contract exists.