Version Packages - #3076
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
📦 Bundle Stats —
|
| Metric | Value | vs main (fbb9a98) |
|---|---|---|
| Internal (raw) | 807.2 KB | - |
| Internal (gzip) | 179.6 KB | - |
| Bundled (raw) | 1.42 MB | - |
| Bundled (gzip) | 347.4 KB | - |
| Import time | 99ms | +1ms, +0.9% |
@portabletext/editor/behaviors
| Metric | Value | vs main (fbb9a98) |
|---|---|---|
| Internal (raw) | 4.2 KB | - |
| Internal (gzip) | 1.4 KB | - |
| Bundled (raw) | 3.9 KB | - |
| Bundled (gzip) | 1.3 KB | - |
| Import time | 2ms | -0ms, -1.0% |
@portabletext/editor/plugins
| Metric | Value | vs main (fbb9a98) |
|---|---|---|
| Internal (raw) | 5.2 KB | - |
| Internal (gzip) | 1.8 KB | - |
| Bundled (raw) | 5.0 KB | - |
| Bundled (gzip) | 1.7 KB | - |
| Import time | 7ms | -0ms, -3.1% |
@portabletext/editor/selectors
| Metric | Value | vs main (fbb9a98) |
|---|---|---|
| Internal (raw) | 96.4 KB | - |
| Internal (gzip) | 22.3 KB | - |
| Bundled (raw) | 92.5 KB | - |
| Bundled (gzip) | 21.0 KB | - |
| Import time | 8ms | -0ms, -0.4% |
@portabletext/editor/traversal
| Metric | Value | vs main (fbb9a98) |
|---|---|---|
| Internal (raw) | 40.7 KB | - |
| Internal (gzip) | 10.6 KB | - |
| Bundled (raw) | 41.1 KB | - |
| Bundled (gzip) | 10.6 KB | - |
| Import time | 6ms | +0ms, +1.0% |
@portabletext/editor/utils
| Metric | Value | vs main (fbb9a98) |
|---|---|---|
| Internal (raw) | 34.1 KB | - |
| Internal (gzip) | 8.7 KB | - |
| Bundled (raw) | 32.5 KB | - |
| Bundled (gzip) | 8.5 KB | - |
| Import time | 6ms | +0ms, +3.4% |
🗺️ . · ./behaviors · ./plugins · ./selectors · ./traversal · ./utils · Artifacts
Details
- Import time regressions over 10% are flagged with
⚠️ - Sizes shown as raw / gzip 🗜️. Internal bytes = own code only. Total bytes = with all dependencies. Import time = Node.js cold-start median.
📦 Bundle Stats — @portabletext/markdown
Compared against main (fbb9a982)
| Metric | Value | vs main (fbb9a98) |
|---|---|---|
| Internal (raw) | 53.0 KB | - |
| Internal (gzip) | 11.6 KB | - |
| Bundled (raw) | 348.0 KB | - |
| Bundled (gzip) | 98.2 KB | - |
| Import time | 38ms | -0ms, -0.4% |
🗺️ View treemap · Artifacts
Details
- Import time regressions over 10% are flagged with
⚠️ - Sizes shown as raw / gzip 🗜️. Internal bytes = own code only. Total bytes = with all dependencies. Import time = Node.js cold-start median.
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 14, 2026 10:35
a3bf46f to
31fb1c5
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 14, 2026 10:37
31fb1c5 to
aa3be6d
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 14, 2026 11:06
aa3be6d to
3b85cde
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 14, 2026 12:23
3b85cde to
2e3bfe6
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 14, 2026 13:39
2e3bfe6 to
f4c46d3
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 17, 2026 07:27
f4c46d3 to
6693dd9
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 17, 2026 07:29
6693dd9 to
3293ae8
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 17, 2026 10:43
3ce8f0a to
b4f6ec1
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 17, 2026 11:45
b4f6ec1 to
a1f1c8d
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 17, 2026 11:48
a1f1c8d to
977a5db
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 17, 2026 11:49
977a5db to
58e642f
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 17, 2026 12:00
58e642f to
1d726a2
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 17, 2026 12:01
1d726a2 to
4b92f8e
Compare
ecoscript
Bot
force-pushed
the
changeset-release/main
branch
from
August 17, 2026 13:00
4b92f8e to
644f541
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release 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
@portabletext/block-tools@5.2.0
Minor Changes
#3074
d4d11e5Thanks @christianhg! - feat: re-exportcreateTableRulefrom@portabletext/html@portabletext/block-tools/rulesalready re-exportscreateFlattenTableRule; it now also re-exportscreateTableRule,@portabletext/html's deserializer rule for converting<table>HTML into a nested table shape.Patch Changes
b7610ec,0e3505b]:@portabletext/editor@7.11.0
Minor Changes
#3087
2f5c148Thanks @christianhg! - feat: promote the Behavior API from beta to publicThe Behavior API is no longer beta.
defineBehavior, the action creators (execute,forward,raise,effect),editor.registerBehavior, andBehaviorPluginare stable. Their types are stable too:Behavior,BehaviorAction,BehaviorActionSet,BehaviorEvent,SyntheticBehaviorEvent,NativeBehaviorEvent,CustomBehaviorEvent,BehaviorGuard, andInsertPlacement.The alpha primitive event forms stay alpha:
insert,remove.text,set,unset, and the explicitat/offsetform ofinsert.text.#3084
e7df9b8Thanks @christianhg! - feat: promote thecontainersintrospection map from alpha to publicsnapshot.context.containersis no longer alpha. Its types are stable too:Containers,RegisteredContainer,RegisteredSpan,RegisteredBlockObject,RegisteredInlineObject, andRegisteredPositional.OfDefinitionis now re-exported from the package root; it appears inRegisteredContainer['field'], whose shape is named via indexed access rather than a dedicated export.The map is the read side of node registration: entries keyed by container
_type, each carrying the array field that holds the container's editable children and any position-scoped child registrations.#3081
eb8cb6cThanks @christianhg! - feat: promote node registration from alpha to publicdefineContainer,defineTextBlock,defineSpan,defineBlockObject,defineInlineObject,editor.registerNode, andNodePluginare no longer alpha. Their types are stable too:Container,TextBlock,Span,BlockObject,InlineObject,RegistrableNode, and theContainerRender/ContainerRenderProps,SpanRender/SpanRenderProps,BlockObjectRender/BlockObjectRenderProps,InlineObjectRender/InlineObjectRenderProps, andTextBlockRender/TextBlockRenderPropspairs.This is the supported replacement for the deprecated
renderBlock,renderChild,renderStyle, andrenderListItemrender props:#3091
75d2dc4Thanks @christianhg! - feat: promote the surviving render-prop types from beta to publicRenderPlaceholderFunction,RenderEditableFunction, andScrollSelectionIntoViewFunctionare now@public: editor-chrome hooks with no replacement on the horizon.The content-rendering props stay
@beta:RenderAnnotationFunction,RenderDecoratorFunction, and their prop types alongside the already-deprecatedRenderBlockFunction,RenderChildFunction,RenderStyleFunction, andRenderListItemFunction.#3090
45fd070Thanks @christianhg! - feat: promote the config, offset, and editor-ref surface from beta to publicEditorConfig.keyGenerator,InvalidValueResolution,BlockOffset, andEditorRefPluginmove from@betato@public. Their shapes and behavior are unchanged; they now follow the package's normal semver guarantees.#3089
bfd7058Thanks @christianhg! - feat: promote the applicable-schema and mark-state selectors from beta to publicApplicableSchema,getApplicableSchema,compareApplicableSchema,MarkState, andgetMarkStateare now stable, public API. Their behavior is unchanged; only the stability guarantee changes.#3088
8c72f76Thanks @christianhg! - feat: promote the traversal utils from beta to publicThe traversal utilities are no longer beta:
getNode,getChildren,getParent,getSibling,getAncestor,getAncestors,getContainer,getFirstChild,getLastChild,getLeaf,getSpan,getText,getTextBlock,getAnnotation,getEnclosingBlock,getPathSubSchema,getUnionSchema,getBlock,isBlock,isInline,isLeafObject,isObject,hasNode,comparePoints,pathContains, andrangeIntersectsare all@publicnow and follow the package's normal semver guarantees.getContainerChildrenstays@beta.#3082
db10bb7Thanks @christianhg! - feat: promoteRangeDecorationandRangeDecorationOnMovedDetailsto public APIRangeDecorationandRangeDecorationOnMovedDetailsare no longer alpha. TherangeDecorationsprop onPortableTextEditablewas already public; the types it takes are now stable too:Patch Changes
#3092
5c61867Thanks @christianhg! - fix: deprecateEditableAPIDeleteOptionsin favor of behavior eventsEditableAPIDeleteOptionsis deprecated together with thePortableTextEditor.deletestatic it serves. Send adeletebehavior event (with an optionalunit) or adelete.blockevent viaeditor.sendinstead.#3075
9e3b7beThanks @christianhg! - fix: deprecate the block-level render props on<PortableTextEditable>renderBlock,renderChild,renderStyle, andrenderListItemare deprecated, along with their function types. They keep working, but node registrations (defineTextBlock,defineBlockObject,defineInlineObject,defineSpanmounted throughNodePlugin) are the supported way to render nodes, and list numbering comes from@portabletext/plugin-list-index. The migration guide walks through each prop: https://www.portabletext.org/editor/guides/migrate-render-props/The span-level props (
renderDecorator,renderAnnotation,renderPlaceholder) andrangeDecorationsare not deprecated.#3093
fbb9a98Thanks @christianhg! - fix: deprecate the legacy render-prop payload typesBlockRenderProps,BlockChildRenderProps,BlockStyleRenderProps, andBlockListItemRenderPropsare deprecated together with the render props they serve (renderBlock,renderChild,renderStyle,renderListItem). Type against the node registration API instead:BlockObjectRenderProps/TextBlockRenderPropsfor blocks,InlineObjectRenderProps/SpanRenderPropsfor children, anddefineTextBlockrender props for styles and list items. See the migration guide: https://www.portabletext.org/editor/guides/migrate-render-props/#3086
2c97777Thanks @christianhg! - fix: keep the drag source when a drop fits no blocksDropping blocks that the destination rejects entirely (a table cell whose schema accepts none of them, for example) deleted the drag source with nothing inserted. That drop is now a no-op.
Updated dependencies [
b7610ec,b7050a7,0e3505b,8ed2d1f]:@portabletext/html@1.2.0
Minor Changes
#3074
b7610ecThanks @christianhg! - feat: addcreateTableRulefor deserializing<table>HTML into a nested table shapecreateFlattenTableRulewas the only table deserializer, and it flattens a table into a list of standalone text blocks, losing the row/column structure.createTableRulekeeps it: it turns a<table>into one block carryingrows, each row carryingcells, each cell carrying a Portable Textvaluearray, the shape@portabletext/plugin-table'sdefineTableproduces.headerRowsis set from leading<thead>rows or an all-<th>first row, and omitted when there are none. Ragged rows are padded to the widest row with empty cells, andcolspan/rowspanare ignored: a spanning cell contributes one cell, and the padding fills the rest. Thecontainersoption matches adefineTablecall whose container names were renamed. It is role-keyed likedefineTable's own option and reads onlytypeandarrayField, so the same container definitions can be passed to both.Patch Changes
#3078
0e3505bThanks @christianhg! - fix: scopecreateFlattenTableRule's row and cell lookup to its own tableA table containing another table in one of its cells was not flattened at all: its cells came through as separate blocks, as if the rule had not been passed. Rows and cells are now read from the table's own
rowsandcellscollections, so a nested table stays inside the cell that holds it.@portabletext/markdown@1.5.0
Minor Changes
#3073
b7050a7Thanks @christianhg! - feat: convert GFM tables by defaultmarkdownToPortableTextnow converts GFM pipe tables to atableblock object out of the box, matching the shape@portabletext/plugin-tableexpects:headerRows, an optionalalignmentarray, androwsofrowobjects holdingcellobjects with avaluearray of Portable Text blocks. This only kicks in when the schema declares atableblock object with arowsfield; a schema without that keeps flattening table cells into plain blocks, as before. A consumer-suppliedtypes.tablematcher still wins over the default.portableTextToMarkdownnow renderstableblock objects back to GFM by default too, instead of a fenced JSON block. A value that isn't table-shaped falls back to the fenced JSON rendering. A consumer-suppliedtypes.tablerenderer still wins over the default.DefaultTableRenderernow treats a missing or non-positiveheaderRowsas headerless, rather than promoting the first row to a header.markdownToPortableTextalways setsheaderRowsexplicitly, so converting GFM to Portable Text and back is unaffected.#3079
8ed2d1fThanks @christianhg! - feat: render code, image, horizontal rule, HTML, and callout blocks to markdown by defaultportableTextToMarkdownnow renderscode,image,horizontal-rule,html, andcalloutblock objects back to Markdown by default, instead of a fenced JSON block. This matchestable, which already rendered as GFM by default.code,image,html, andcalloutfall back to the fenced JSON rendering when a value doesn't match the shape its renderer expects, for example a consumer's own differently-shapedcodetype reaching the renderer via the same_typename;horizontal-rulealways renders---. A consumer-suppliedtypesrenderer still wins over any of the defaults.@portabletext/editor's markdown clipboard picks this up via the automatic dependency bump: copying a code block, image, horizontal rule, HTML block, or callout out of the editor now produces real Markdown instead of a fenced JSON block.One narrow behavioral fix rides along: when a
calloutorDefaultBlockquoteObjectRenderercontent entry falls back to fenced JSON, the JSON is the original value; previously it carried astyle: 'normal'field injected by the renderer.@portabletext/plugin-character-pair-decorator@8.0.48
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/plugin-dnd@1.0.32
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/plugin-emoji-picker@7.0.48
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/plugin-input-rule@6.0.17
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/plugin-list-index@1.0.32
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/plugin-markdown-shortcuts@8.0.48
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/plugin-one-line@7.0.47
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/plugin-paste-link@4.0.47
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/plugin-sdk-value@7.2.5
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/plugin-table@1.3.17
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/plugin-typeahead-picker@6.0.48
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/plugin-typography@8.0.48
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]:@portabletext/toolbar@8.0.47
Patch Changes
5c61867,9e3b7be,fbb9a98,2c97777,2f5c148,e7df9b8,eb8cb6c,75d2dc4,45fd070,bfd7058,8c72f76,db10bb7]: