Builds the client state from the options: a new device from seed, or the
restored snapshot, plus the native transport client.
Invalid options throw what they always threw (a RangeError for the
request timeout, the native client's own error for a proxy or protocol mode
it rejects); a snapshot that cannot be restored throws
SnapshotDecodeError.
Restored snapshots keep their stored application, with two exceptions. A
snapshot whose app version equals the current defaultApplication version
keeps its device and session — the platform's settleRestoredDevice hook
fills the device facts a snapshot of the same build may predate
(settleAndroidDeviceFacts), so a restored device reports what a fresh one
of that build does; its
application becomes the presented build's
when the snapshot carries another released version (a restore is an app
update), and a same-version snapshot adopts any version-bound field it omits —
the GraphQL doc-id table,
GRAPHQL_OMIT_PRETTY, the Direct inbox directInboxMode, the
launch wire launchWire (the feed/timeline block, the feeds'
appnetsession pair, the shared launch requests, the inbox-tray form, the
save-credentials placement and the dictionary fan-out), the media wires
mediaLikeWire and mediaRepostWire, the launch constants
shoppingExperiments and directSearchGenAiBotsLimit, the Bloks prism
palette, the Bloks theme bloksThemeParams, its INTERNAL_INFRA_THEME
spelling and the bk_client_context shape bloksClientContext, and the
zero-rating table ZERO_HEADERS (so snapshots made between a version bump
and this change still resolve the new ids, form shape, inbox mode, feed wire,
media wires, launch constants, palette and Bloks theme). The zero-rating
table (ZERO_HEADERS), the Bloks theme and its context shape are
wire-presence facts and are settled both ways: a stored table, theme or shape
is dropped when the presented profile lacks it, so a restored client never
sends the zero-rating pair or the zero device ids the current app stopped
sending, nor a theme or key order the presented build does not carry. Every other application keeps its literals. See
withDefaultVersionBoundFields.
The platform app layers and the tests build a process through it.
Builds the client state from the options: a new device from
seed, or the restoredsnapshot, plus the native transport client.Invalid options throw what they always threw (a
RangeErrorfor the request timeout, the native client's own error for a proxy or protocol mode it rejects); a snapshot that cannot be restored throws SnapshotDecodeError.Restored snapshots keep their stored application, with two exceptions. A snapshot whose app version equals the current
defaultApplicationversion keeps its device and session — the platform'ssettleRestoredDevicehook fills the device facts a snapshot of the same build may predate (settleAndroidDeviceFacts), so a restored device reports what a fresh one of that build does; its application becomes the presented build's when the snapshot carries another released version (a restore is an app update), and a same-version snapshot adopts any version-bound field it omits — the GraphQL doc-id table,GRAPHQL_OMIT_PRETTY, the Direct inboxdirectInboxMode, the launch wirelaunchWire(thefeed/timelineblock, the feeds' appnetsession pair, the shared launch requests, the inbox-tray form, the save-credentials placement and the dictionary fan-out), the media wiresmediaLikeWireandmediaRepostWire, the launch constantsshoppingExperimentsanddirectSearchGenAiBotsLimit, the Bloks prism palette, the Bloks themebloksThemeParams, itsINTERNAL_INFRA_THEMEspelling and thebk_client_contextshapebloksClientContext, and the zero-rating tableZERO_HEADERS(so snapshots made between a version bump and this change still resolve the new ids, form shape, inbox mode, feed wire, media wires, launch constants, palette and Bloks theme). The zero-rating table (ZERO_HEADERS), the Bloks theme and its context shape are wire-presence facts and are settled both ways: a stored table, theme or shape is dropped when the presented profile lacks it, so a restored client never sends the zero-rating pair or the zero device ids the current app stopped sending, nor a theme or key order the presented build does not carry. Every other application keeps its literals. See withDefaultVersionBoundFields.The platform app layers and the tests build a process through it.