Skip to content

Releases: GSTJ/magic-modal

Magic Modal Release 9.2.0

Choose a tag to compare

@github-actions github-actions released this 31 Jul 14:28
aa1434b

9.2.0 (2026-07-31)

🔨 Bug Fixes 🔨

🌠 New Features 🌠

  • modal: return an awaitable handle from magicModal.show (#328) (aa1434b)

➰ What a drag! ➰

  • deps: update dependency @types/node to v26.1.2 (#323) (c50e271)
  • deps: update dependency postcss to v8.5.24 (#326) (ea1b942)
  • release: sync magic modal version with npm 9.1.0 (#316) (f7d88ba)

Magic Modal Release 10.1.1

Choose a tag to compare

@GSTJ GSTJ released this 31 Jul 18:29
89ae965

10.1.1 (2026-07-31)

🔨 Bug Fixes 🔨

  • release: ship the README in the tarball whichever way the publish is driven (#345)

    packages/modal/README.md is gitignored and generated by copy:readme, which only ran because turbo hangs it off the release task. Publishing from the package directory packed without it, so 10.1.0 landed on npm with an empty readme. It is a prepack script now, which npm and pnpm both run before packing, so the tarball gets it from any entry point.

Same code as 10.1.0 otherwise. The feature notes for this line are in the 10.1.0 release.

Magic Modal Release 10.1.0

Choose a tag to compare

@GSTJ GSTJ released this 31 Jul 18:14
89ae965

10.1.0 (2026-07-31)

🔨 Bug Fixes 🔨

  • docs: show the download count people actually recognize (#342) (b8f9a3f), references #335
  • release: drop the em-dashes from the deprecate message (#340) (62ce629)

🌠 New Features 🌠

  • modal: cut the web bundle by 83% (32.2 -> 5.3 KB gzip) going full DOM (#336) (89ae965), references #329

    The browser entry no longer imports react-native-web. The web modal renders as plain DOM, with enter/exit driven by the Web Animations API and a static <style> element for layout, and react is the only remaining import. Measured with esbuild: 96.3 KB minified / 32.2 KB gzip before, 13.9 KB / 5.3 KB after. A real next build of examples/next-web drops 23.8 KB gzip of client JS.

    Web-only type and DOM changes come with it, and they land in a minor per this repo's versioning policy (patch never breaks, minor may, major is reserved for era-defining refactors like the v10 rename):

    • ModalProps["style"] and NewConfigProps["style"]: StyleProp<ViewStyle> -> React.CSSProperties. RN style objects (arrays, registered handles, RN-only keys) are detected at runtime and warn once in dev with a migration table instead of being applied.
    • entering/exiting removed from the web type (Reanimated builders, already ignored on web).
    • dist/index.d.ts no longer references react-native or reanimated types. The native entry's types are unchanged.
    • The backdrop is now role="presentation", and elements carry stable magic-modal-* class names instead of RNW's generated css-* ones. CSS targeting RNW internals breaks; targeting the new class names is supportable.

    Migration notes are in reference/modal-props.mdx, with a callout in platforms/nextjs.mdx.

➰ What a drag! ➰

  • release: sync magic modal version with npm 10.0.0 (#339) (c1b97e6)

📚 Documentation 📚

  • changelog: drop the PR body that leaked into the 10.0.0 breaking note (#341) (d9ee771), references #339 #339

Magic Modal Release 10.0.0

Choose a tag to compare

@github-actions github-actions released this 31 Jul 17:22
4141a57

10.0.0 (2026-07-31)

⚠ BREAKING CHANGES

  • modal: this package is now magic-modal on npm, renamed from
    react-native-magic-modal. The library is universal: since #334 the browser
    bundle carries no Reanimated, gesture-handler or worklets, and the
    react-native prefix no longer fits what ships. react-native-magic-modal
    keeps shipping at the same version, depending on magic-modal and re-exporting
    it, so an existing install resolves to the same code; npm shows a deprecation
    notice on it pointing here. Install magic-modal and update the import
    specifier.

🔨 Bug Fixes 🔨

  • docs: serve the site from magic-modal.gabrieltaveira.dev (#337) (2e9790e), references #333 #335
  • docs: update links to the renamed magic-modal repo (#333) (e4d1665)
  • modal: mount the iOS overlay only while modals are on screen (#329) (8577b56), references #328

🌠 New Features 🌠

  • modal: cut the web bundle by 82% (176.6 -> 32.2 KB gzip) (#334) (326b018)

💨 Code Improvements 💨

➰ What a drag! ➰

  • release: sync magic modal version with npm 9.2.0 (#332) (97178c8)

📚 Documentation 📚

  • README with demo GIF and link updates (8fffdfd)

Magic Modal Release 9.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Jul 00:03
b159af2

9.1.0 (2026-07-29)

🔨 Bug Fixes 🔨

🌠 New Features 🌠

  • modal: run the portal on the web and rebuild the docs site (#310) (b159af2)

➰ What a drag! ➰

📚 Documentation 📚

Magic Modal Release 9.0.1

Choose a tag to compare

@github-actions github-actions released this 28 Jul 17:05
61ddf85

9.0.1 (2026-07-28)

🔨 Bug Fixes 🔨

💨 Code Improvements 💨

➰ What a drag! ➰

Magic Modal Release 9.0.0

Choose a tag to compare

@github-actions github-actions released this 27 Jul 04:49
939c982

Nothing here is breaking. This should have been 8.1.0: the recommended bump was computed over a 53-commit range reaching back to the 6.x v* tags, so it re-counted the breaking marker on #241 that 8.0.0 already shipped. Fixed in #261.

9.0.0 (2026-07-27)

🔨 Bug Fixes 🔨

🌠 New Features 🌠

  • modal: support gesture-handler 2.x alongside 3.x (#257) (939c982)

Magic Modal Release 8.0.0

Choose a tag to compare

@github-actions github-actions released this 27 Jul 01:10
61a4080

8.0.0 (2026-07-27)

⚠ BREAKING CHANGES

  • modal: the react-native-gesture-handler peer range moves from
    >=2.20.0 to >=3.0.0. usePanGesture only exists in 3.x, so there's no
    2.x-compatible path. The modal's own API is unchanged. A
    GestureHandlerRootView above the portal also becomes mandatory, since 3.x
    throws where 2.x only logged a warning. Expo SDK 55 still pins gesture-handler
    to 2.30, so Expo projects installing 3.x need it in expo.install.exclude, or
    can stay on react-native-magic-modal 7.x until Expo moves the pin.

🔨 Bug Fixes 🔨

🌠 New Features 🌠

  • modal: move swipe-to-dismiss onto gesture-handler's usePanGesture (#241) (61a4080)

Magic Modal Release 7.1.0

Choose a tag to compare

@github-actions github-actions released this 25 Jul 23:14
24a939f

show() now hands back an update next to promise and modalID, for pushing new content into a modal that's already open (#158):

const { update } = magicModal.show(() => <UploadModal progress={0} />);

update(() => <UploadModal progress={42} />);

The modal stays where it is and the promise from show keeps waiting. The content itself is a new component on every call, so it remounts. Keep anything that has to survive an update out of its useState, in a store or in context.

7.1.0 (2026-07-25)

🔨 Bug Fixes 🔨

  • ci: stop turbo from swallowing the docs task (#215) (18966e0)

🌠 New Features 🌠

  • modal: add update() to swap a modal's content in place (#217) (24a939f)

Magic Modal Release 7.0.3

Choose a tag to compare

@github-actions github-actions released this 25 Jul 21:45
633b1af

7.0.3 (2026-07-25)

⚠ BREAKING CHANGES

  • bump Expo SDK 52 -> 55 (requires Reanimated 4) (#161)
  • Removes individual fullWindowOverlay config from
    magicModal.show. Introduces magicModal.enableFullWindowOverlay() and
    magicModal.disableFullWindowOverlay() in order to control overlay
    behavior globally. This fixes exit animations on iOS.
  • improve type safety and docs
  • support multiple modals (#81)
  • To preserve compatibility, swipeDirection "top" and
    "bottom" properties have been renamed back to "up" and "down". It also
    makes more sense overall.
  • Renames "direction" to "swipeDirection"
  • This is a big refactor that migrates our underlying
    component from react-native-modal, unmaintained for two years, to
    react-native-reanimated.

We gain way more control but lose some flexibility the library offers. I
recommend going through the docs to find matching props.

Let me know if there's any use-case not supported anymore.

The library also gained the ability to be used inside react-navigation
modal screens, being the major motivation for this update.

🔨 Bug Fixes 🔨

  • ci: match BREAKING CHANGE only as a footer in skip probe (#196) (d89193f), closes #195 #195 #195 #192
  • ci: post-SDK55 followup — unblock publish, docs, E2E iOS (#166) (bb57c7c), closes #161
  • ci: unblock release git push + docs caching (#186) (670e2ec), closes #179
  • cjs errors while importing & add fullWindowOverlay option (#113) (274a2a3), closes #112 #110 #91 #89
  • deal with dynamic animationOutTiming's (e5f488f)
  • enforce gesture handler on the app root to prevent android issues (e592345)
  • fix bugs and improve performance (#40) (2694e60)
  • fix magic modal for react compiler users (fee1735)
  • make modals appear on top of react-native modals & add new animation props (#51) (0cbca82)
  • make modals work properly on android again (56db344)
  • make the magic modal respect keyboard avoiding views (bf27b8a)
  • modal: stop the swipe gesture from eating taps (#205) (dc0a98c)

🌠 New Features 🌠

💨 Code Improvements 💨

  • configure full window overlay globally to address exit animation issues (#125) (e797c20)
  • type import and props (92c169a)

🔗 Testing Updated 🔗

  • bring jest back to life and run it in CI (#201) (1864ea9)
  • magicmodalportal: add code coverage for automatic hides (8169147)

➰ Continuous Integrations ➰

Read more