Back to changelog index

5.1.1

Apr 22, 2026 · 2 packages · 9 unique changes · 3 release entries

appslibsBreaking changes

Release summaries

  • mobile-native-chart-gesture-runtime

    Stabilize Expo mobile chart rendering by avoiding CommonJS tslib helper resolution and completing native gesture-handler setup.

    maintainer

    The Metro alias helper now maps native `tslib` imports to the ESM helper build, and the Expo demo initializes gesture handling at the entrypoint and root layout.

    integrator

    Expo apps using the ContractSpec Metro alias helper avoid Hermes `__extends` crashes in ECharts/ZRender paths while gesture-backed native chart interactions have the required root provider.

  • presentation-lucide-aliases

    Add lucide package rewrites to the shared presentation runtime bundler helpers for Expo and Next.js.

    maintainer

    Presentation alias helpers now treat lucide icons as a platform pair alongside the UI-kit and presentation-runtime package pairs.

    integrator

    Shared React/React Native surfaces can import lucide icons through the platform-natural package while bundler helpers rewrite them for Expo or Next.js.

    customer

    Mobile and web previews avoid lucide package mismatches when shared UI code crosses the Expo and Next.js boundaries.

  • presentation-runtime-bundler-split

    Replace the old Next alias helper with explicit Webpack and Turbopack helpers, keep Metro stable, publish bundler helpers from dist artifacts, and refresh the public docs to teach the current Next.js bundler path.

    maintainer

    Maintainers now configure shared rendering aliases with explicit Webpack and Turbopack helpers instead of the overloaded Next helper name, while Metro behavior stays unchanged and package exports point at generated dist artifacts.

    integrator

    Integrators must rename `withPresentationNextAliases` calls to `withPresentationWebpackAliases` or move to `withPresentationTurbopackAliases`, depending on which Next.js bundler they use.

    customer

    Public docs now teach Turbopack as the default Next.js path and Webpack as an explicit fallback, with root-imported helpers for Next and Metro examples backed by npm-packable dist files.

Migration guide

  • Restart Metro with a clean cache

    Required

    Native Metro resolver changes and gesture-handler entry setup require a clean dev-server restart.

    When: After upgrading an Expo app that uses `withPresentationMetroAliases`.

    1. Run `expo start --clear` from the Expo app workspace.
    2. Rebuild the dev client only if `react-native-gesture-handler` was not already compiled into the installed native binary.
  • Replace the removed Next helper

    Required

    The old helper name has been removed in favor of bundler-specific names.

    When: When a codebase imports or calls `withPresentationNextAliases`.

    1. Replace `withPresentationNextAliases` with `withPresentationTurbopackAliases` for default Next.js apps that use the `turbopack` config block.
    2. Replace `withPresentationNextAliases` with `withPresentationWebpackAliases` only in code that still configures `nextConfig.webpack`.
    3. Import all three helpers from the root `@contractspec/lib.presentation-runtime-core` entrypoint.
  • Move Turbopack setup to `nextConfig.turbopack`

    Required

    Turbopack aliasing is now configured by patching the full Next config object instead of mutating a webpack resolver config.

    When: When adopting the new Turbopack helper.

    1. Wrap the full Next config object with `withPresentationTurbopackAliases(...)`.
    2. Keep any existing `turbopack.resolveAlias` entries; the helper merges them with the presentation aliases.
    3. Use `next dev --webpack` or `next build --webpack` only when a project intentionally stays on the webpack fallback path.

Upgrade steps

  • Verify the Expo iOS bundle

    assisted

    Confirm mobile routing, gesture setup, and native chart import paths still bundle under Metro.

    Packages: @contractspec/lib.presentation-runtime-core, @contractspec/app.expo-demo

    1. Run the focused presentation-runtime Metro alias test and typecheck.
    2. Run the mobile demo typecheck and test suite.
    3. Run an iOS export with a cleared Metro cache.
  • Re-run presentation alias tests after upgrading

    assisted

    Confirm Metro, Turbopack, and Webpack helpers still preserve caller aliases and resolve extensions.

    Packages: @contractspec/lib.presentation-runtime-core

    1. Run the focused presentation-runtime-core alias test suite.
    2. Re-open any Expo or Next.js preview that consumes shared UI-kit components with lucide icons.
  • Re-run helper and docs verification

    assisted

    Confirm the runtime helpers, generated docs, and website-facing docs now agree on the new names.

    Packages: @contractspec/lib.presentation-runtime-core

    1. Run the focused helper tests, typecheck, and lint checks in `@contractspec/lib.presentation-runtime-core`.
    2. Re-run the bundle-library docs manifest test and typecheck.
    3. Regenerate the web-facing `/llms*` surface after the README changes.

Unique release changes

  • - Confirm mobile routing, gesture setup, and native chart import paths still bundle under Metro.

    2 packages · 2 occurrences

  • - Native Metro resolver changes and gesture-handler entry setup require a clean dev-server restart.

    2 packages · 2 occurrences

  • - Stabilize Expo mobile chart rendering by avoiding CommonJS tslib helper resolution and completing native gesture-handler setup.

    2 packages · 2 occurrences

  • - Add lucide package rewrites to the shared presentation runtime bundler helpers for Expo and Next.js.

    1 packages · 1 occurrences

  • - Confirm Metro, Turbopack, and Webpack helpers still preserve caller aliases and resolve extensions.

    1 packages · 1 occurrences

  • - Confirm the runtime helpers, generated docs, and website-facing docs now agree on the new names.

    1 packages · 1 occurrences

  • - Replace the old Next alias helper with explicit Webpack and Turbopack helpers, keep Metro stable, publish bundler helpers from dist artifacts, and refresh the public docs to teach the current Next.js bundler path.

    1 packages · 1 occurrences

  • - The old helper name has been removed in favor of bundler-specific names.

    1 packages · 1 occurrences

  • - Turbopack aliasing is now configured by patching the full Next config object instead of mutating a webpack resolver config.

    1 packages · 1 occurrences

Impacted packages

  • @contractspec/app.expo-demo

    Layer: apps · 3 changes

  • @contractspec/lib.presentation-runtime-core

    Layer: libs · 4 changes