Releases
Alle veröffentlichten Flow-Releases mit ihren Highlights, Migrationshinweisen und den enthaltenen Fixes.1.0.0 – 1.0.0Major
Semantic Versioning is a promise now, not an intention
Highlights
1.0.0carries no breaking change over0.2.0-alpha.1058. Coming from the last alpha, the upgrade is a version bump and nothing else.- Semantic Versioning is binding from here on: an incompatible change to the runtime public API only ever ships in a new major (ADR 0005, RFC #2711).
- Deprecate, don't break — an API that is going away stays functional and warns at runtime first. That warning is your lead time before the next major.
- Every
@mittwald/flow-*package keeps sharing one version, so the promise reads identically for all of them,@mittwald/flow-remote-react-componentsincluded. - Deliberately not covered, so the design system can keep moving: TypeScript types, CSS class names, design tokens, and the internal DOM structure.
- New docs page under Get Started walks through what the release means per audience and how to catch up from an older alpha.
Deprecations
Nothing is newly deprecated in 1.0.0. What changed is the removal date: every path deprecated during the alpha keeps working and now disappears at 2.0.0, not before.
Align→Combine(#2871) — codemodflowAlphaAlignToCombineSegmentedControl/Segment→Tabs(switching content) orRadioGroup(setting a value) (#2903) — no codemod, the replacement is a decision per usage- The global
flagsobject →ComponentDefaultsProvider, which also works per subtree (#2796) Button/SubmitButton:color="accent"→color="success"(#2874) — codemodflowAlphaButtonColorAccentToSuccessAction:action→onAction— codemodflowAlphaActionPropToOnAction
What the version number now guarantees
An incompatible change to any of these only appears in a new major: the runtime public API of public.ts (which components and exports exist, which props they accept, and the documented behaviour of documented functions), the props of the components in @mittwald/flow-remote-react-components, published icons, and the versioned remote protocol.
Node and React are runtime requirements with explicit rules. The Node floor is the actively supported LTS — currently node >=24 — and dropping a version still inside its LTS window is breaking, while dropping an already-EOL one may ship in a minor. Widening the accepted React range is backwards compatible; raising the minimum is breaking.
TypeScript types stay best-effort and are not covered, so a tsc error can in theory appear in a patch. If that would be expensive for your project, pin exact versions instead of ^ ranges. A deliberate type break still ships a migration note.
One override exists: a component's lifecycle status. A Beta component is exempt from the breaking-change promise while its API is still moving; Stable is the default and fully bound; Deprecated stays covered until it is removed in a major.
What it means for mStudio extensions
The props of the components in @mittwald/flow-remote-react-components are the contract with extension developers and carry the same promise as the React components. The remote protocol is versioned and negotiated when the connection is established, so an extension built against an older Flow keeps running when the mStudio host updates.
@mittwald/ext-bridge shares the version but has its own migration guide and a stricter Node rule: for that package, any raise of the Node floor is a breaking change, regardless of EOL, and its floor may be more conservative than the rest. Since the alpha it requires node >=24 and narrows its React peer range to ^19.2.0. Declared context parameters are typed and optional config values are never null any more, so reading config.containerId no longer needs a runtime narrow (#2889).
Migrations
From 0.2.0-alpha.1058 there is nothing to do. Coming from an older alpha, the work sits between the alphas, not in 1.0.0. Every change below has a before/after entry in the migration guide — @mittwald/flow-react-components (which also covers the remote package) and @mittwald/ext-bridge. The oldest 0.2.0-alpha entry is the jump to 0.2.0-alpha.646, so from anything around 0.2.0-alpha.600 this list is complete.
Renames — one codemod does all four. Action's action → onAction (alpha.646), color="primary" → color="default" on Breadcrumb, HeaderNavigation, Heading, IllustratedMessage and Link (alpha.846), Button's color="accent" → color="success" (alpha.1046), and Align → Combine (alpha.1047):
Replace src with your sources folder. It changes files in place — run it on a clean git state and review the diff. It is not a prerequisite: the old paths still work in 1.x. It does not touch CSS class names or token variables (the accent → success and Align → Combine renames hit those too, so adjust them by hand if you use @mittwald/flow-stylesheet or the token CSS variables directly), and it does not include the 0.1.0 → 0.2.0 transform — run that one separately and only when coming from 0.1.0.
By hand.
- Removed escape hatches. The
renderprop is gone from TableCell (alpha.846) and Table (alpha.866) — compose the table from its parts.TableColumn.maxWidthis removed, andwidth/minWidtharenumber | stringwithoutnull(alpha.956). CodeBlock lost many props when the syntax-highlighting library was replaced (alpha.756). - Changed defaults. A Modal containing a dirty react-hook-form
Formasks for confirmation before closing (alpha.1005). AForminside a Modal resets after the modal closes;autoReset={false}opts out (alpha.694). - Reshaped APIs.
flags→ComponentDefaultsProvider(alpha.1005).MutedActionError→AbortActionError, with no alias for the old name (alpha.712). On AccentBox,colornow means foreground and the background moves tobackgroundColor(alpha.786).TooltipTrigger.delaytakes string literals only (alpha.1016). Themittwald-password-tools-jsentry exports a singleRuleinstead ofAsyncRule/SyncRule(alpha.802). On CartesianChart,emptyViewneeds a rendered element (alpha.676), a functiondataKeyneeds adataKeyLabel, and the data types areunknowninstead ofany—typedCartesianChartinfers them (alpha.780).OverlayController.addOnClose/addOnOpenreturn() => unknown(alpha.696). - Removed types.
RemoteButtonElementProps,ResetButtonPropsandSubmitButtonPropsare gone; useButtonProps(alpha.646).