37ab0381 📦 Publish SDKs (#4851)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @builder.io/react@9.4.6
### Patch Changes
- 08321f6: Fix: editing a block inside a Symbol's Slot no longer
remounts the Symbol. Slot content lives in `symbol.data.<slotName>`,
which keyed the nested `BuilderComponent`, so every keystroke rebuilt
the subtree and made the Visual Editor's inline edit popup flicker.
## @builder.io/sdk-angular@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react-nextjs@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-qwik@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react-native@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-solid@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-svelte@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-vue@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Release-only version and changelog updates; underlying changes are
patch-level editor UX and optional fetch enrichment APIs with
backward-compatible defaults.
>
> **Overview**
> This is a **Changesets release** PR: it bumps published package
versions, appends changelog entries, and removes the consumed changeset
files. No new implementation code appears in the diff.
>
> **@builder.io/react@9.4.6** ships a Visual Editor fix so editing
blocks inside a **Symbol Slot** no longer remounts the Symbol (nested
`BuilderComponent` was keyed on `symbol.data.<slotName>`, which changed
on every keystroke and caused inline-edit popup flicker).
>
> **Gen 2 SDKs** (`@builder.io/sdk-angular`, `-react`, `-react-nextjs`,
`-qwik`, `-react-native`, `-solid`, `-svelte`, `-vue` at their new patch
versions) document **`enrichOptions`** on `fetchOneEntry` and `Content`,
so reference enrichment can be limited (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor can reflect those fetch
constraints.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
31479b153ba1d43cb8ee4e9f58e02f72f25ef67e. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Signed-off-by: Aishwarya Parab <aishwaryaparab1@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> 3d2a4890 📦 Publish SDKs (#4851)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @builder.io/react@9.4.6
### Patch Changes
- 08321f6: Fix: editing a block inside a Symbol's Slot no longer
remounts the Symbol. Slot content lives in `symbol.data.<slotName>`,
which keyed the nested `BuilderComponent`, so every keystroke rebuilt
the subtree and made the Visual Editor's inline edit popup flicker.
## @builder.io/sdk-angular@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react-nextjs@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-qwik@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react-native@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-solid@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-svelte@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-vue@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Release-only version and changelog updates; underlying changes are
patch-level editor UX and optional fetch enrichment APIs with
backward-compatible defaults.
>
> **Overview**
> This is a **Changesets release** PR: it bumps published package
versions, appends changelog entries, and removes the consumed changeset
files. No new implementation code appears in the diff.
>
> **@builder.io/react@9.4.6** ships a Visual Editor fix so editing
blocks inside a **Symbol Slot** no longer remounts the Symbol (nested
`BuilderComponent` was keyed on `symbol.data.<slotName>`, which changed
on every keystroke and caused inline-edit popup flicker).
>
> **Gen 2 SDKs** (`@builder.io/sdk-angular`, `-react`, `-react-nextjs`,
`-qwik`, `-react-native`, `-solid`, `-svelte`, `-vue` at their new patch
versions) document **`enrichOptions`** on `fetchOneEntry` and `Content`,
so reference enrichment can be limited (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor can reflect those fetch
constraints.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
31479b153ba1d43cb8ee4e9f58e02f72f25ef67e. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Signed-off-by: Aishwarya Parab <aishwaryaparab1@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> b0337c6c feat[sdk]: forward enrichOptions to the Visual Editor (#4845)
Pairs with BuilderIO/builder-internal#14691, which consumes this on the
editor side.
## Why
The Visual Editor does not use the site's SDK to fetch references for
its preview — it resolves them itself and postMessages the resolved
content into the iframe. So it never learns how the site fetched them,
and reference enrichment is unbounded by default (ENG-13486: a circular
reference pair fanning out to ~269KB). The editor had to pick a bound
blind.
The SDK already tells the editor `enrich`, `locale` and `modelName`
through `builder.updateContent`. This adds `enrichOptions` to that same
payload — no new message type.
## What
- `EnrichOptions` (`enrichLevel`, per-model `fields`/`omit`) added to
`fetchOneEntry` options and to `Content` / `ContentVariants` props
- `setupBrowserForEditing` forwards it, so it rides the existing
`builder.updateContent` `options`
- `generateContentUrl` applies it to the fetch, gated on `enrich` (the
content API ignores `enrichOptions` without `enrich=true`), so the value
you declare to the editor is one you can actually fetch with
Gen1 needed no change: `builder.class.ts` already posts its full get
options, `enrichOptions` included.
## Usage
```ts
const enrichOptions = { enrichLevel: 1, model: { product: { fields: 'title,price' } } };
const content = await fetchOneEntry({ model: 'page', apiKey, enrich: true, enrichOptions });
<Content model="page" content={content} apiKey={apiKey} enrich enrichOptions={enrichOptions} />
```
## Testing
`tsc --noEmit` and eslint clean; 154 SDK tests pass, including two new
`generate-content-url` cases (serialized alongside `enrich`, omitted
without it). `build:all` (mitosis codegen per framework) not run — the
change is a prop pass-through shaped exactly like the existing `enrich`
prop.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Additive, optional API and prop pass-through with gating on `enrich`;
main impact is fetch URL shape and editor preview alignment, not auth or
persistence.
>
> **Overview**
> Adds **`enrichOptions`** so reference enrichment can be bounded
(`enrichLevel`, per-model `fields`/`omit`) on content fetches and in the
Visual Editor preview.
>
> A new **`EnrichOptions`** type is wired into **`GetContentOptions`** /
**`fetchOneEntry`**. **`generateContentUrl`** JSON-serializes
`enrichOptions` on the query string only when **`enrich`** is true
(matching Content API behavior). The same option is exposed on
**`Content`** / **`ContentVariants`** and passed through
**`setupBrowserForEditing`** via the existing
**`builder.updateContent`** payload, so the editor can resolve
references with the same constraints as the site.
>
> Patch bumps are recorded for all framework SDK packages in the
changeset, with tests covering URL serialization and omission when
`enrich` is off.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
b13a7d3feadcd9b4128418add25791efd3ccc6f7. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> 37ab0381 📦 Publish SDKs (#4851)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @builder.io/react@9.4.6
### Patch Changes
- 08321f6: Fix: editing a block inside a Symbol's Slot no longer
remounts the Symbol. Slot content lives in `symbol.data.<slotName>`,
which keyed the nested `BuilderComponent`, so every keystroke rebuilt
the subtree and made the Visual Editor's inline edit popup flicker.
## @builder.io/sdk-angular@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react-nextjs@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-qwik@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react-native@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-solid@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-svelte@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-vue@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Release-only version and changelog updates; underlying changes are
patch-level editor UX and optional fetch enrichment APIs with
backward-compatible defaults.
>
> **Overview**
> This is a **Changesets release** PR: it bumps published package
versions, appends changelog entries, and removes the consumed changeset
files. No new implementation code appears in the diff.
>
> **@builder.io/react@9.4.6** ships a Visual Editor fix so editing
blocks inside a **Symbol Slot** no longer remounts the Symbol (nested
`BuilderComponent` was keyed on `symbol.data.<slotName>`, which changed
on every keystroke and caused inline-edit popup flicker).
>
> **Gen 2 SDKs** (`@builder.io/sdk-angular`, `-react`, `-react-nextjs`,
`-qwik`, `-react-native`, `-solid`, `-svelte`, `-vue` at their new patch
versions) document **`enrichOptions`** on `fetchOneEntry` and `Content`,
so reference enrichment can be limited (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor can reflect those fetch
constraints.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
31479b153ba1d43cb8ee4e9f58e02f72f25ef67e. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Signed-off-by: Aishwarya Parab <aishwaryaparab1@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> 079b10da 📦 Publish SDKs (#4851)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @builder.io/react@9.4.6
### Patch Changes
- 08321f6: Fix: editing a block inside a Symbol's Slot no longer
remounts the Symbol. Slot content lives in `symbol.data.<slotName>`,
which keyed the nested `BuilderComponent`, so every keystroke rebuilt
the subtree and made the Visual Editor's inline edit popup flicker.
## @builder.io/sdk-angular@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react-nextjs@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-qwik@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react-native@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-solid@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-svelte@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-vue@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Release-only version and changelog updates; underlying changes are
patch-level editor UX and optional fetch enrichment APIs with
backward-compatible defaults.
>
> **Overview**
> This is a **Changesets release** PR: it bumps published package
versions, appends changelog entries, and removes the consumed changeset
files. No new implementation code appears in the diff.
>
> **@builder.io/react@9.4.6** ships a Visual Editor fix so editing
blocks inside a **Symbol Slot** no longer remounts the Symbol (nested
`BuilderComponent` was keyed on `symbol.data.<slotName>`, which changed
on every keystroke and caused inline-edit popup flicker).
>
> **Gen 2 SDKs** (`@builder.io/sdk-angular`, `-react`, `-react-nextjs`,
`-qwik`, `-react-native`, `-solid`, `-svelte`, `-vue` at their new patch
versions) document **`enrichOptions`** on `fetchOneEntry` and `Content`,
so reference enrichment can be limited (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor can reflect those fetch
constraints.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
31479b153ba1d43cb8ee4e9f58e02f72f25ef67e. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Signed-off-by: Aishwarya Parab <aishwaryaparab1@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> 9847301e feat[sdk]: forward enrichOptions to the Visual Editor (#4845)
Pairs with BuilderIO/builder-internal#14691, which consumes this on the
editor side.
## Why
The Visual Editor does not use the site's SDK to fetch references for
its preview — it resolves them itself and postMessages the resolved
content into the iframe. So it never learns how the site fetched them,
and reference enrichment is unbounded by default (ENG-13486: a circular
reference pair fanning out to ~269KB). The editor had to pick a bound
blind.
The SDK already tells the editor `enrich`, `locale` and `modelName`
through `builder.updateContent`. This adds `enrichOptions` to that same
payload — no new message type.
## What
- `EnrichOptions` (`enrichLevel`, per-model `fields`/`omit`) added to
`fetchOneEntry` options and to `Content` / `ContentVariants` props
- `setupBrowserForEditing` forwards it, so it rides the existing
`builder.updateContent` `options`
- `generateContentUrl` applies it to the fetch, gated on `enrich` (the
content API ignores `enrichOptions` without `enrich=true`), so the value
you declare to the editor is one you can actually fetch with
Gen1 needed no change: `builder.class.ts` already posts its full get
options, `enrichOptions` included.
## Usage
```ts
const enrichOptions = { enrichLevel: 1, model: { product: { fields: 'title,price' } } };
const content = await fetchOneEntry({ model: 'page', apiKey, enrich: true, enrichOptions });
<Content model="page" content={content} apiKey={apiKey} enrich enrichOptions={enrichOptions} />
```
## Testing
`tsc --noEmit` and eslint clean; 154 SDK tests pass, including two new
`generate-content-url` cases (serialized alongside `enrich`, omitted
without it). `build:all` (mitosis codegen per framework) not run — the
change is a prop pass-through shaped exactly like the existing `enrich`
prop.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Additive, optional API and prop pass-through with gating on `enrich`;
main impact is fetch URL shape and editor preview alignment, not auth or
persistence.
>
> **Overview**
> Adds **`enrichOptions`** so reference enrichment can be bounded
(`enrichLevel`, per-model `fields`/`omit`) on content fetches and in the
Visual Editor preview.
>
> A new **`EnrichOptions`** type is wired into **`GetContentOptions`** /
**`fetchOneEntry`**. **`generateContentUrl`** JSON-serializes
`enrichOptions` on the query string only when **`enrich`** is true
(matching Content API behavior). The same option is exposed on
**`Content`** / **`ContentVariants`** and passed through
**`setupBrowserForEditing`** via the existing
**`builder.updateContent`** payload, so the editor can resolve
references with the same constraints as the site.
>
> Patch bumps are recorded for all framework SDK packages in the
changeset, with tests covering URL serialization and omission when
`enrich` is off.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
b13a7d3feadcd9b4128418add25791efd3ccc6f7. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> 37ab0381 📦 Publish SDKs (#4851)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @builder.io/react@9.4.6
### Patch Changes
- 08321f6: Fix: editing a block inside a Symbol's Slot no longer
remounts the Symbol. Slot content lives in `symbol.data.<slotName>`,
which keyed the nested `BuilderComponent`, so every keystroke rebuilt
the subtree and made the Visual Editor's inline edit popup flicker.
## @builder.io/sdk-angular@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react-nextjs@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-qwik@0.25.13
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-react-native@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-solid@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-svelte@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
## @builder.io/sdk-vue@5.2.11
### Patch Changes
- b0337c6: Add `enrichOptions` to `fetchOneEntry` and to `Content`, so
reference enrichment can be constrained (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor is told which constraints your
site fetches with.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Release-only version and changelog updates; underlying changes are
patch-level editor UX and optional fetch enrichment APIs with
backward-compatible defaults.
>
> **Overview**
> This is a **Changesets release** PR: it bumps published package
versions, appends changelog entries, and removes the consumed changeset
files. No new implementation code appears in the diff.
>
> **@builder.io/react@9.4.6** ships a Visual Editor fix so editing
blocks inside a **Symbol Slot** no longer remounts the Symbol (nested
`BuilderComponent` was keyed on `symbol.data.<slotName>`, which changed
on every keystroke and caused inline-edit popup flicker).
>
> **Gen 2 SDKs** (`@builder.io/sdk-angular`, `-react`, `-react-nextjs`,
`-qwik`, `-react-native`, `-solid`, `-svelte`, `-vue` at their new patch
versions) document **`enrichOptions`** on `fetchOneEntry` and `Content`,
so reference enrichment can be limited (`enrichLevel`, per-model
`fields`/`omit`) and the Visual Editor can reflect those fetch
constraints.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
31479b153ba1d43cb8ee4e9f58e02f72f25ef67e. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Signed-off-by: Aishwarya Parab <aishwaryaparab1@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> b0337c6c feat[sdk]: forward enrichOptions to the Visual Editor (#4845)
Pairs with BuilderIO/builder-internal#14691, which consumes this on the
editor side.
## Why
The Visual Editor does not use the site's SDK to fetch references for
its preview — it resolves them itself and postMessages the resolved
content into the iframe. So it never learns how the site fetched them,
and reference enrichment is unbounded by default (ENG-13486: a circular
reference pair fanning out to ~269KB). The editor had to pick a bound
blind.
The SDK already tells the editor `enrich`, `locale` and `modelName`
through `builder.updateContent`. This adds `enrichOptions` to that same
payload — no new message type.
## What
- `EnrichOptions` (`enrichLevel`, per-model `fields`/`omit`) added to
`fetchOneEntry` options and to `Content` / `ContentVariants` props
- `setupBrowserForEditing` forwards it, so it rides the existing
`builder.updateContent` `options`
- `generateContentUrl` applies it to the fetch, gated on `enrich` (the
content API ignores `enrichOptions` without `enrich=true`), so the value
you declare to the editor is one you can actually fetch with
Gen1 needed no change: `builder.class.ts` already posts its full get
options, `enrichOptions` included.
## Usage
```ts
const enrichOptions = { enrichLevel: 1, model: { product: { fields: 'title,price' } } };
const content = await fetchOneEntry({ model: 'page', apiKey, enrich: true, enrichOptions });
<Content model="page" content={content} apiKey={apiKey} enrich enrichOptions={enrichOptions} />
```
## Testing
`tsc --noEmit` and eslint clean; 154 SDK tests pass, including two new
`generate-content-url` cases (serialized alongside `enrich`, omitted
without it). `build:all` (mitosis codegen per framework) not run — the
change is a prop pass-through shaped exactly like the existing `enrich`
prop.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Additive, optional API and prop pass-through with gating on `enrich`;
main impact is fetch URL shape and editor preview alignment, not auth or
persistence.
>
> **Overview**
> Adds **`enrichOptions`** so reference enrichment can be bounded
(`enrichLevel`, per-model `fields`/`omit`) on content fetches and in the
Visual Editor preview.
>
> A new **`EnrichOptions`** type is wired into **`GetContentOptions`** /
**`fetchOneEntry`**. **`generateContentUrl`** JSON-serializes
`enrichOptions` on the query string only when **`enrich`** is true
(matching Content API behavior). The same option is exposed on
**`Content`** / **`ContentVariants`** and passed through
**`setupBrowserForEditing`** via the existing
**`builder.updateContent`** payload, so the editor can resolve
references with the same constraints as the site.
>
> Patch bumps are recorded for all framework SDK packages in the
changeset, with tests covering URL serialization and omission when
`enrich` is off.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
b13a7d3feadcd9b4128418add25791efd3ccc6f7. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> 5604e14e fix[abTests][gen1]: ENG-13175 A/B Variation Hydration Mismatch on First Server Render (#4844)
## Description
When you preview a non-default A/B variation, the page briefly shows the
default variation before switching to the one you asked for. This causes
a layout shift and a React hydration error. Reloading fixes it, so it
only happens on the first visit.
**Root Cause:**
The editor's preview link carries the chosen variation in the URL as
`builder.tests.<contentId>=<variationId>`, but nothing reads it early
enough:
- The server doesn't look at it, so the HTML ships all variations.
- The inlined variants script only checks the cookie. On a first visit
there is no cookie, so it picks a variation at random, usually the
default.
- The SDK then writes the URL's variation into the cookie, and React
hydrates with that value. It no longer matches the DOM, so React
re-renders and you see the switch.
**Fix:**
Both places that choose a variation now check the URL parameter first,
then fall back to the cookie, then to the random assignment as before:
- the inlined SSR script, so the correct variation is on screen at first
paint
- `VariantsProvider`'s browser branch, so hydration agrees with the DOM
The URL value is validated against the content's known variation ids,
and is read at runtime in the browser, so nothing untrusted is written
into the script.
**Link to JIRA ticket (if applicable):**
https://builder-io.atlassian.net/browse/ENG-13175
**Screenshot/Clip**
Bug: https://clips.agent-native.com/r/lqL0Ngm5BL7m
Fix: https://clips.agent-native.com/r/ByaNuJ0mjqwo
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Medium Risk**
> Changes first-paint A/B selection and cookie writes in a widely used
React path; behavior is constrained by validating URL ids against known
variations.
>
> **Overview**
> Fixes a **flash of the default A/B variation** (and hydration
mismatch) when previewing a variation via `builder.tests.<contentId>` on
first visit.
>
> **Variant selection precedence** is now aligned in two places: the
**inlined SSR variants script** and **`VariantsProvider`’s browser
path** both read `builder.tests.<contentId>` /
`builder_tests_<contentId>` first (validated against known variation
ids), then cookie, then random assignment. A valid URL choice is also
written to the cookie in the inlined script so later logic stays
consistent.
>
> Adds **Jest coverage** for inlined script syntax, URL vs cookie vs
random behavior in jsdom, and browser render matching the URL param when
no cookie is set. Ships as a **patch** to `@builder.io/react` via
changeset.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
ab6cac2b9e1fa649445e2fd7929419392fc2b062. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->