Skip to content

v1.0.0

Choose a tag to compare

@Meerzus Meerzus released this 31 Oct 12:42
· 58 commits to main since this release
7eeeb65

The first stable release, published to npm as latest (npm install @cloudlet/toast). The API is the
one of 1.0.0-rc.3 plus one diagnostic code; it follows semantic versioning from here. After the release the
remaining manual checks passed on this version: VoiceOver on iOS, NVDA, TalkBack, physical phones,
Windows High Contrast and the minimum browser versions (the documentation's Accessibility page).

Performance

  • Toaster loads its renderer (host, motion, cards, gestures, announcer) as a separate chunk through
    import(), once per page, on the client after mount. The JavaScript an app pays for at start drops
    from 27953 to 8602 B min+gzip; the renderer chunk follows right after. Notifications shown meanwhile
    wait in the controller. No React.lazy or Suspense is needed in the app, and server rendering is
    unchanged: Toaster renders nothing on the server.

API

  • New diagnostic renderer-load-error: the renderer chunk failed to load (offline, for example). The
    notifications wait in the controller, and the next Toaster mount loads the chunk again.

Fixes

  • The Island's background no longer counts as layout shift while it morphs at the bottom edge: it is
    placed with a transform instead of bottom: 0. Pixels are unchanged.
  • On a slow first frame, the queue aggregate ("2 notifications queued") was spoken alone before the
    newest record's title. The announcer now waits until the pill is readable and speaks the title first
    and the queue after it, as on fast devices.

shadcn item

  • The wrapper takes a controller that may still be null (ReactCloudletController | null), so an app
    can render it before its client owner has created the controller.