NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #2135 most downloaded on pub.dev
Flutter plugin for Unity 3D integration — typed bridge, binary protocol, performance + AR, on Android, iOS, web & desktop.
Last release 1 months ago
24 Aug 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 14 of 14 stable releases
Nothing withdrawn
no release was ever pulled
7 months old
14 releases · first in 2026
One column per month.
Declared the analyzer excludes Flutter's AnalysisOptionsMigration requires, in both analysis_options.yaml and the example's. Without them flutter pub
AnalysisOptionsMigration
requires, in both analysis_options.yaml and the example's. Without them
flutter pub get rewrote those files, leaving the tree dirty, and
pub publish refuses to publish from a dirty git state: the 2.1.0 publish
job failed on exactly that. No code change; 2.1.1 is 2.1.0 plus a
publishable tree.- Maintenance release.
pubspec: documentation link to codigee.com/open-source/unity-kit
pubspec.yaml (documentation:) and added a prominent Documentation
section to the README covering the step-by-step walkthrough, native setup
(Android/iOS), Unity export, content loading, API reference, asset streaming,
architecture, and FAQ.Native (iOS + Android) now emits onViewDisposed before tearing down a platform view's method channel. The Dart bridge resets its readiness guard back
Native (iOS + Android) now emits onViewDisposed before tearing down a
platform view's method channel. The Dart bridge resets its readiness
guard back to initializing, so sendWhenReady() queues messages until
the next UnityView attaches instead of throwing MissingPluginException
on the dead com.unity_kit/unity_view_N channel.
Also cancels the previous platform event subscription on re-initialize()
to prevent duplicated events after unload().
MissingPluginException after the active UnityView is disposed
(#4). When the
platform view backing the active UnityView was destroyed (e.g. the screen
was popped), the Dart side kept targeting the dead
com.unity_kit/unity_view_N channel and the bridge stayed ready, so the
next send/sendWhenReady crashed with MissingPluginException. Native
(iOS + Android) now emits an onViewDisposed notification before tearing
the channel down; the bridge resets readiness back to initializing, so
sendWhenReady() queues messages until the next UnityView attaches and
send() throws a typed EngineNotReadyException instead.initialize(). Calling
UnityBridgeImpl.initialize() again after unload() subscribed to the
platform event stream a second time, duplicating every message/event.
The previous subscription is now cancelled first.BREAKING CHANGE: minimum SDK raised to Dart 3.4 / Flutter 3.22 (web js_interop); UnityBridge gains sendBinary, sendBinaryWhenReady, performanceStream.
BREAKING CHANGE: minimum SDK raised to Dart 3.4 / Flutter 3.22 (web js_interop);
UnityBridge gains sendBinary, sendBinaryWhenReady, performanceStream.
Bump 1.1.1 -> 2.0.0
3.4 / Flutter 3.22 (required by the modern
dart:js_interop web implementation). Existing mobile API usage is unchanged.UnityBridge gained sendBinary, sendBinaryWhenReady, and
performanceStream. Code that calls the bridge is unaffected; only code
that directly implements UnityBridge (e.g. custom mocks) must add the three
members. UnityBridgeImpl and the bundled mocks already do.UnityBinaryCodec compact wire format with
UnityBridge.sendBinary() / sendBinaryWhenReady(), plus
UnityBinaryWriter / UnityBinaryReader for hand-packed payloads. Mirrored
on the Unity side by UnityKitBinaryCodec + FlutterBridge.ReceiveBinary.UnityBridge.performanceStream emitting
UnityPerformanceStats (FPS, frame time, used memory), produced by the new
UnityKitPerformanceMonitor MonoBehaviour.UnityConfig.ar() factory and UnityArMode
(none / passthrough / overlay), wired to native creation params and a
dependency-free UnityKitArSession bridge on the Unity side.[UnityKitMethod] attribute +
MessageRouter.RegisterMethods(target, instance) to expose C# methods to
Flutter by name via reflection.UnityKitGameManager MonoBehaviour handling
load/unload scene, target frame rate, and pause/resume from Flutter.UnityKitWeb plugin registering the
com.unity_kit/unity_view platform view via HtmlElementView, bridging
through the per-view method channel.Tools ▸ UnityKit ▸ Validate Project.UnityConfig.toCreationParams() as the single source of truth for the
Dart → native config contract (now also carries sceneName and arMode).UnityView now renders an HtmlElementView on web.arMode / sceneName from the view creation
params: UnityArMode.overlay enables transparent rendering automatically,
and both values are forwarded to Unity as a __unitykit_init message that
UnityKitGameManager consumes.feat(config): add UnityConfig.embedded() factory; bump to 1.1.1
feat(config): add UnityConfig.embedded() factory; bump to 1.1.1
UnityConfig.embedded() factory for creating an embedded (non-fullscreen)
Unity view configuration, mirroring the existing UnityConfig.fullscreen()
factory. Optionally accepts transparentBackground.Renders the native Unity container non-opaque on iOS so Flutter widgets painted behind the platform view show through. Requires the Unity camera's cle
Renders the native Unity container non-opaque on iOS so Flutter
widgets painted behind the platform view show through. Requires
the Unity camera's clear colour to use alpha 0.
UnityConfig.transparentBackground flag that renders the native Unity
container non-opaque on iOS so Flutter widgets painted behind the
platform view can show through. Requires the Unity scene camera's
clear colour to use alpha 0.UnityConfig.fullscreen() factory now accepts transparentBackground.UnityKitView recursively applies isOpaque = false and a clear
background to the Unity root view hierarchy when the flag is enabled.UnityConfig.toString() now reports every field, including
transparentBackground, so it stays in sync with == / hashCode.UnityView logs a warning via UnityKitLogger when
transparentBackground is enabled on Android (iOS-only feature).docs: bump to 1.0.3 with corrected README versions
docs: bump to 1.0.3 with corrected README versions
chore: bump version to 1.0.2
chore: bump version to 1.0.2
compileSdk: 34 → 35androidx.lifecycle: 2.7.0 → 2.8.7androidx.annotation: 1.7.1 → 1.9.1detachUnityView guards against removing view owned by another container
detachUnityView() now checks superview === self before removing, preventing race conditions when a new container has already claimed the Unity view.restartRendering() to UnityPlayerManager that calls showUnityWindow() after view reattachment, ensuring AR subsystems (e.g. Vuforia) reinitialize properly.File.symlink? which returns true for dangling symlinks, causing CocoaPods realpath to fail with ENOENT._activeViewId instead of hardcoded 0, ensuring correct MethodChannel routing after Flutter navigation creates new platform views.registerViewChannel(int viewId) to UnityKitPlatform — automatically called when a new platform view is created on both Android (Hybrid Composition) and iOS (UiKitView).fix: handle UnityFramework.framework symlink in .pubignore
fix: handle UnityFramework.framework symlink in .pubignore
_RoutedUnityMessage now exposes logical gameObject, method, type, and data properties matching the actual target (e.g. FlutterAddressablesManager), while routing through FlutterBridge.ReceiveMessage at the native layer via nativeGameObject/nativeMethod.UnityMessage.nativeGameObject and UnityMessage.nativeMethod getters for accessing the native UnitySendMessage target separately from the logical message properties.UnityAssetLoader.loadContentCatalogMessage — request Unity to load a remote content catalog by URL (Addressables).streaming/ and loaders/ now pass — routed messages correctly expose target info through standard UnityMessage properties.Android display bug: Unity view no longer renders on top of all Flutter widgets, covering the entire screen regardless of layout bounds (#1).
AndroidView) to Hybrid Composition (PlatformViewLink + initExpensiveAndroidView) for correct z-ordering and bounds clipping.setZOrderOnTop(false) on Unity's SurfaceView after attachment.Fixed .pubignore excluding models/ directory from published package, causing 159 analysis errors on pub.dev.
.pubignore excluding models/ directory from published package, causing 159 analysis errors on pub.dev.connectivity_plus dependency.Gesture controls for UnityView (gestureRecognizers parameter).
UnityView (gestureRecognizers parameter).UnityConfig.targetFrameRate).UnityBridge, UnityBridgeImpl with typed messaging.uninitialized → ready → paused → resumed → disposed).drop, keepLatest, keepFirst).UnityView widget with platform views (Android HybridComposition + iOS UiKitView).UnityPlaceholder loading widget.UnityLifecycleMixin for app pause/resume handling.UnityKitException, BridgeException, CommunicationException, LifecycleException, EngineNotReadyException).UnityConfig, UnityMessage, SceneInfo models.MethodChannel.FlutterBridge, MessageRouter, MessageBatcher, SceneTracker, NativeAPI, FlutterMonoBehaviour).Your coding agent can read these notes before it upgrades. Set up the MCP server →