From 134fa4c18341a0c263210b33e54c7ff9fa34b7a3 Mon Sep 17 00:00:00 2001 From: Carolina Gonzalez Date: Wed, 13 Aug 2025 13:49:16 -0400 Subject: [PATCH 01/10] feat(apps): scaffold experimentation apps --- apps/dashboard/src/App.tsx | 13 +++++-------- apps/sdk-app/src/App.tsx | 19 +++++++++++++------ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/apps/dashboard/src/App.tsx b/apps/dashboard/src/App.tsx index 4c8ac0dbc..6c20eb758 100644 --- a/apps/dashboard/src/App.tsx +++ b/apps/dashboard/src/App.tsx @@ -1,8 +1,8 @@ +import {createSubscriptionRequest, registerSubscription, unregisterSubscription} from '@sanity/sdk' import {SanityApp, SanityConfig, useFrameConnection} from '@sanity/sdk-react' import {Spinner, ThemeProvider} from '@sanity/ui' import {buildTheme} from '@sanity/ui/theme' -import {type JSX, Suspense, useState, useEffect, useRef, useCallback} from 'react' -import {registerSubscription, unregisterSubscription, createSubscriptionRequest} from '@sanity/sdk' +import {type JSX, Suspense, useCallback, useEffect, useRef, useState} from 'react' const theme = buildTheme({}) @@ -57,7 +57,7 @@ function SharedWorkerTest({iframeRef}: {iframeRef: React.RefObject { console.log('[Dashboard] Received query request:', data) - + try { // Create a subscription request from the incoming query data const subscription = createSubscriptionRequest({ @@ -93,10 +93,7 @@ function SharedWorkerTest({iframeRef}: {iframeRef: React.RefObject({ + const {connect} = useFrameConnection({ name: 'dashboard', connectTo: 'sdk-app', targetOrigin: '*', @@ -132,7 +129,7 @@ function SharedWorkerTest({iframeRef}: {iframeRef: React.RefObject({ name: 'sdk-app', @@ -66,7 +65,15 @@ function QueryTest() {
Data: -
+        
           {/* {JSON.stringify(data, null, 2)} */}
         
@@ -81,9 +88,9 @@ export default function App(): JSX.Element { return ( } config={devConfigs}> -
- -
+
+ +
) From 3a3ec7ac60c19002c39437c41fdf6a13f5d97485 Mon Sep 17 00:00:00 2001 From: Carolina Gonzalez Date: Thu, 14 Aug 2025 17:41:59 -0400 Subject: [PATCH 02/10] feat: add service worker store and script --- .../core/src/sharedWorkerStore/sharedWorkerStore.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/core/src/sharedWorkerStore/sharedWorkerStore.ts b/packages/core/src/sharedWorkerStore/sharedWorkerStore.ts index 449a3023c..084326747 100644 --- a/packages/core/src/sharedWorkerStore/sharedWorkerStore.ts +++ b/packages/core/src/sharedWorkerStore/sharedWorkerStore.ts @@ -23,16 +23,19 @@ export const sharedWorkerStore = createStore { const state = get() - + // Check if we already have an equivalent subscription const existingSubscriptions = Array.from(state.subscriptions.values()) - const equivalentSubscription = existingSubscriptions.find(existing => - areSubscriptionsEquivalent(existing, subscription) + const equivalentSubscription = existingSubscriptions.find((existing) => + areSubscriptionsEquivalent(existing, subscription), ) if (equivalentSubscription) { // Return the existing subscription ID instead of creating a new one - console.log('[SharedWorkerStore] Found equivalent subscription, reusing:', equivalentSubscription.subscriptionId) + console.log( + '[SharedWorkerStore] Found equivalent subscription, reusing:', + equivalentSubscription.subscriptionId, + ) return equivalentSubscription.subscriptionId } From 0e1f9c1c5e38fe048149f6c00a27914cd083805f Mon Sep 17 00:00:00 2001 From: Carolina Gonzalez Date: Tue, 19 Aug 2025 08:34:06 +0300 Subject: [PATCH 03/10] feat(core): add connection to query store --- apps/dashboard/src/App.tsx | 16 +++- packages/core/src/query/queryStore.ts | 105 +++++++++++++------------- 2 files changed, 65 insertions(+), 56 deletions(-) diff --git a/apps/dashboard/src/App.tsx b/apps/dashboard/src/App.tsx index 6c20eb758..fef183c64 100644 --- a/apps/dashboard/src/App.tsx +++ b/apps/dashboard/src/App.tsx @@ -57,7 +57,6 @@ function SharedWorkerTest({iframeRef}: {iframeRef: React.RefObject { console.log('[Dashboard] Received query request:', data) - try { // Create a subscription request from the incoming query data const subscription = createSubscriptionRequest({ @@ -129,7 +128,6 @@ function SharedWorkerTest({iframeRef}: {iframeRef: React.RefObject(null) + return ( } config={devConfigs}> @@ -224,16 +224,28 @@ export default function App(): JSX.Element { inset: 0, display: 'flex', flexDirection: 'column', + height: '100vh', + width: '100vw', }} >