Add a comprehensive guide on the actions framework.
Review Request #15060 — Created May 15, 2026 and submitted
This adds a new page that covers how to customize the UI using the
actions framework and action hooks. It walks through building a basic
action, customizing it for different needs, introducing JavaScript
support, custom rendering, and then how to use actions in the main
places in which they're supported.This replaces the old action documentation, which was out of date with
the new changes in 8.0 and were constrained to theActionHookpage.This will give us something that we can reference in the release notes,
give developers a solid starting point for writing actions, and give AI
agents enough information and links to assist others with that process.
Checked for spelling, link, and build errors.
Ran through Claude Code to check for any noticeable issues, including
inconsistency issues with the sample code or descriptions of attributes
and methods.
| Summary | ID |
|---|---|
| ea81668f11d65770adfcf0782a469fbe3113b498 |
| Description | From | Last Updated |
|---|---|---|
|
Let's add a const myExtraState = this.get('myExtraState'); in here and the Spina example for good measure. |
|
|
|
Let's add "This will place a menu in the header area (where your account menu lives)." here too. Even though … |
|
|
|
We could say something like "This needs to be done to actually allow actions to be used"? Just something to … |
|
|
|
This should say "Adding to built-in header menus". |
|
|
|
This should say "Adding to built-in review request menus". |
|
|
|
I think "review request action bar" is probably better here. |
|
|
|
I like the writing in the header menu section better, I like how we say: "... by including the menu's … |
|
|
|
Can we say here that if this is not specified, it will render on all pages that contain the attachment … |
|
|
|
This is missing required items like action_id. Could either add those or use ... like you do in some of … |
|
|
|
This reads a little bit weird, especially since the example is down lower. Can we move the example above the … |
|
|
|
Should we also mention REVIEW_REQUEST_LEFT? |
|
|
|
Most other places that you're listing action IDs they use double quotes. |
|
|
|
Shouldn't this just be "actions"? (alternatively, move the file into the extensions directory). |
|
- Change Summary:
-
Added some page anchors.
- Commits:
-
Summary ID be87287c9e8622fa1300b23290470a1f47fdaa8e 9b5fa4b84394ca9a1e95d18f4376ed0bf410d0ab
Checks run (2 succeeded)
-
-
Let's add a
const myExtraState = this.get('myExtraState');in here and the Spina example for good measure. -
Let's add "This will place a menu in the header area (where your account menu lives)." here too. Even though we already say that in the general action docs above, it'd be useful here if someone just skips to this section without reading the other stuff.
-
We could say something like "This needs to be done to actually allow actions to be used"? Just something to stress that this needs to be done, for people who aren't familiar with registering and what it means I guess.
-
-
-
-
I like the writing in the header menu section better, I like how we say:
"... by including the menu's
action ID as the placement'sparent_id.The following action IDs are available:"
- Change Summary:
-
- Added a
this.get('...')example to both the JavaScript and TypeScript docs. - Improved some wording and made it more consistent between sections.
- Expanded the titles for some subsections.
- Added a
- Commits:
-
Summary ID 9b5fa4b84394ca9a1e95d18f4376ed0bf410d0ab 5a65068f9b4749f95c9b7ed5db976d09beccae77
Checks run (2 succeeded)
-
-
Can we say here that if this is not specified, it will render on all pages that contain the attachment point?
-
This is missing required items like
action_id. Could either add those or use...like you do in some of the other examples. -
This reads a little bit weird, especially since the example is down lower.
Can we move the example above the variable list?
-
-
-
- Change Summary:
-
- Clarified
apply_to's behavior when empty. - Added a missing
...to an action example. - Fixed up the order and wording around a sample template.
- Fixed a case of action IDs that were using single instead of double quotes.
- Fixed the location of the file.
- Clarified
- Commits:
-
Summary ID 5a65068f9b4749f95c9b7ed5db976d09beccae77 ea81668f11d65770adfcf0782a469fbe3113b498