NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #4963 most downloaded on pub.dev
Animated SVG renderer for Flutter — SMIL, CSS keyframes, filters, path morphing, JS runtime, SVGator support, playback control, flutter_svg-compatible API.
Last release 8 days ago
30 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 17 of 17 stable releases
Nothing withdrawn
no release was ever pulled
5 months old
17 releases · first in 2026
One column per month.
quickjs_engine 0.1.6: JavaScript on iOS, Swift Package Manager, and AGP 9
Fixed
<script> run throughquickjs_engine 0.1.5 pod<script> failed to initialize with "Failed to lookup symbolquickjs_engine no longer applies the Kotlin Gradle Plugin, which failedNew
quickjs_engineMaintenance
quickjs_engine: ^0.1.6. See itsPercentage lengths, objectBoundingBox effects, and per-instance paced timing
Fixed
<use> geometry and instance viewports, nested <svg> and<foreignObject>, text coordinates, mask regions, and hit testing, includingcalcMode="paced" timing;calcMode="discrete" and <set> values.clipPathUnits, maskUnits, and maskContentUnits objectBoundingBox<use> targets keep their x/y offset, and <text> /<tspan> targets contribute layout-derived bounds instead of being clipped<mask> region attributes are bounding-box fractionsmaskUnits="objectBoundingBox" and no longer ignore the animation in<filter> region (x, y, width, height)filterUnits="objectBoundingBox"userSpaceOnUse. The region was previously<mask maskUnits="userSpaceOnUse"> region resolve<symbol> and <svg><use> instance viewport in painting and hit<tref> painted text is hit-testable at its painted glyph positions.packages/quickjs_engine after theMaintenance
tref hit-testing fixAdded an official Flutter DevTools companion extension that discovers every live FullSVG renderer in a connected debug application.
New
Developer tooling
Fixed macOS QuickJS support by shipping a universal arm64 + x86_64 bridge through quickjs_engine 0.1.5 .
arm64 + x86_64 bridge through quickjs_engine 0.1.5.Thanks @OrPudding for the contribution in #40.
Full changelog: v1.4.3...v1.4.4
Fixed
quickjs_engine to ^0.1.5, so universal macOS applications ship
working QuickJS bridge slices for both Apple Silicon and Intel.Maintenance
Updates quickjs_engine to ^0.1.4 .
Windows build compatibility
quickjs_engine to ^0.1.4.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
Fixed
quickjs_engine to ^0.1.4, fixing Windows builds that failed when
Flutter's generated plugin registrant called the missing
QuickjsEnginePluginRegisterWithRegistrar symbol.Maintenance
Source-based diffuse lighting, specular lighting, and displacement filters now keep separate precomputed rasters for each rendered use instance.
Published on pub.dev: https://pub.dev/packages/full_svg_flutter/versions/1.4.2
Fixed
<use> instance, so
inherited properties such as fill no longer leak between instances of the
same definition.<use> chains
therefore use the same cache dimensions as paint-time filter lookup instead
of silently falling back to the unfiltered graphic.Maintenance
<use> target whitelist and recursion-depth limit
across painting, hit testing, and asynchronous filter precomputation.Android 16 KB page-size compatibility.
Android 16 KB page-size compatibility.
Fixes #31.
Fixed
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.Complete ordered SVG filter-pass execution for groups and leaf elements.
objectBoundingBox sizing for paths, text, containers, and referenced use/symbol/svg geometry.transform-box: fill-box and percentage transform-origin rotation/scaling.dependencies:
full_svg_flutter: ^1.4.0Published on pub.dev: https://pub.dev/packages/full_svg_flutter/versions/1.4.0
See CHANGELOG.md for the complete release notes.
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
transform-box: fill-box behavior across complex SVG geometry.Changed
<use> content, including <symbol>/<svg> viewport and viewBox mapping.Fixed
FillPaint and StrokePaint channel restrictions remain isolated through
descendants and nested filters.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.Maintenance
sdkmanager through ANDROID_SDK_ROOT.Updated quickjs_engine to ^0.1.2, which fixes Android clean CI release builds failing at native CMake linking because the QuickJS bridge used __androi
Fixed
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.quickjs_engine update also aligns Android plugin Java/Kotlin JVM
target settings for clean release builds on modern Flutter/Gradle toolchains.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 Qu
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
log library linking in
packages/quickjs_engine/native/CMakeLists.txt.^1.3.0.Fixed
__android_log_print symbol resolution in the native bridge.Static SVG rendering no longer depends on the vector_graphics package family. Both static (SvgPicture) and animated (FSvgPicture / AnimatedSvgPicture)
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
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.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..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.@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).assets/flutter_logo_animated.svg)
and a CSS @keyframes loader (assets/demo_css.svg).Fixed
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.
Documentation fixes for the 1.1.0 release — no code changes.
Documentation fixes for the 1.1.0 release — no code changes.
JavaScript inside SVG row now reads ✅ Supported (linking to the JavaScript runtime section) instead of the stale ❌ from previous versions.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).doc/supported_features.md: JavaScript runtime is its own table now with the polyfill surface; removed the obsolete row from "Not supported".This release ships an embedded JavaScript engine and a polyfilled SVG DOM, so animated SVGs that drive their animation through inline blocks now rende
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.
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.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.<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.<script> that walks the SVG via getElementById + setAttribute will animate, even if it's not from SVGator.Fix aspect ratio: when only width or height is specified, the missing dimension is now computed proportionally from the image's intrinsic size. Previo
<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.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.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.viewBox aspect ratio instead of forcing a square container, so portrait or landscape SVGs display at correct proportions.Add native file:// URI support for elements: local files load via dart:io on all non-web platforms. Web stub returns null gracefully.
file:// URI support for <image> elements: local files load via dart:io on all non-web platforms. Web stub returns null gracefully.docs/ directory: migration guide, feature compatibility matrix, limitations, and SEO notes.docs/marketing/.Fix deprecated FontWeight.index usage — replaced with FontWeight.value.
<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.computeRawValue + applyAdditiveWithBase.clipToViewBox option to AnimatedSvgPicture and AnimatedSvgPainter: opt-in strict viewBox clipping to match browser direct-URL rendering behaviour (defaults to false for backward compatibility).xml dependency constraint from ^6.0.0 to >=6.0.0 <8.0.0 to support xml 7.x.FontWeight.index usage — replaced with FontWeight.value.Initial release of full_svg_flutter — a comprehensive SVG rendering library for Flutter.
full_svg_flutter — a comprehensive SVG rendering library for Flutter.Your coding agent can read these notes before it upgrades. Set up the MCP server →