Releases

Alle veröffentlichten Flow-Releases mit ihren Highlights, Migrationshinweisen und den enthaltenen Fixes.

1.0.0 1.0.0
Major

26 August 2026 - npm - GitHub Release

Semantic Versioning is a promise now, not an intention

Highlights

  • 1.0.0 carries no breaking change over 0.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-components included.
  • 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.

  • AlignCombine (#2871) — codemod flowAlphaAlignToCombine
  • SegmentedControl / SegmentTabs (switching content) or RadioGroup (setting a value) (#2903) — no codemod, the replacement is a decision per usage
  • The global flags object → ComponentDefaultsProvider, which also works per subtree (#2796)
  • Button / SubmitButton: color="accent"color="success" (#2874) — codemod flowAlphaButtonColorAccentToSuccess
  • Action: actiononAction — codemod flowAlphaActionPropToOnAction

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 actiononAction (alpha.646), color="primary"color="default" on Breadcrumb, HeaderNavigation, Heading, IllustratedMessage and Link (alpha.846), Button's color="accent"color="success" (alpha.1046), and AlignCombine (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 accentsuccess and AlignCombine 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.00.2.0 transform — run that one separately and only when coming from 0.1.0.

By hand.

  • Removed escape hatches. The render prop is gone from TableCell (alpha.846) and Table (alpha.866) — compose the table from its parts. TableColumn.maxWidth is removed, and width / minWidth are number | string without null (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 Form asks for confirmation before closing (alpha.1005). A Form inside a Modal resets after the modal closes; autoReset={false} opts out (alpha.694).
  • Reshaped APIs. flagsComponentDefaultsProvider (alpha.1005). MutedActionErrorAbortActionError, with no alias for the old name (alpha.712). On AccentBox, color now means foreground and the background moves to backgroundColor (alpha.786). TooltipTrigger.delay takes string literals only (alpha.1016). The mittwald-password-tools-js entry exports a single Rule instead of AsyncRule / SyncRule (alpha.802). On CartesianChart, emptyView needs a rendered element (alpha.676), a function dataKey needs a dataKeyLabel, and the data types are unknown instead of anytypedCartesianChart infers them (alpha.780). OverlayController.addOnClose / addOnOpen return () => unknown (alpha.696).
  • Removed types. RemoteButtonElementProps, ResetButtonProps and SubmitButtonProps are gone; use ButtonProps (alpha.646).

Fixes

  • 1.0.2 – Remote: serialization allows duplicate object references (#ac3ef26)
  • 1.0.1 – Breadcrumb: fix cursor pointer for spans with role link (#d44d61c)
  • 1.0.1 – ci: build after the version bump so bundles carry the published version (#c24c5ef)

Auf dieser Seite