ConstReadonlyAccountRecoveryAuthenticationConfirmation: {Account-recovery authentication confirmation: the Bloks app the search
answer pushes after the identifier is submitted
(com.bloks.www.caa.ar.authentication_confirmation). The app's
submit_code call still reports the search screen as the client endpoint;
the platform catalog keeps that spelling.
ReadonlyAccountRecoveryEmailCode: {Last-resort-recovery code-entry screen ("Check your email"), the Bloks app
the login's identification-error flow opens
(com.bloks.www.ap.two_step_verification.code_entry), shown in the CDS
container (ap. namespace, unvetted). The skipped 451 login prelude ends
on it, and LoginHomepage.logIn opens it when the answer escalates.
ReadonlyAccountRecoverySearch: { appId: "com.bloks.www.caa.ar.search"; host: "screen"; kind: "bloks" }The same search screen once its content is shown, reported as the app id itself.
ReadonlyAccountRecoverySearchCds: { appId: "com.bloks.www.caa.ar.search"; host: "cds"; kind: "bloks" }Forgot-password account recovery: the email/username search screen while it
loads in the CDS container (IgCdsScreenNavigationLoggerModule:…ar.search).
ReadonlyAccountRecoverySuccessLocationPermission: {The location-permission prompt the Android 451 launch opens over the feed
after a successful account recovery: the 451 launch reports it in
front from its own screen fetch on, as chain entry 2 after the feed. The
app opens it as a Bloks app root, so its identity is the Bloks app id:
Android renders <appId>:<appId>, as the app logs it, and iOS names
the same identity without a catalog entry of its own.
ReadonlyChallengeAccountSuspended: { kind: "navigation-unrecorded" }"We suspended your account, ‹username›": the suspended-account intro.
ReadonlyChallengeAccountTemporarilyLocked: { kind: "navigation-unrecorded" }"Your Account Has Been Temporarily Locked" with its Continue.
ReadonlyChallengeAddBirthday: { kind: "navigation-unrecorded" }"Add your own birthday — Enter your age".
ReadonlyChallengeAuthenticityWizard: { kind: "navigation-unrecorded" }The selfie / identity-verification wizard.
ReadonlyChallengeAwaitingReview: { kind: "navigation-unrecorded" }"You submitted an appeal": the review is pending.
ReadonlyChallengeContactPointCode: { kind: "navigation-unrecorded" }The confirmation-code entry for the contact point just set.
ReadonlyChallengeEscalationInformation: { kind: "navigation-unrecorded" }The informational escalation notice of a violation.
ReadonlyChallengeLoginReview: { kind: "navigation-unrecorded" }"Was this you?" review of a login.
ReadonlyChallengeRecaptcha: { kind: "navigation-unrecorded" }The UFAC reCAPTCHA.
ReadonlyChallengeReviewContactPointChange: { kind: "navigation-unrecorded" }"Is Your Profile Information Correct?"
ReadonlyChallengeScrapingWarning: { kind: "navigation-unrecorded" }"We've detected automated behavior on your account".
ReadonlyChallengeSelectVerifyMethod: { kind: "navigation-unrecorded" }"Choose how to confirm it's you": the navigation challenge's method choice.
ReadonlyChallengeSetContactPoint: { kind: "navigation-unrecorded" }"Add Phone Number to Get Back Into Instagram" (or the email variant).
ReadonlyChallengeSetNewPassword: { kind: "navigation-unrecorded" }The new-password entry of the navigation challenge.
ReadonlyChallengeSubmitPhone: { kind: "navigation-unrecorded" }The phone-number entry of the navigation challenge.
ReadonlyChallengeTextCaptcha: { kind: "navigation-unrecorded" }"Help us confirm it's you — Enter the code below" (text image captcha).
ReadonlyChallengeThanksForProvidingInfo: { kind: "navigation-unrecorded" }"Thanks for Providing Your Info" with its Done.
ReadonlyChallengeVerifyCode: { kind: "navigation-unrecorded" }The security-code entry of the navigation challenge.
ReadonlyChallengeWebRecaptcha: { kind: "navigation-unrecorded" }The web challenge's reCAPTCHA form.
ReadonlyChallengeWebSetNewPassword: { kind: "navigation-unrecorded" }"Change Your Password to Secure Your Account" (web form).
ReadonlyDirectCustomizeChat: { kind: "native" }Thread "Customize chat" screen (theme entry point).
ReadonlyDirectGroupNameAndPhotoEditor: { kind: "native" }A group thread's group name and photo editor, opened from the thread's shared media (451 chain).
ReadonlyDirectInbox: { kind: "native" }Direct inbox tab: the list of DM threads.
ReadonlyDirectRecipientPicker: { kind: "native" }"New message": the recipient picker opened from the inbox
(DirectRecipientPickerFragment:direct_recipient_picker, Android 451), a
search field over the people a message can be started with. It has two
openings: the inbox's "New message" row and its own "Group chat" row, which
re-enters the same screen in group mode at the next ordinal — one app
screen, one definition (the app names the identity at both,
direct_recipient_picker:3:button then :4:button).
ReadonlyDirectThread: { kind: "native" }One DM thread, opened from the inbox, from a profile or for a person picked in "New message".
ReadonlyDirectThreadDetails: { kind: "native" }A DM thread's details hub (shared media, nicknames, …), opened from the thread header.
ReadonlyDirectThreadNicknameChange: { kind: "native" }One participant's nickname editor, opened from the nicknames list.
ReadonlyDirectThreadNicknames: { kind: "native" }Nicknames list of a DM thread, opened from the thread details.
ReadonlyDirectThreadSharedMedia: { kind: "native" }Shared media list of a DM thread, opened from the thread details.
ReadonlyDirectThreadThemePicker: { kind: "native" }Theme picker opened from Customize chat.
ReadonlyEditProfile: { kind: "native" }The viewer's own profile editor, opened by the profile's Edit profile button (EditProfileFragment:edit_profile, Android 451).
ReadonlyEditProfileAddLink: { kind: "native" }The add-link form, opened from the links list (MultipleLinksEditFragment:edit_profile_links_list_edit, Android 451).
ReadonlyEditProfileBio: { kind: "native" }The biography editor, opened from the profile editor (EditBioFragment:profile_edit_bio, Android 451).
ReadonlyEditProfileLinks: { kind: "native" }The profile's links, opened from the profile editor (EditLinksListFragment:edit_profile_links_list, Android 451).
ReadonlyEditProfileUsername: { kind: "native" }The username editor, opened from the profile editor (EditUsernameFragment:profile_edit_username, Android 451).
ReadonlyExplore: { kind: "native" }Explore tab (a bottom-tab switch into search starts here).
ReadonlyFeedTimeline: { kind: "native" }Main feed tab.
ReadonlyFeedTimelineFollowing: { kind: "native" }The home timeline's Following filter: the posts of the accounts the viewer
follows, pushed over the main feed by the title dropdown's Following
(ContextualFeedFragment:feed_contextual, endpoint
feed_timeline_following, Android 451).
ReadonlyLandingScreen: {CAA landing screen: the config-sync host between the client-data redirect and the login home.
ReadonlyLoginHomeCds: { appId: "com.bloks.www.caa.login.login_homepage"; host: "cds"; kind: "bloks" }Login home opened inside the CDS screen container. The app fetches it from the landing screen through the CDS container, so its own screen fetch, phone prefill and oauth fetch report the CDS client endpoint.
ReadonlyLoginHomepage: {Login home, the logged-out process's root (Bloks: com.bloks.www.caa.login.login_homepage).
ReadonlyLoginTwoFactorEnterTotpCode: {Authenticator-app code entry of the 2FA flow, opened in the CDS container.
ReadonlyLoginTwoFactorEntrypoint: {Trusted-device / 2FA entrypoint, opened in the CDS container.
ReadonlyLoginTwoFactorMethodPicker: {"Try another way" method picker of the 2FA flow, opened in the CDS container.
ReadonlyMediaComments: { kind: "native" }Comment list / composer bottomsheet, opened over a feed media or reel.
ReadonlyMyProfile: { kind: "native" }The viewer's own profile (SelfFragment:self_profile, Android 451) — a
screen of its own, not a variant of UserProfile.
ReadonlyMyProfileMediaTab: { kind: "native" }The media grid tab inside the viewer's own profile (ProfileMediaTabFragment:self_profile, Android 451).
ReadonlyPostingCamera: { kind: "native" }The creation camera (QuickCaptureFragment: the story and the reel camera, Android 451).
ReadonlyPostingCameraGallery: { kind: "native" }The creation camera's own gallery (QuickCaptureFragment:stories_gallery and :clips_gallery, Android 451).
ReadonlyPostingGalleryPicker: { kind: "native" }The gallery picker the bottom bar's create button opens, in post mode
(GalleryPickerFragment:gallery_picker, Android 451): the person's photos
and videos under the creation mode selector (POST, STORY, REEL).
ReadonlyPostingMusicBrowser: { kind: "native" }The music browser (recents, vibes, search field) a creation flow opens to pick a song (MusicBrowserHomeFragment:music_browser_home_fragment, Android 451).
ReadonlyPostingMusicSearchResults: { kind: "native" }The music search's results (MusicSearchResultsFragment:music_search, Android 451).
ReadonlyPostingNewPost: { kind: "native" }The "New post" screen: caption and Share (FollowersShareFragment:media_broadcast_share, Android 451).
ReadonlyPostingNewReel: { kind: "native" }The "New reel" screen: caption and Share (ClipsPublishScreenFragment, Android 451).
ReadonlyPostingPostEdit: { kind: "native" }The photo editor of a post, opened after the gallery's Next (QuickEditFragment:quick_edit_fragment, Android 451).
ReadonlyPostingPostVideoCamera: { kind: "native" }The creation camera right after the post mode's video pick
(ClipsCameraFragment:clips_precapture_camera, Android 451): the same
entry as PostingPostVideoCameraGallery, its module switched in place.
ReadonlyPostingPostVideoCameraGallery: { kind: "native" }The creation camera's gallery as the post mode's video pick opens it
(ClipsCameraFragment:clips_gallery, Android 451): the same camera and
gallery the reel mode shows, under another fragment class. Navigation only:
the pick passes through it, no frame stays.
ReadonlyPostingPostVideoNewReel: { kind: "native" }The "New reel" screen reached from the post mode's video pick
(ClipsPublishScreenFragment:panavideo_share_sheet, Android 451): the same
screen as PostingNewReel, its module switched in place.
ReadonlyPostingReelCamera: { kind: "native" }The reel mode's camera after a clip was picked in its gallery
(QuickCaptureFragment:clips_precapture_camera, Android 451).
ReadonlyPostingReelEditor: { kind: "native" }The reel editor, opened over a picked or filmed video (VideoViewController:clips_postcapture_camera, Android 451).
ReadonlyPostingReelMusicEditor: { kind: "native" }The Reel's music editor (ClipsMusicEditorFragmentImpl:clips_music_editor, Android 451): the picked song's window over the clip and Done.
ReadonlyPostingReelMusicOverlayDetail: { kind: "native" }The Reel's music overlay entry (ClipsMusicBrowserOverlayFragmentImpl:clips_music_browser_overlay, Android
451): the sheet's container entry the Audio tool writes after the browser fragment.
ReadonlyPostingStoryAlsoShareTo: { kind: "native" }The "Also share to" sheet shown while the story is published (search, Add to highlights,
Your Facebook Story, Done; DirectPrivateStoryRecipientFragment:direct_story_audience_picker, Android 451).
ReadonlyPostingStoryCameraGallery: { kind: "native" }The creation camera's gallery in the story mode (QuickCaptureFragment:stories_gallery,
Android 451): the same camera and gallery as PostingCameraGallery, its module
switched in place.
ReadonlyPostingStoryCameraHost: { kind: "native" }The container the story mode's camera sits in when the person switches to the
story mode inside the camera (MultiDestinationCreationFragment:stories_precapture_camera,
Android 451): navigation only, pushed right before the camera's own entry.
ReadonlyPostingStoryDoneCamera: { kind: "native" }The camera the app shows for a moment after the story's Done, before the Reels tab or the
feed is back (IgCameraViewController:reel_composer_camera, Android 451: one chain entry
with one request, then the tab). A catalog entry only: no screen of the library is it.
ReadonlyPostingStoryMusicSearchHost: { kind: "native" }The story's music search container (StoriesMusicSearchController:music_search, Android 451): the
sheet the sticker tray's Music tap opens, whose browser fragment is entered right after it. It has no
screen of its own; the music browser's entry writes it, so the two are one frame.
ReadonlyPostingStoryMusicStickerEditor: { kind: "native" }The "Music Only" sticker editor a picked song opens over the story editor (cover, lyrics,
the song's trimmer, Cancel / Done; QccAnalyticsModule:stories_postcapture_camera, Android 451).
ReadonlyPostingStoryPhotoEditor: { kind: "native" }The story editor over a picked gallery photo (PhotoViewController:stories_postcapture_camera,
Android 451): the text, sticker, music and effect tools, the caption field and the
"Your story" / "Close Friends" / next buttons. The public name is PostingStoryPhotoEditorScreen.
ReadonlyPostingStoryShareSheet: { kind: "native" }The story's "Share" sheet: Your story / Close Friends / Message (PrivateStoryShareSheetFragment:private_stories_share_sheet, Android 451).
ReadonlyPostingStoryStickerTray: { kind: "native" }The sticker tray sheet over the story editor (AssetPickerController:story_stickers_tray, Android 451).
ReadonlyPostingStoryVideoEditor: { kind: "native" }The story editor over a picked gallery video (VideoViewController:stories_postcapture_camera,
Android 451): the photo editor's tools and buttons over a playing video. The public name is
PostingStoryVideoEditorScreen.
ReadonlyPostOpenedFromLink: { kind: "native" }Short-URL feed: one media opened full-screen, from a feed post or a shared short link (/p/<code>/).
ReadonlyProfileMediaTab: { kind: "native" }The media grid tab inside a profile (ProfileMediaTabFragment:profile, Android 451).
ReadonlyProfilePostsFeed: { kind: "native" }The posts feed of a profile's media grid: the media opened full-screen at
one item, swiped through (ContextualFeedFragment:feed_contextual, Android
451; the public name is ProfilePostsFeedScreen).
ReadonlyReelsViewer: { kind: "native" }Reels viewer: a clip opened full-screen and swiped through.
ReadonlyRegistrationBirthday: { appId: "com.bloks.www.bloks.caa.reg.birthday"; host: "cds"; kind: "bloks" }Registration's "What's your birthday?" screen, pushed by the accepted password.
ReadonlyRegistrationConfirmationCode: {Registration's "Enter the confirmation code" screen, pushed by the send-confirmation answer.
ReadonlyRegistrationName: {Registration's "What's your name?" screen, pushed by the accepted birthday.
ReadonlyRegistrationPassword: { appId: "com.bloks.www.bloks.caa.reg.password"; host: "cds"; kind: "bloks" }Registration's "Create a password" screen, pushed by the accepted confirmation code.
ReadonlyRegistrationPhoneNumber: {Registration's first screen, "What's your phone number?": the Bloks app
the login home's "Create new account" answer pushes in the CDS container
(com.bloks.www.bloks.caa.reg.contactpoint_phone). Every later
registration screen opens in the same container, and the REST
calls of the whole registration report this screen as their client
endpoint (Android 429).
ReadonlyRegistrationTermsOfService: { appId: "com.bloks.www.bloks.caa.reg.tos"; host: "cds"; kind: "bloks" }Registration's terms and policies screen ("I agree"), pushed by the accepted username.
ReadonlyRegistrationUsername: { appId: "com.bloks.www.bloks.caa.reg.username"; host: "cds"; kind: "bloks" }Registration's "Create a username" screen, pushed by the accepted name.
ReadonlyRepostNoteEditor: { kind: "native" }Repost composer of a short-url feed post: the note was created and its text
is typed here (the Android 450 chain's ordinal 3, RepostComposerFragment).
ReadonlySaveCredentials: {"Save your login info" prompt shown over the feed after a login.
ReadonlySearchInput: { kind: "native" }Typeahead search screen: the query field is being typed into.
ReadonlySearchResultsAccountsTab: { kind: "native" }The same SERP screen switched to its Accounts tab (Android 451).
ReadonlySearchResultsTopTab: { kind: "native" }Search-results (SERP) screen on its Top tab, opened on submit from the typeahead.
ReadonlyUserProfile: { kind: "native" }A user's profile (UserDetailFragment:profile, Android 451).
ReadonlyUserProfileReelsTab: { kind: "native" }The Reels tab of a profile (ClipsProfileTabFragment:clips_profile, Android
451): the profile owner's clips, whose items open the reels viewer. The
public name is UserProfileReelsTabScreen.
The screens the library models, by their meaning-only identity. A native screen's identity is not its module (two screens may log the same module:
UserDetailFragment:profileandProfileMediaTabFragment:profileare two screens); a Bloks screen's identity is the app the server loads, not how a platform spells it. Each platform names the screen in its own catalog (Android:packages/core/src/android/android.navigation.ts; iOS names only the screens whose navigation is known).A
ScreenIdis a stable public identity: callers name screens by it (MobileScreens.*,screenOf(id)), so renaming one is a breaking change of the public API. Navigation is process state and is never persisted, so a rename involves no snapshot migration.