@@ -141,6 +141,7 @@ const STREAM_TRANSPORT_VALUES = new Set<StreamTransport>([
141141 "h264" ,
142142 "webrtc" ,
143143] ) ;
144+ const MOBILE_VIEWPORT_MEDIA_QUERY = "(max-width: 600px)" ;
144145clearLegacyVolatileUiState ( ) ;
145146
146147interface StreamQualityResponse {
@@ -240,6 +241,16 @@ function defaultStreamConfigForTransport(
240241 return base ;
241242}
242243
244+ function shouldForceInitialFitMode ( ) : boolean {
245+ if ( typeof window === "undefined" ) {
246+ return false ;
247+ }
248+ return (
249+ window . matchMedia ?.( MOBILE_VIEWPORT_MEDIA_QUERY ) . matches ??
250+ window . innerWidth <= 600
251+ ) ;
252+ }
253+
243254function writeStreamTransportQueryParam ( transport : StreamTransport ) {
244255 const url = new URL ( window . location . href ) ;
245256 if ( transport === "auto" ) {
@@ -344,8 +355,11 @@ export function AppShell({
344355 readDeviceQueryParam ( ) ??
345356 initialUiState . selectedUDID ,
346357 ) ;
358+ const forceInitialFitMode = shouldForceInitialFitMode ( ) ;
347359 const initialViewportState = initialSelectedUDID
348- ? viewportStateForUDID ( initialUiState , initialSelectedUDID )
360+ ? viewportStateForUDID ( initialUiState , initialSelectedUDID , {
361+ forceFit : forceInitialFitMode ,
362+ } )
349363 : DEFAULT_VIEWPORT_STATE ;
350364 const {
351365 error : listError ,
@@ -975,6 +989,7 @@ export function AppShell({
975989 const nextViewportState = viewportStateForUDID (
976990 persistedState ,
977991 selectedSimulator . udid ,
992+ { forceFit : shouldForceInitialFitMode ( ) } ,
978993 ) ;
979994 setStreamStamp ( Date . now ( ) ) ;
980995 setChromeProfile ( null ) ;
0 commit comments