Entry skeleton type.
Chain modifiers.
Locale code.
The baseline or resolved variant entry.
OptionalisWhether the resolved variant is an empty variant — a deliberate author choice to
render nothing for this audience. When true, the entry field still contains the
baseline entry (used for tracking context) but renderers must display no content.
This is distinct from a baseline selection (variantIndex === 0) and from a
resolution error (broken variant link), both of which render the baseline entry.
An empty variant is detected by selectedVariant.id === ''. Empty variants appear
in two forms in Contentful CDA nt_config data:
{ id: "", hidden: true } — the author explicitly chose "Use empty variant" in
the Personalization UI. This is the deliberate author intent for this feature.{ id: "", hidden: false } — an unfilled placeholder slot, created
programmatically when a variant is added or unlinked but not yet configured.Both forms produce isEmptyVariant: true. The hidden field is not used for
detection because the Experience API strips it before runtime — it only survives
in the Contentful CDA nt_config payload. Using id === '' catches both forms
and is stable across all data sources.
OptionaloptimizationOpaque runtime-owned optimization context ID for entry interaction tracking.
OptionalselectedThe selected optimization metadata, if a matching optimization was selected.
Identifier of the personalization or experiment experience.
Optionalsticky?: booleanIndicates whether this optimization selection is sticky for the user.
Index of the selected variant within the experience configuration.
Mapping of baseline entry IDs to their selected variant entry IDs.
Result returned by OptimizedEntryResolver.resolve.