NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3670 most downloaded on pub.dev
Web implementation of the nutrient_flutter plugin.
Last release 2 months ago
29 Jul 2026
Ships on a steady schedule
a new release about every 3 months
Nearly every release is documented
notes for 3 of 3 stable releases
Nothing withdrawn
no release was ever pulled
7 months old
3 releases · first in 2026
One column per month.
First pub.dev published version.
Changed
First pub.dev published version. ( #28157 )
Changed
Updates the minimum required Flutter SDK version to 1.12.0. ( #28157 )
NutrientDocumentInterface.getPageInfo on web via Instance.pageInfoForIndex, returning PageInfo with width, height (pixels at 100% zoom), rotation (degrees), and label. (J#HYB-951)BookmarkOperations.removeBookmark raising PSPDFKitError: No object with id '<name>' found on the legacy "match by name" fallback. The Web SDK's instance.delete(...) only resolves bookmarks by their SDK-assigned pdfBookmarkId or by passing the live Immutable.Record itself — the name string is not a valid id. We now keep matching by pdfBookmarkId / name / page index but always hand the matched live record to delete(...), since pdfBookmarkId is not surfaced on freshly-created (unpersisted) bookmarks either. (J#HYB-951)NutrientWebAdapter. zoomToRect, getZoomScale, enterAnnotationCreationMode, and exitAnnotationCreationMode have full JS-interop implementations; getVisibleRect, convertViewPointToPdfPoint, and convertPdfPointToViewPoint throw UnimplementedError (the Web SDK does not expose these at this layer), matching the legacy web controller. (J#HYB-952)utils/annotation_tool_web_mapping.dart with webInteractionModeFor and annotationPresetForTextMarkupTool helpers, replacing the legacy AnnotationToolWebExtension lookups so the web adapter no longer depends on pigeon-generated enums. (J#HYB-952)NutrientWebAdapter to drive the cross-platform events stream from the Web SDK's instance.addEventListener(...). Cross-platform events fire from annotations.create/update/delete/focus/blur, viewState.currentPageIndex.change, page.press, textSelection.change, formFieldValues.update, and document.saveStateChange. DocumentLoadedEvent is emitted synchronously at the end of onInstanceLoaded since the Web SDK delivers a fully-loaded instance up front. (J#HYB-957)NutrientWebEventData(type, payload) carrier and a webEvents broadcast stream on NutrientWebAdapter that mirrors all 73 events from the Web SDK's NutrientViewer.EventName enum (sourced canonically from web/web/src/enums/EventName.ts in the monorepo). Web-only events are registered with 0-arg JS callbacks because the Web SDK fires events with varying arity (0, 1, or 2 args) and Dart's .toJS enforces exact arity — a 1-arg listener crashes on annotation-save events that fire with no payload. (J#HYB-957)dart:js_interop bindings from its TypeScript declarations.Fixes baseUrl not being applied from the user's configuration before the first NutrientViewer.load() call, which caused an assertion error on subseque
baseUrl not being applied from the user's configuration before the first NutrientViewer.load() call, which caused an assertion error on subsequent loads. (J#HYB-910)WebConfigurationBuilder to convert NutrientViewConfiguration into the Nutrient Web SDK configuration object. (J#HYB-988)Initial release as standalone pub.dev package.
dart:js_interop and package:web for Nutrient Web SDK integration.nutrient_flutter with native bindings.nutrient_flutter_platform_interface for the federated plugin architecture.Your coding agent can read these notes before it upgrades. Set up the MCP server →