From e3f72465c6b40fadebe344b208f6d65fe0deb548 Mon Sep 17 00:00:00 2001 From: Davide Barranca Date: Mon, 7 Sep 2026 12:17:24 +0200 Subject: [PATCH 1/6] EXTDEVEX-626: expand Large Document Support docs for ACF follow-ups - Document mutating-API behavior in keepContentActiveDuringAsync on both the platform-concepts and how-to pages: edits belong in the synchronous follow-up (afterAsyncCallback), not the async lambda; some APIs are mutating by their underlying implementation even when they look read-only; heed the runtime error and move the call. Cross-link the two pages. - Note the visitPages progress-bar UI may evolve, with no breaking changes. - Add a testing-environment callout: expected Express glitches there are fixed automatically at rollout, and how to tell an environment issue from an add-on issue. - Swap the add-on checker download to acf-safety-check-skill.zip and refresh its description; fix a broken #testing cross-link anchor in the how-to. - Add mirrored FAQ entries and keywords on both pages. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../learn/how-to/large-document-support.md | 16 ++++++- .../large-document-support.md | 39 ++++++++++++++++-- static/zip/acf-safety-check-skill.zip | Bin 0 -> 43775 bytes 3 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 static/zip/acf-safety-check-skill.zip diff --git a/src/pages/guides/learn/how-to/large-document-support.md b/src/pages/guides/learn/how-to/large-document-support.md index 3fca72cbb..4aeabdccd 100644 --- a/src/pages/guides/learn/how-to/large-document-support.md +++ b/src/pages/guides/learn/how-to/large-document-support.md @@ -29,6 +29,8 @@ keywords: - experimentalApis - feature flag - testing + - mutating API + - afterAsyncCallback title: Support Large Documents description: Update your add-on for Large Document Support—visit pages safely, keep content active across async operations, and replace deprecated APIs. contributors: @@ -57,6 +59,8 @@ faq: answer: "Open https://new.express.adobe.com/lArg3-d0c-supp0rt-4-add0ns in its own browser tab—that URL enforces Large Document Support for developer testing. Stress-test with your add-on open: add pages, switch pages in the UI mid-operation, use very long documents, and re-run whole-document passes and async workflows. Don't share the URL with end users." - question: "Do my iframe (Add-on UI SDK) APIs need changes?" answer: "No. If your add-on uses only the iframe `document.*` APIs—`createRenditions`, `getPagesMetadata`, `addImage`—Adobe Express activates the pages those calls need for you. Migration applies to Document Sandbox code (`editor.*`, `pages.*`)." + - question: "Why do I get a mutating-API error inside a keepContentActiveDuringAsync callback?" + answer: "A mutating API was called from the async lambda (the first callback), which is only for awaiting. Move every document edit into the `afterAsyncCallback`. Some APIs mutate under the hood even when they look read-only—so trust the runtime error and relocate the call." --- # Support Large Documents @@ -218,6 +222,8 @@ await editor.keepContentActiveDuringAsync( Do all your document edits in the third argument, the `afterAsyncCallback`—it runs synchronously while the target is still active. Once it returns, the target may become inaccessible again, so don't hold the reference past that point. +Put **every mutating call** in the follow-up, not the async lambda—including calls that don't look like edits. Some APIs mutate the document as part of their implementation even though their purpose reads as read-only. Call a mutating API from the async lambda and Adobe Express throws a runtime error; move that call into the `afterAsyncCallback` to fix it. For why an API can be mutating when its name isn't, see [Large Document Support](../platform-concepts/large-document-support.md#keepcontentactiveduringasync). + ## Replace deprecated APIs Several content-access APIs that assumed every page was loaded are deprecated and move to `ActivePageNode`. Update each call to run against an active page (from `visitPages()` or `editor.context.currentPage`). All are removed from the SDK during [Phase 2](../platform-concepts/large-document-support.md#rollout-and-migration-timeline) of the migration. @@ -281,7 +287,11 @@ When this happens, Adobe Express fails fast with an actionable error rather than ## Test your add-on with Large Document Support -Don't assume that testing in regular Express exercises this behavior. Use the dedicated Large Document Support testing URL so pages are activated and deactivated as they will be in production, then validate your add-on—especially whole-document passes and any operation that spans an `await`. For background on what the testing environment exercises, see [Large Document Support](../platform-concepts/large-document-support.md#testing). +Don't assume that testing in regular Express exercises this behavior. Use the dedicated Large Document Support testing URL so pages are activated and deactivated as they will be in production, then validate your add-on—especially whole-document passes and any operation that spans an `await`. For background on what the testing environment exercises, see [Large Document Support](../platform-concepts/large-document-support.md#testing-your-add-on-with-large-document-support). + + + +Some glitches you hit here come from Adobe Express itself, not your add-on—they're expected in the testing environment and fixed automatically at rollout. Reproduce a suspect step in regular Express without your add-on to tell the two apart. ### Open the testing environment @@ -346,3 +356,7 @@ Keep this testing environment to yourself—do not share the URL with your add-o #### Q: Do my iframe (Add-on UI SDK) APIs need changes? **A:** No. If your add-on uses only the iframe `document.*` APIs—`createRenditions`, `getPagesMetadata`, `addImage`—Adobe Express activates the pages those calls need for you. Migration applies to Document Sandbox code (`editor.*`, `pages.*`). + +#### Q: Why do I get a mutating-API error inside a keepContentActiveDuringAsync callback? + +**A:** A mutating API was called from the async lambda (the first callback), which is only for awaiting. Move every document edit into the `afterAsyncCallback`. Some APIs mutate under the hood even when they look read-only—so trust the runtime error and relocate the call. diff --git a/src/pages/guides/learn/platform-concepts/large-document-support.md b/src/pages/guides/learn/platform-concepts/large-document-support.md index 584b4d2f0..741e256e8 100644 --- a/src/pages/guides/learn/platform-concepts/large-document-support.md +++ b/src/pages/guides/learn/platform-concepts/large-document-support.md @@ -31,6 +31,9 @@ keywords: - rollout - phases - migration window + - mutating API + - afterAsyncCallback + - testing environment title: Large Document Support description: How Adobe Express works with documents whose pages aren't all loaded at once: the active/inactive page model, the safe APIs, and the phased migration. contributors: @@ -67,6 +70,10 @@ faq: answer: "Impacted marketplace add-ons that are not updated by the end of the migration window may be removed from the marketplace, and users may see compatibility warnings before then. Updating the code is not enough on its own—an impacted marketplace add-on must be resubmitted to be recognized as compatible." - question: "Are private and internally distributed add-ons affected?" answer: "Yes, they are subject to the same behavior changes, but the enforcement differs: they are not automatically removed, and the responsibility for updating them rests with their owners. If left unmodified, they may stop working correctly once the migration period ends." + - question: "Why do I get a mutating-API error inside keepContentActiveDuringAsync?" + answer: "Because a mutating API was called from the async lambda—the first callback, which is only for waiting. Every document change must happen in the synchronous follow-up (afterAsyncCallback). Some APIs are mutating because of their underlying implementation even when they look read-only, so judge an API by its effect rather than by whether its name sounds read-only. When you see the error, move that call into the follow-up." + - question: "I see glitches in the testing environment—is my add-on broken?" + answer: "Not necessarily. The testing URL turns on Large Document Support ahead of the production rollout, so you may hit rough edges in Express itself. These are known and expected there, and they are fixed automatically as the rollout proceeds. To tell an environment issue from an add-on issue, reproduce the same step in regular Express without your add-on; if it still happens, it is the environment." canonical: true ai_assistant_note: "This is the canonical explanation of Large Document Support (internally, the Active Content Facade or ACF) for Adobe Express add-ons. Use it to explain the active/inactive page model, @@ -109,11 +116,13 @@ If terms like _page_, _artboard_, and _scenegraph_ are unfamiliar, start with th Not every add-on is affected. An add-on that performs synchronous operations on the current page, and doesn't carry node references across asynchronous waits, generally needs no changes. If your add-on depends on content being available everywhere, all the time, you should review the rest of this page and the [Support Large Documents](../how-to/large-document-support.md) how-to. - + #### Large Document Support Checker Skill -To help you triage, Adobe provides the [Large Document Support add-on check skill](https://github.com/AdobeDocs/express-add-ons-docs/raw/refs/heads/main/static/zip/large-document-support-add-on-check.zip)—a tool that you can use with your LLM of choice, to scan your add-on's code for the deprecated APIs and the unsafe node-reference patterns described on this page and flag whether it is likely impacted. +To help you triage, Adobe provides the [Large Document Support add-on check skill](https://github.com/AdobeDocs/express-add-ons-docs/raw/refs/heads/main/static/zip/acf-safety-check-skill.zip)—a lightweight tool you run with your LLM of choice. It scans your add-on's own source directly, with no build step and no bundling: you point it at your source folder and it flags the exact unsafe patterns this page describes—the deprecated APIs and the node-reference shapes that break under the new model. For each finding it explains _why_ that shape breaks and shows a before/after fix; it can apply the fixes on request, re-check afterward, and doubles as a CI or pre-commit gate. + +**Try it:** just ask your agent to "check my add-on for Large Document Support safety using the `acf-safety-check-skill`" and point it at your add-on folder. **Treat its result as a starting point** for assessment, not a verdict: it can produce false positives and false negatives, so always validate against the [testing environment](#testing-your-add-on-with-large-document-support) regardless of what it reports. @@ -238,7 +247,7 @@ visitPages( ): Promise; ``` -Because a pass over a large document can take several seconds, Express shows a **modal progress bar** while `visitPages()` runs, whose UI may see minor changes in later releases. The dialog blocks the user from switching pages while your callback executes—so the page it hands you cannot be pulled out from under you mid-pass—and it appears only after a short minimum delay, so a quick pass doesn't flash a dialog on screen. It also carries a way to cancel the operation, **rejecting the promise** `visitPages()` returned. +Because a pass over a large document can take several seconds, Express shows a **modal progress bar** while `visitPages()` runs, whose UI may see minor changes in later releases—cosmetic refinements that introduce **no breaking changes** for your add-on. The dialog blocks the user from switching pages while your callback executes—so the page it hands you cannot be pulled out from under you mid-pass—and it appears only after a short minimum delay, so a quick pass doesn't flash a dialog on screen. It also carries a way to cancel the operation, **rejecting the promise** `visitPages()` returned. ![visitPages progress bar](./images/LDS--progress-bar.png) @@ -260,6 +269,16 @@ keepContentActiveDuringAsync( Both `visitPages()` and `keepContentActiveDuringAsync()` shipped as **experimental** in the first phase of the rollout (see above). As of **Phase 2** they have graduated to **stable**: they now sit inside the usual stability guarantees, and you no longer need the `experimentalApis` flag to call them. +**Which work goes in which callback matters.** The async lambda is for _waiting_—the network request, the translation call—and must not change the document. Every edit belongs in the synchronous follow-up (`afterAsyncCallback`), which Express runs while the target is still active. The split is enforced: call a **mutating** API from the async lambda and Express throws a runtime error rather than let a change land against a page that may already have gone inactive. + + + +#### Mutating APIs + +An API can be _mutating_ because of what it does under the hood, not because of what it appears to do from the outside. When that is the case, they belong **in the follow-up, not the async lambda**. + +When you call a mutating API in the wrong place, Express fails fast with a runtime error that names the problem. **Treat that error as an instruction**: move the offending call into the synchronous follow-up. For the step-by-step pattern, see [Keep content active during async operations](../how-to/large-document-support.md#keep-content-active-during-async-operations) in the how-to. + ### Common migration mistakes @@ -304,6 +323,12 @@ We are introducing a dedicated testing URL that turns on Large Document Support Regular Express does not exercise page activation and deactivation the way production will once Large Document Support is fully rolled out. This URL acts as a developer feature flag: it enforces the active/inactive page behavior so you can see whether your add-on still works when content is not guaranteed to stay available everywhere, all the time. + + +#### Some glitches in the testing environment are expected + +Because this URL turns the new model on ahead of the production rollout, you may hit rough edges in Express itself while testing—behavior that looks like a bug but isn't coming from your add-on. These are **known and expected in the testing environment**, and they are fixed automatically as Large Document Support rolls out in Express. When something misbehaves, separate a native Express issue from an add-on issue first: reproduce the same step in regular Express _without_ your add-on. If it happens there too, it's the environment, not your code. + **Stress-test with your add-on open.** The failure modes users trigger without thinking about them are the ones worth reproducing deliberately: add new pages, run asynchronous operations, and change the active page in the Express UI while your add-on is still mid-operation. Use very long documents with a lot of content, and repeat those flows. Whole-document passes, async work that spans an `await`, and any logic that assumes every page's content stays reachable are where silent failures and stale-reference errors tend to surface first. Keep this testing environment to yourself—do not share the URL with your add-on's users, to avoid any confusion or misuse with other developers' add-ons. For the migration patterns to validate against it, see the [Support Large Documents](../how-to/large-document-support.md) how-to. @@ -370,6 +395,14 @@ Impacted marketplace add-ons that are not updated by the end of the migration wi Yes, they are subject to the same behavior changes, but the enforcement differs: they are not automatically removed, and the responsibility for updating them rests with their owners. If left unmodified, they may stop working correctly once the migration period ends. +#### Why do I get a mutating-API error inside keepContentActiveDuringAsync? + +Because a mutating API was called from the async lambda—the first callback, which is only for waiting. Every document change must happen in the synchronous follow-up (`afterAsyncCallback`). Some APIs are mutating because of their underlying implementation even when they look read-only, so judge an API by its effect rather than by whether its name sounds read-only. When you see the error, move that call into the follow-up. + +#### I see glitches in the testing environment—is my add-on broken? + +Not necessarily. The testing URL turns on Large Document Support ahead of the production rollout, so you may hit rough edges in Express itself. These are known and expected there, and they are fixed automatically as the rollout proceeds. To tell an environment issue from an add-on issue, reproduce the same step in regular Express without your add-on; if it still happens, it's the environment. + ## Related Topics diff --git a/static/zip/acf-safety-check-skill.zip b/static/zip/acf-safety-check-skill.zip new file mode 100644 index 0000000000000000000000000000000000000000..a20dd729742366533c19e8017f8f4c9838a9d617 GIT binary patch literal 43775 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 ZMA+tt@PL2{sDJ@K1)wp3#gFi>{{l)hPJ;jd literal 0 HcmV?d00001 From b41b1ea713ef735ff480f59bf920b134fdde4170 Mon Sep 17 00:00:00 2001 From: Davide Barranca Date: Mon, 7 Sep 2026 14:45:36 +0200 Subject: [PATCH 2/6] Rename skill --- ...rge-document-support-add-on-check-skill.zip} | Bin .../zip/large-document-support-add-on-check.zip | Bin 12356 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) rename static/zip/{acf-safety-check-skill.zip => large-document-support-add-on-check-skill.zip} (100%) delete mode 100644 static/zip/large-document-support-add-on-check.zip diff --git a/static/zip/acf-safety-check-skill.zip b/static/zip/large-document-support-add-on-check-skill.zip similarity index 100% rename from static/zip/acf-safety-check-skill.zip rename to static/zip/large-document-support-add-on-check-skill.zip diff --git a/static/zip/large-document-support-add-on-check.zip b/static/zip/large-document-support-add-on-check.zip deleted file mode 100644 index 9f55e09bfe5c87a9997d18a52a4af52f1022e0ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12356 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 Date: Mon, 7 Sep 2026 14:51:34 +0200 Subject: [PATCH 3/6] Update skill link --- .../guides/learn/platform-concepts/large-document-support.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/guides/learn/platform-concepts/large-document-support.md b/src/pages/guides/learn/platform-concepts/large-document-support.md index 741e256e8..e1f6c273c 100644 --- a/src/pages/guides/learn/platform-concepts/large-document-support.md +++ b/src/pages/guides/learn/platform-concepts/large-document-support.md @@ -120,7 +120,7 @@ Not every add-on is affected. An add-on that performs synchronous operations on #### Large Document Support Checker Skill -To help you triage, Adobe provides the [Large Document Support add-on check skill](https://github.com/AdobeDocs/express-add-ons-docs/raw/refs/heads/main/static/zip/acf-safety-check-skill.zip)—a lightweight tool you run with your LLM of choice. It scans your add-on's own source directly, with no build step and no bundling: you point it at your source folder and it flags the exact unsafe patterns this page describes—the deprecated APIs and the node-reference shapes that break under the new model. For each finding it explains _why_ that shape breaks and shows a before/after fix; it can apply the fixes on request, re-check afterward, and doubles as a CI or pre-commit gate. +To help you triage, Adobe provides the [Large Document Support add-on check skill](https://raw.githubusercontent.com/AdobeDocs/express-add-ons-docs/refs/heads/main/static/zip/large-document-support-add-on-check-skill.zip)—a lightweight tool you run with your LLM of choice. It scans your add-on's own source directly, with no build step and no bundling: you point it at your source folder and it flags the exact unsafe patterns this page describes—the deprecated APIs and the node-reference shapes that break under the new model. For each finding it explains _why_ that shape breaks and shows a before/after fix; it can apply the fixes on request, re-check afterward, and doubles as a CI or pre-commit gate. **Try it:** just ask your agent to "check my add-on for Large Document Support safety using the `acf-safety-check-skill`" and point it at your add-on folder. From 664744f6fa8579d55cc422635d292eaea097f65e Mon Sep 17 00:00:00 2001 From: Davide Barranca Date: Mon, 7 Sep 2026 15:09:25 +0200 Subject: [PATCH 4/6] Add changelog --- src/pages/guides/getting-started/changelog.md | 7 +++++++ src/pages/references/changelog.md | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/pages/guides/getting-started/changelog.md b/src/pages/guides/getting-started/changelog.md index 6d3122c95..117155683 100644 --- a/src/pages/guides/getting-started/changelog.md +++ b/src/pages/guides/getting-started/changelog.md @@ -25,6 +25,13 @@ contributors: # Changelog +## 2026-09-07 + +### Updated + +- The **Large Document Support add-on check** [skill](../learn/platform-concepts/large-document-support.md#large-document-support-checker-skill) is now more capable: it scans your add-on's source directly (no build step or bundling), explains why each finding breaks and shows a before/after fix, can apply the fixes on request, and doubles as a CI or pre-commit gate. +- [Large Document Support](../learn/platform-concepts/large-document-support.md) concepts and [how-to](../learn/how-to/large-document-support.md) guides have been amended to better clarify how mutating APIs must belong to the [`keepContentActiveDuringAsync()`](../../references/document-sandbox/document-apis/classes/editor.md#keepcontentactiveduringasync) second lambda function. + ## 2026-09-01 ### Added diff --git a/src/pages/references/changelog.md b/src/pages/references/changelog.md index 16370f153..00692859d 100644 --- a/src/pages/references/changelog.md +++ b/src/pages/references/changelog.md @@ -25,6 +25,13 @@ contributors: # Changelog +## 2026-09-07 + +### Updated + +- The **Large Document Support add-on check** [skill](../guides/learn/platform-concepts/large-document-support.md#large-document-support-checker-skill) is now more capable: it scans your add-on's source directly (no build step or bundling), explains why each finding breaks and shows a before/after fix, can apply the fixes on request, and doubles as a CI or pre-commit gate. +- [Large Document Support](../guides/learn/platform-concepts/large-document-support.md) concepts and [how-to](../guides/learn/how-to/large-document-support.md) guides have been amended to better clarify how mutating APIs must belong to the [`keepContentActiveDuringAsync()`](./document-sandbox/document-apis/classes/editor.md#keepcontentactiveduringasync) second lambda function. + ## 2026-09-01 ### Added From 4ea02d768a38534173a7eb30058f88f9b85251b1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 7 Sep 2026 13:16:02 +0000 Subject: [PATCH 5/6] chore: auto-generate contributors --- src/pages/contributors.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pages/contributors.json b/src/pages/contributors.json index eb7d3e08e..9c1fc8ffd 100644 --- a/src/pages/contributors.json +++ b/src/pages/contributors.json @@ -379,12 +379,12 @@ { "page": "/guides/getting-started/changelog", "avatars": [ - "https://avatars.githubusercontent.com/u/359935?v=4", "https://avatars.githubusercontent.com/u/5939127?v=4", + "https://avatars.githubusercontent.com/u/359935?v=4", "https://avatars.githubusercontent.com/u/14320591?v=4", "https://avatars.githubusercontent.com/u/113968869?v=4" ], - "lastUpdated": "9/1/2026" + "lastUpdated": "9/7/2026" }, { "page": "/guides/getting-started/code-playground", @@ -582,7 +582,7 @@ "avatars": [ "https://avatars.githubusercontent.com/u/5939127?v=4" ], - "lastUpdated": "7/31/2026" + "lastUpdated": "9/7/2026" }, { "page": "/guides/learn/how-to/local-data-management", @@ -836,7 +836,7 @@ "avatars": [ "https://avatars.githubusercontent.com/u/5939127?v=4" ], - "lastUpdated": "8/10/2026" + "lastUpdated": "9/7/2026" }, { "page": "/guides/learn/samples", @@ -1005,8 +1005,8 @@ { "page": "/references/changelog", "avatars": [ - "https://avatars.githubusercontent.com/u/359935?v=4", "https://avatars.githubusercontent.com/u/5939127?v=4", + "https://avatars.githubusercontent.com/u/359935?v=4", "https://avatars.githubusercontent.com/u/14320591?v=4", "https://avatars.githubusercontent.com/u/113968869?v=4", "https://avatars.githubusercontent.com/u/77717258?v=4", @@ -1014,7 +1014,7 @@ "https://avatars.githubusercontent.com/u/97891206?v=4", "https://avatars.githubusercontent.com/u/25365634?v=4" ], - "lastUpdated": "9/1/2026" + "lastUpdated": "9/7/2026" }, { "page": "/references/document-sandbox/", From 6b6116120d662268c86d6f336d479c0632ab1541 Mon Sep 17 00:00:00 2001 From: Davide Barranca Date: Mon, 7 Sep 2026 15:26:05 +0200 Subject: [PATCH 6/6] Rephrase wording --- .../guides/learn/platform-concepts/large-document-support.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/guides/learn/platform-concepts/large-document-support.md b/src/pages/guides/learn/platform-concepts/large-document-support.md index e1f6c273c..adb11d984 100644 --- a/src/pages/guides/learn/platform-concepts/large-document-support.md +++ b/src/pages/guides/learn/platform-concepts/large-document-support.md @@ -122,7 +122,7 @@ Not every add-on is affected. An add-on that performs synchronous operations on To help you triage, Adobe provides the [Large Document Support add-on check skill](https://raw.githubusercontent.com/AdobeDocs/express-add-ons-docs/refs/heads/main/static/zip/large-document-support-add-on-check-skill.zip)—a lightweight tool you run with your LLM of choice. It scans your add-on's own source directly, with no build step and no bundling: you point it at your source folder and it flags the exact unsafe patterns this page describes—the deprecated APIs and the node-reference shapes that break under the new model. For each finding it explains _why_ that shape breaks and shows a before/after fix; it can apply the fixes on request, re-check afterward, and doubles as a CI or pre-commit gate. -**Try it:** just ask your agent to "check my add-on for Large Document Support safety using the `acf-safety-check-skill`" and point it at your add-on folder. +**Try it:** just ask your agent to "check my add-on for Large Document Support safety using the provided skill" and point it at your add-on folder. **Treat its result as a starting point** for assessment, not a verdict: it can produce false positives and false negatives, so always validate against the [testing environment](#testing-your-add-on-with-large-document-support) regardless of what it reports.