Variable DirectInboxScreenConst
DirectInboxScreen: ScreenDefinition< "DirectInbox", "tab", undefined, { threads: readonly { is_group: boolean; last_activity_at: string; muted: boolean; preview: readonly { client_context?: string; item_id: string; item_type: string; media?: | { height: number; media_type: 1; pk: string; url: string; width: number; } | { height: number; media_type: 2; pk: string; url: string; width: number; } | { media_type: 8; pk: string; slides: readonly { media_type: (...)
| (...)
; pk: string; url: string }[]; }; text?: string; timestamp: string; user_id: string; }[]; thread_id: string; thread_title: string; thread_v2_id: string; users: readonly { fbid_v2?: string; full_name: string; pk: string; username: string; }[]; }[]; }, Record<never, never>, IgApiError | RequestError | ParseError | TransportError | SchemaError, | PlainJsonApiHttp | Signature | MobileSession | MobileDevice | GraphqlJsonHttp | MobileApplication | MobileNavigation | AndroidDirectSurface, { openNewMessage: ( self: ScreenHandle, state: Record<never, never>, ) => ScreenEdgeBound< ScreenEdgeShape< ScreenDefinition< "DirectRecipientPicker", "screen", { mode: "group"; searchSessionId: string } | undefined, { recipients: readonly { full_name: string; pk: string; username: string; }[]; searchSessionId: string; threads: readonly { is_group: boolean; muted?: boolean; preview: readonly { client_context?: ...
; item_id: ...
; item_type: ...
; media?: ...
; text?: ...
; timestamp: ...
; user_id: ...
; }[]; thread_id: string; thread_title: string; thread_v2_id?: string; users: readonly { fbid_v2?: ...
; full_name: ...
; pk: ...
; username: ...
; }[]; }[]; }, { mode: "default" | "group"; searchSessionId: string }, | IgCheckpointError | IgAccountSuspendedError | IgAccountDisabledError | IgLoginRequiredError | IgUserLoggedOutError, | GraphqlJsonHttp | MobileApplication | MobileNavigation | AndroidDirectSurface, { createGroup: ( self: ScreenHandle, state: { mode: "default" | "group"; searchSessionId: string }, ) => ( ...args: [rows
: readonly (...)
[]], ) => Effect< AssembledHandle< (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, >, (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
, | (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
, >; openCreatedThread: ActionEdge< ( self: ScreenHandle, state: { mode: (...)
| (...)
; searchSessionId: string }, ) => ScreenEdgeBound< ScreenEdgeShape<(...)
, (...)
, (...)
, (...)
>, (...args: ...
) => ...
, >, >; search: ( self: ScreenHandle, state: { mode: "default" | "group"; searchSessionId: string }, ) => ( ...args: [query
: string], ) => Effect< (...)
& (...)
, (...)
| (...)
| (...)
| (...)
| (...)
| (...)
, (...)
| (...)
| (...)
, >; startGroupChat: ( self: ScreenHandle, state: { mode: "default" | "group"; searchSessionId: string }, ) => ScreenEdgeBound< (
ScreenEdgeShape<ScreenDefinition<"DirectRecipientPicker", "screen", { readonly mode: "group"; readonly searchSessionId: string; } | undefined, { readonly recipients: readonly { readonly pk: string; readonly username: string; readonly full_name: string; }[]; readonly threads: readonly { ...; }[]; readonly searchSessi...
)
, () => Effect<(...)
, (...)
, (...)
>, >; }, { recipients: { at: "recipients"; item: ScreenItemDefinition< "DirectRecipient", { full_name: string; pk: string; username: string }, { full_name: string; pk: string; username: string }, { userId: string }, never, never, { openThread: (self: ...
, state: ...
) => ...
}, undefined, never, >; key: "pk"; source: ScreenItemNodes; }; threads: { at: "threads"; item: ScreenItemDefinition< "DirectPickerThread", { is_group: boolean; muted?: (...)
| (...)
| (...)
; preview: readonly (...)
[]; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; users: readonly (...)
[]; }, { is_group: boolean; muted?: (...)
| (...)
| (...)
; preview: readonly (...)
[]; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; users: readonly (...)
[]; }, { thread: { is_group: ...
; muted?: ...
; preview: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; users: ...
; }; }, never, never, { openThread: (self: ...
, state: ...
) => ...
}, undefined, never, >; key: "thread_id"; source: ScreenItemNodes; }; }, never, never, >, [], "button", AndroidScreens, >, () => Effect< AssembledHandle< "DirectRecipientPicker", "screen", { recipients: readonly { full_name: string; pk: string; username: string; }[]; searchSessionId: string; threads: readonly { is_group: boolean; muted?: (...)
| (...)
| (...)
; preview: readonly (...)
[]; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; users: readonly (...)
[]; }[]; }, { createGroup: ( self: ScreenHandle, state: { mode: (...)
| (...)
; searchSessionId: string }, ) => (...args: [rows
: ...
]) => Effect<(...)
, (...)
, (...)
>; openCreatedThread: ActionEdge< ( self: ScreenHandle, state: { mode: ...
; searchSessionId: ...
}, ) => ScreenEdgeBound<(...)
, (...)
>, >; search: ( self: ScreenHandle, state: { mode: (...)
| (...)
; searchSessionId: string }, ) => (...args: [query
: ...
]) => Effect<(...)
, (...)
, (...)
>; startGroupChat: ( self: ScreenHandle, state: { mode: (...)
| (...)
; searchSessionId: string }, ) => ScreenEdgeBound< ScreenEdgeShape<(...)
, (...)
, (...)
, (...)
>, () => ...
, >; }, { recipients: { at: "recipients"; item: ScreenItemDefinition< "DirectRecipient", { full_name: ...
; pk: ...
; username: ...
}, { full_name: ...
; pk: ...
; username: ...
}, { userId: ...
}, never, never, { openThread: ...
}, undefined, never, >; key: "pk"; source: ScreenItemNodes; }; threads: { at: "threads"; item: ScreenItemDefinition< "DirectPickerThread", { is_group: ...
; muted?: ...
; preview: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; users: ...
; }, { is_group: ...
; muted?: ...
; preview: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; users: ...
; }, { thread: ...
}, never, never, { openThread: ...
}, undefined, never, >; key: "thread_id"; source: ScreenItemNodes; }; }, ScreenHandle, "required", true, never, AndroidScreens, >, | IgCheckpointError | IgAccountSuspendedError | IgAccountDisabledError | IgLoginRequiredError | IgUserLoggedOutError | ScreenDataError | ScreenEnterConcurrentError | ScreenEdgeInputError, | GraphqlJsonHttp | MobileApplication | MobileNavigation | ScreenStack | ScreenCatalog | AndroidDirectSurface, >, >; }, { threads: { at: "threads"; item: ScreenItemDefinition< "DirectInboxThread", { is_group: boolean; last_activity_at: string; muted: boolean; preview: readonly { client_context?: string; item_id: string; item_type: string; media?: | { height: number; media_type: 1; pk: string; url: string; width: number; } | { height: number; media_type: 2; pk: string; url: string; width: number; } | { media_type: 8; pk: string; slides: readonly { media_type: ...
; pk: ...
; url: ...
}[]; }; text?: string; timestamp: string; user_id: string; }[]; thread_id: string; thread_title: string; thread_v2_id: string; users: readonly { fbid_v2?: string; full_name: string; pk: string; username: string; }[]; }, { is_group: boolean; last_activity_at: string; muted: boolean; preview: readonly { client_context?: string; item_id: string; item_type: string; media?: | { height: number; media_type: 1; pk: string; url: string; width: number; } | { height: number; media_type: 2; pk: string; url: string; width: number; } | { media_type: 8; pk: string; slides: readonly { media_type: ...
; pk: ...
; url: ...
}[]; }; text?: string; timestamp: string; user_id: string; }[]; thread_id: string; thread_title: string; thread_v2_id: string; users: readonly { fbid_v2?: string; full_name: string; pk: string; username: string; }[]; }, { thread: { is_group: boolean; muted?: boolean; preview: readonly { client_context?: string; item_id: string; item_type: string; media?: | { height: number; media_type: 1; pk: string; url: string; width: number; } | { height: number; media_type: 2; pk: string; url: string; width: number; } | { media_type: 8; pk: string; slides: readonly (...)
[] }; text?: string; timestamp: string; user_id: string; }[]; thread_id: string; thread_title: string; thread_v2_id?: string; users: readonly { fbid_v2?: string; full_name: string; pk: string; username: string; }[]; }; }, never, never, { open: ( self: ScreenHandle, state: { thread: { is_group: boolean; muted?: boolean; preview: readonly { client_context?: (...)
| (...)
; item_id: string; item_type: string; media?: (...)
| (...)
| (...)
| (...)
; text?: (...)
| (...)
; timestamp: string; user_id: string; }[]; thread_id: string; thread_title: string; thread_v2_id?: string; users: readonly { fbid_v2?: (...)
| (...)
; full_name: string; pk: string; username: string; }[]; }; }, ) => ScreenEdgeBound< ScreenEdgeShape< ScreenDefinition< "DirectThread", "screen", | { kind: ...
; send_attribution?: ...
; thread: ...
} | { kind: ...
; recipient: ...
; send_attribution?: ...
} | { kind: ...
; target_user_ids: ...
; thread_id: ...
; thread_v2_id: ...
; }, { media: readonly (...)
[]; messages: readonly (...)
[]; thread: { is_group: ...
; muted?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; }; users: readonly (...)
[]; }, | { has_messages: ...
; is_group: ...
; ordinal_reserved?: ...
; participants: ...
; peer_user_fbid?: ...
; peer_user_id?: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; } | { has_messages: ...
; is_group: ...
; lead_user_id?: ...
; ordinal_reserved?: ...
; participants: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; }, | IgApiError | RequestError | ParseError | TransportError | ScreenDataError | DirectInboxSeqIdUnknownError | DirectThreadNotFoundByParticipantsError, | PlainJsonApiHttp | MobileSession | MobileDevice | GraphqlJsonHttp | MobileApplication | MobileNavigation | MobileUserFlows | AndroidQuickPromotionStash, { openCustomizeChat: (self: ...
, state: ...
) => ...
; openThreadDetails: (self: ...
, state: ...
) => ...
; sendMessage: (self: ...
, state: ...
) => ...
; }, { media: { at: ...
; by: ...
; key: ...
; source: ...
; variants: ...
; }; messages: { at: ...
; item: ...
; key: ...
; source: ...
}; participants: { at: ...
; item: ...
; key: ...
; source: ...
}; }, never, never, >, [], "inbox", AndroidScreens, >, () => Effect< AssembledHandle< "DirectThread", "screen", { media: ...
; messages: ...
; thread: ...
; users: ...
}, { openCustomizeChat: ...
; openThreadDetails: ...
; sendMessage: ...
}, { media: ...
; messages: ...
; participants: ...
}, ScreenHandle, "required", true, never, AndroidScreens, >, | IgApiError | RequestError | ParseError | TransportError | ScreenDataError | ScreenEnterConcurrentError | ScreenEdgeInputError | DirectInboxSeqIdUnknownError | DirectThreadNotFoundByParticipantsError, | PlainJsonApiHttp | MobileSession | MobileDevice | GraphqlJsonHttp | MobileApplication | MobileNavigation | MobileUserFlows | ScreenStack | AndroidQuickPromotionStash | ScreenCatalog, >, >; }, undefined, never, >; key: "thread_v2_id"; source: ScreenItemNodes; }; }, never, never,> = ...
DirectInboxFragment:direct_inbox, the Direct tab (Android 451). The tab's open is one burst in the app's order:MobileRequestContext.Sessionplus the Direct surface'sx-msgr-region);direct_inbox:2:main_direct, the chain every later request of the burst carries) and the saved replies (quick_reply/get, signed with the thread modification token, reply type and viewer);direct_v2/inbox/) with the Meta AI persona prefetch (IGDirectFetchKaiPersona,bot_idthe Meta AI bot) together 0.49 s later. The inbox screen asks its empty state a second time when the snapshot's answer lands (10 ms after it);IGDirectSearchInitiateWarmStartQuery, the picker's own open on the 1:1 run), and 0.3 s after it the stories lookup (feed/get_latest_reel_media/) for the people of the stored head.With a stored head (the app's local inbox store,
DirectInboxCache) the snapshot is the filtered first page after the stored cursor (prefetch_filtered_first_page), and the person's stories are the stored threads' participants; without one the snapshot is the initial page (thread_message_limit=5) and no stories lookup is sent.modeis a fact of the presented profile, read bydirectInboxFeeditself: the 451 profile sendsmode=2, the 448 profile sends none.The answer's
seq_idis adopted into the session by the feed producer (directInboxFeed'srequest, which decodes and records it), not by this screen: the app's "New message" and the profile's Message button report it as the participant lookup'sseq_id(the lookup sends the inbox answer's sequence), and the screens read it from that one source, never from an input. The post-login launch burst runs the same producer, so a session that never opened this tab still holds the number.Guide: The Direct inbox