PackageTrack
Sign in Get early access

full_svg_flutter

Animated SVG renderer for Flutter — SMIL, CSS keyframes, filters, path morphing, JS runtime, SVGator support, playback control, flutter_svg-compatible API.

1.4.3 2.5K downloads/mo #4930 most downloaded on pub.dev denisnadey/flutter_full_svg_support

What this package is like to depend on

Last release today

23 Aug 2026

Ships fairly regularly

a new release about every 2 weeks

Nearly every release is documented

notes for 13 of 13 stable releases

Nothing withdrawn

no release was ever pulled

3 months old

13 releases · first in 2026

13 releases in the last 12 months

see the full history below

Release timeline

13 releases · Apr 2026 to Aug 2026
Release Pre-release

Releases

latest 13
  1. 1.4.3 23 Aug 2026
    Release notes

    Windows build compatibility

    • Updates quickjs_engine to ^0.1.4.
    • Fixes Windows generated plugin registrant compile/link failures.
    • Refreshes installation examples and public guides.
    • Includes clean Windows release-build coverage and preserves Android 16 KB alignment checks.

    Thanks to @dariyooo for contributing the core manifest fix in #36.

    Published package: https://pub.dev/packages/full_svg_flutter/versions/1.4.3
    Changelog: https://github.com/denisnadey/flutter_full_svg_support/blob/v1.4.3/CHANGELOG.md

    Open source →
    Release notes

    Windows plugin registration

    Fixed

    • Updated quickjs_engine to ^0.1.4, fixing Windows builds that failed when Flutter's generated plugin registrant called the missing QuickjsEnginePluginRegisterWithRegistrar symbol.
    • The Windows plugin now declares its exported C API class consistently and provides the canonical header expected by Flutter's generated registrant.

    Maintenance

    • Added a clean Windows release-build workflow that compiles and links a fresh Flutter application against the local quickjs_engine package.
    • Thanks to @dariyooo for reporting the issue and contributing the manifest fix in #36.
    Open source →
  2. 1.4.2 13 Aug 2026
    Release notes

    Fixed

    • Source-based diffuse lighting, specular lighting, and displacement filters now keep separate precomputed rasters for each rendered use instance.
    • SourceGraphic precomputation now stays in the filter target's local coordinate space, fixing scaled, rotated, nested, and positioned use chains.

    Maintenance

    • Centralized supported use targets and recursion limits across painting, hit testing, and filter precomputation.
    • Added regression coverage for inherited styles, transforms, lighting, displacement, and id-less filter targets.

    Published on pub.dev: https://pub.dev/packages/full_svg_flutter/versions/1.4.2

    Open source →
    Release notes

    Correct SourceGraphic filters for repeated use instances

    Fixed

    • Source-based diffuse lighting, specular lighting, and displacement filters now keep separate precomputed rasters for each rendered <use> instance, so inherited properties such as fill no longer leak between instances of the same definition.
    • SourceGraphic precomputation now stays in the filter target's local coordinate space. Scaled, rotated, nested, and x/y-positioned <use> chains therefore use the same cache dimensions as paint-time filter lookup instead of silently falling back to the unfiltered graphic.

    Maintenance

    • Centralized the supported <use> target whitelist and recursion-depth limit across painting, hit testing, and asynchronous filter precomputation.
    • Added pixel regressions for flat and nested use inheritance, transformed use chains, lighting, displacement, and distinct id-less filter targets.
    Open source →
  3. 1.4.1 11 Aug 2026
    Release notes

    Android 16 KB page-size compatibility.

    • Releases quickjs_engine 0.1.3 with 16 KB ELF LOAD segment alignment on Android.
    • Requires quickjs_engine ^0.1.3 from full_svg_flutter.
    • Adds CI checks for ELF segment and APK ZIP alignment.
    • Preserves support for CMake 3.10 host toolchains.

    Fixes #31.

    Open source →
    Release notes

    Android 16 KB page-size compatibility

    Fixed

    • Updated quickjs_engine to ^0.1.3, which links its Android native library with 16 KB ELF LOAD segment alignment for compatibility with devices that use a 16 KB memory page size.
    • Added release APK verification for native ELF segment alignment and 16 KB ZIP alignment to prevent regressions in Android packaging.
    Open source →
  4. 1.4.0 05 Aug 2026
    Release notes

    Highlights

    • Complete ordered SVG filter-pass execution for groups and leaf elements.
    • Correct objectBoundingBox sizing for paths, text, containers, and referenced use/symbol/svg geometry.
    • Geometry-accurate transform-box: fill-box and percentage transform-origin rotation/scaling.
    • Correct filter + mask/opacity/clip composition, paint-channel isolation, and identity filter-region clipping.
    • Stable per-node source-filter precompute caching.
    • New public documentation in English, Simplified Chinese, and Hindi, plus refreshed migration, feature, and limitations guides.
    • Android arm64 release CI support for current GitHub-hosted Ubuntu runners.

    Install

    dependencies:
      full_svg_flutter: ^1.4.0

    Published on pub.dev: https://pub.dev/packages/full_svg_flutter/versions/1.4.0

    See CHANGELOG.md for the complete release notes.

    Open source →
    Release notes

    Complete group filters and geometry-accurate transform origins

    This minor release completes the filter pipeline for container elements, shares real SVG geometry bounds with bounding-box-based transforms, and adds a new multilingual public documentation set.

    New

    • Added complete public usage guides in English, Simplified Chinese, and Hindi, plus dedicated migration, supported-features, and limitations documents.
    • Added focused pixel regressions for group filter composition and transform-box: fill-box behavior across complex SVG geometry.

    Changed

    • Leaf elements and groups now use one ordered filter-pass executor, including specialized turbulence, displacement, lighting, image, and inner-shadow passes.
    • Filter sizing and bounding-box transform origins now share one fill-geometry resolver for paths, polygons, polylines, text, containers, and referenced <use> content, including <symbol>/<svg> viewport and viewBox mapping.
    • Source-based displacement and lighting precomputation now uses rendered geometry instead of requiring explicit width and height attributes.

    Fixed

    • Group filters no longer drop ordinary passes around specialized passes.
    • FillPaint and StrokePaint channel restrictions remain isolated through descendants and nested filters.
    • Groups combining filters with masks, opacity, or clipping now preserve the correct compositing order.
    • Explicit identity filters still apply their declared filter-region clip.
    • objectBoundingBox filters now resolve real bounds for path, polygon, polyline, text, switch, symbol, and use geometry, including transformed and visibility-controlled descendants.
    • transform-origin with transform-box: fill-box now rotates and scales paths, polygons, polylines, text, and positioned/referenced use elements around their actual fill bounds instead of a zero-sized fallback.
    • Source-filter precompute caches now use stable per-node identities, avoiding collisions between same-size elements that share a filter.

    Maintenance

    • Fixed the Android arm64 release workflow for current GitHub-hosted Ubuntu runners by resolving sdkmanager through ANDROID_SDK_ROOT.
    Open source →
  5. 1.3.1 22 Jul 2026
    Release notes

    Fixed

    • Updated quickjs_engine to ^0.1.2, which fixes Android clean CI release builds failing at native CMake linking because the QuickJS bridge used __android_log_print without linking Android liblog.
    • The quickjs_engine update also aligns Android plugin Java/Kotlin JVM target settings for clean release builds on modern Flutter/Gradle toolchains.
    Open source →
  6. 1.3.0 08 Jul 2026
    Release notes

    Android packaging + dependency refresh

    This release folds in the Android CMakeLists.txt fix that explicitly links the log library on Android, which resolves NDK 27+ builds for the native QuickJS bridge.

    Changed

    • Added Android-specific log library linking in packages/quickjs_engine/native/CMakeLists.txt.
    • Updated the package metadata to the new minor release.
    • Refreshed the public-facing README install examples to ^1.3.0.

    Fixed

    • Android builds with newer NDK versions no longer fail on __android_log_print symbol resolution in the native bridge.
    Open source →
  7. 1.2.0 19 May 2026
    Release notes

    One self-contained rendering engine 🎉

    Static SVG rendering no longer depends on the vector_graphics package family. Both static (SvgPicture) and animated (FSvgPicture / AnimatedSvgPicture) SVGs are now rendered by this package's own DOM-preserving engine — one consistent code path, fewer transitive dependencies, and the full feature set (filters, masks, gradients, text) available to static SVGs too. The public SvgPicture / FSvgPicture API is unchanged, so this is a drop-in upgrade for the common case.

    Changed

    • Removed the dependencies on vector_graphics, vector_graphics_compiler, and vector_graphics_codec. They are no longer pulled into your app.
    • SvgPicture is now rendered by the built-in engine instead of vector_graphics' createCompatVectorGraphic. The public SvgPicture API — every constructor, SvgTheme, ColorMapper, and all loaders — is unchanged.
    • Types previously re-exported from vector_graphics are now owned by this package:
      • BytesLoader resolves the raw UTF-8 SVG source rather than a compiled binary vector format.
      • PictureInfo is now this package's own class (picture + size), produced by the new renderSvgToPicture helper.
      • RenderingStrategy is retained for source compatibility but is now a no-op hint.
    • Removed precompiled .vec asset support (AssetBytesLoader) — it was a vector_graphics_compiler feature. SVGs are parsed directly at runtime and the decoded source is cached.
    • vg / VectorGraphicUtilities are no longer exported. Use renderSvgToPicture to render an SVG to a ui.Picture / ui.Image.
    • WOFF/WOFF2 font decoding for SVG @font-face rules now lives in the new standalone woff2 package (added as a dependency). Same code, lifted out so apps that don't render SVGs but do need WOFF/WOFF2 font loading can use it directly. es_compression moved from a direct dependency to a dev_dependencies entry used only by the test config. The SvgFontLoader typedef (re-exported from lib/src/animation.dart) is now an alias for WoffSrcResolver with the same signature — no source changes required for callers.

    New

    • renderSvgToPicture(String svg, {Size?, SvgTheme?, ColorMapper?}) renders an SVG to a PictureInfo outside the widget tree.
    • SvgTheme (currentColor, font-size) and ColorMapper (per-attribute color substitution) are now honored by the engine for both static and animated SVGs.
    • AnimatedSvgPicture accepts theme and colorMapper.
    • BoxFit / alignment are now honored for non-contain fits.
    • SvgPicture without an explicit width/height lays out at its intrinsic size in unbounded contexts (rows, columns, scroll views).
    • New demo assets: an animated Flutter logo (assets/flutter_logo_animated.svg) and a CSS @keyframes loader (assets/demo_css.svg).

    Fixed

    • Relaxed the meta dependency constraint from ^1.17.0 to ^1.16.0 so it no longer conflicts with the meta version pinned by the SDK's flutter_test (Flutter 3.32 ships meta 1.16.0), which previously made version resolution fail for projects that also use flutter_test.

    Migration

    For static SVGs no code change is required — SvgPicture.asset / .network / .string / .memory / .file work exactly as before. If you imported vector_graphics types directly, switch to the package's own (BytesLoader, PictureInfo, renderSvgToPicture) exported from package:full_svg_flutter/full_svg_flutter.dart.

    Open source →
  8. 1.1.1 11 May 2026
    Release notes

    Documentation fixes for the 1.1.0 release — no code changes.

    • Updated supported-features table: JavaScript inside SVG row now reads ✅ Supported (linking to the JavaScript runtime section) instead of the stale ❌ from previous versions.
    • Updated FAQ entry on SVGator: both SMIL/CSS and JS-export modes are documented as working now.
    • Added a Native dependencies + Building the native library from source section to the README covering macOS / Linux / Windows toolchain prerequisites and when end users actually need to recompile.
    • Rewrote doc/limitations.md JavaScript section: spelled out which DOM APIs the polyfill covers and which still aren't supported (full HTML DOM, inline onclick= handlers, browser frameworks).
    • Updated doc/supported_features.md: JavaScript runtime is its own table now with the polyfill surface; removed the obsolete row from "Not supported".
    • Quick-start version pins refreshed from 1.0.3 → 1.1.0.
    Open source →
  9. 1.1.0 11 May 2026
    Release notes

    JavaScript runtime + SVGator support 🎉

    This release ships an embedded JavaScript engine and a polyfilled SVG DOM, so animated SVGs that drive their animation through inline <script> blocks now render natively — no WebView, no conversion to SMIL.

    • SVGator JS-export files now render correctly. Coffee Match Cut, Glowing Gummies, Basketball Boy, Skating Girls, Dog Character, Ramen Raccoon and similar SVGator-exported scenes play with their original player script attached. SMIL/CSS export is no longer required.
    • Embedded JavaScript engine. QuickJS-NG 0.14.0 (May 2026 release) ships inside the app on every platform — Android, iOS, macOS, Linux, Windows — via the new quickjs_engine runtime package. The same JS engine on every target eliminates the JSC-vs-old-QuickJS divergence that plagued cross-platform JS-in-SVG.
    • SVG DOM polyfill. document.getElementById, Element.setAttribute/setAttributeNS, style property proxy, virtual createElementNS('svg', 'path') with real getTotalLength() and getPointAtLength(distance) for arc-length-parameterized bezier interpolation, requestAnimationFrame, addEventListener, timers, fetch/XHR via Dart http, plus the rest of the surface SVGator and similar players touch.
    • Cubic-bezier path arc-length math. Virtual <path> elements compute real arc length via 100-sample subdivision + cumulative table; getPointAtLength does a binary search across the table and linearly interpolates between samples. Cached per-path keyed by the d attribute. This is the keystone fix that gets SVGator's Ft() interpolator to produce correct points instead of {x:0, y:0} mid-segment.
    • Custom JS animations also work — any inline <script> that walks the SVG via getElementById + setAttribute will animate, even if it's not from SVGator.
    Open source →
  10. 1.0.3 07 May 2026
    Release notes
    • Fix <image> aspect ratio: when only width or height is specified, the missing dimension is now computed proportionally from the image's intrinsic size. Previously, the raw pixel dimension was used, causing images placed with a single size attribute to shift position and appear at incorrect scale.
    • Fix background-color clipping with clipToViewBox=true: the SVG root background-color style was drawn before the viewBox clip was applied, causing it to fill the entire widget instead of being bounded by the SVG viewport. It is now drawn inside the transformed and clipped canvas context, matching browser behaviour.
    • Add clipToViewBox toggle (default true) to the example playground, so SVG content that overflows the viewBox boundary is clipped by default — matching how browsers display SVG files opened directly.
    • Fix playground SVG proportions: preview width and height are now derived from the SVG viewBox aspect ratio instead of forcing a square container, so portrait or landscape SVGs display at correct proportions.
    Open source →
  11. 1.0.2 04 May 2026
    Release notes
    • Add native file:// URI support for <image> elements: local files load via dart:io on all non-web platforms. Web stub returns null gracefully.
    • Improve pub.dev package description and topics for animated SVG discoverability.
    • Rewrite README: clear animated-SVG positioning, comparison table, migration guide, SVGator notes, FAQ, and supported-features matrix.
    • Add docs/ directory: migration guide, feature compatibility matrix, limitations, and SEO notes.
    • Add marketing article drafts in docs/marketing/.
    Open source →
  12. 1.0.1 27 Apr 2026
    Release notes
    • Fix filter rendering on <g> groups: filters applied to <g> elements with no opacity or blend-mode were silently discarded. Now correctly opens a saveLayer with the filter, improving fidelity for SVGs that animate filter primitives on groups.
    • Fix SMIL sandwich model for multiple animations targeting the same attribute: additive animations no longer double-stack when chained via computeRawValue + applyAdditiveWithBase.
    • Add clipToViewBox option to AnimatedSvgPicture and AnimatedSvgPainter: opt-in strict viewBox clipping to match browser direct-URL rendering behaviour (defaults to false for backward compatibility).
    • Widen xml dependency constraint from ^6.0.0 to >=6.0.0 <8.0.0 to support xml 7.x.
    • Fix deprecated FontWeight.index usage — replaced with FontWeight.value.
    Open source →
  13. 1.0.0 26 Apr 2026
    Release notes
    • Initial release of full_svg_flutter — a comprehensive SVG rendering library for Flutter.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive