PackageTrack
Sign in Get early access

matrix

Matrix Dart SDK

10.2.1 25K downloads/mo #1994 most downloaded on pub.dev famedly/matrix-dart-sdk

What this package is like to depend on

Last release 6 days ago

18 Aug 2026

Ships fairly regularly

a new release about every 2 weeks

Nearly every release is documented

notes for 228 of 233 stable releases

1 version withdrawn

withdrawn after publishing

11 years old

244 releases · first in 2015

36 releases in the last 12 months

see the full history below

Release timeline

244 releases · Feb 2015 to Aug 2026
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 244
  1. 10.2.1 18 Aug 2026
    Release notes

    [10.2.1] 18th August 2026

    • fix: ignore missing files during local file cache cleanup (Karthikeyan S)
    Open source →
    Release notes
    • fix: ignore missing files during local file cache cleanup (Karthikeyan S)
    Open source →
  2. 10.2.0 17 Aug 2026
    Release notes

    [10.2.0] 17th August 2026

    • feat: add clearCryptoIdentity to CryptoSetupExtension (Karthikeyan S)
    Open source →
    Release notes
    • feat: add clearCryptoIdentity to CryptoSetupExtension (Karthikeyan S)
    Open source →
  3. 10.1.0 14 Aug 2026
    Release notes

    [10.1.0] 14th August 2026

    • build: fix workflow flutter version (Christian Kußowski)
    • fix: read fresh keys in IndexedDB Box.getAllValues (td)
    • fix: Remove port from registration redirect if its a loopback (N00byKing)
    Open source →
    Release notes
    • build: fix workflow flutter version (Christian Kußowski)
    • fix: read fresh keys in IndexedDB Box.getAllValues (td)
    • fix: Remove port from registration redirect if its a loopback (N00byKing)
    Open source →
  4. 10.0.1 11 Aug 2026
    Release notes

    [10.0.1] 11th August 2026

    What's Changed

    • fix: do not guess a file extension for video thumbnails with unknown mimetype by @td-famedly in #2419
    • fix: refresh DM hero avatars in partial rooms by @qaysdwekat in #2443

    New Contributors

    Full Changelog: v10.0.0...v10.0.1

    Open source →
    Release notes
    • fix: do not guess a file extension for video thumbnails with unknown mimetype (Cursor Agent)
    • fix: refresh DM hero avatars in partial rooms (Qays Dwekat)
    Open source →
  5. 10.0.0 07 Aug 2026
    Release notes

    [10.0.0] 7th August 2026

    • build: update dart vodozemac to 0.7.0 and vodozemac rust to 0.10.0 with it (Christian Kußowski)
    • chore: (BREAKING CHANGE) use dart 3.12 (td)
    • chore: export run benchmarked (Christian Kußowski)
    • chore: simplify database.getClient() (Christian Kußowski)
    • feat: (BREAKING) add ability to finish partial crypto identity initialization to initCryptoIdentity (Karthikeyan S)
    • fix: defer SSSS default key change until after UIA (Karthikeyan S)
    • fix: reactions for 1:1 livekit based calls (td)
    • fix: when parsing a 'react' command, try to convert custom emote name to MXC URL so the URL is saved as the key for the reaction event (ggurdin)
    • fix: workaround that [JSAny.dartify] on wasm could turn an int into double (Christian Kußowski)
    Open source →
    Release notes
    • build: update dart vodozemac to 0.7.0 and vodozemac rust to 0.10.0 with it (Christian Kußowski)
    • chore: (BREAKING CHANGE) use dart 3.12 (td)
    • chore: export run benchmarked (Christian Kußowski)
    • chore: simplify database.getClient() (Christian Kußowski)
    • feat: (BREAKING) add ability to finish partial crypto identity initialization to initCryptoIdentity (Karthikeyan S)
    • fix: defer SSSS default key change until after UIA (Karthikeyan S)
    • fix: reactions for 1:1 livekit based calls (td)
    • fix: when parsing a 'react' command, try to convert custom emote name to MXC URL so the URL is saved as the key for the reaction event (ggurdin)
    • fix: workaround that [JSAny.dartify] on wasm could turn an int into double (Christian Kußowski)
    Open source →
  6. 9.0.1 11 Aug 2026
    Release notes

    [9.0.1] 11th August 2026

    • fix: refresh DM hero avatars in partial rooms (Qays Dwekat)
    Open source →
  7. 9.0.0 27 Jul 2026
    Release notes

    [9.0.0] 27th July 2026

    • build: (BREAKING) update to matrix spec 1-19 (Christian Kußowski)
    • build: (BREAKING) update to sqlite3 (Christian Kußowski)
    • chore: forward error on bootstrap error (Christian Kußowski)
    • chore: reduce noisyness of update cache error (Christian Kußowski)
    • feat: add customVideoThumbnailGenerator callback to create video thumbnails on send (Cursor Agent)
    • feat: add flag to redactEvent with edits (Christian Kußowski)
    • feat: new helper stripKeyPreservingDefault to clear SSSS keyId secret entries alone (Karthikeyan S)
    • fix(voip): stop delayed leave heartbeat when delayed event is gone (Cursor Agent)
    • fix: allow redact-power users to end polls (MSC3381) (quantumheart)
    • fix: be less strict on http status codes for oidc (Christian Kußowski)
    • fix: make login types check optional (Christian Kußowski)
    • refactor: always fetch member list from server for first megolm session (Christian Kußowski)
    • test(polls): await expectLater before power-level mutation (quantumheart)
    Open source →
    Release notes
    • build: (BREAKING) update to matrix spec 1-19 (Christian Kußowski)
    • build: (BREAKING) update to sqlite3 (Christian Kußowski)
    • chore: forward error on bootstrap error (Christian Kußowski)
    • chore: reduce noisyness of update cache error (Christian Kußowski)
    • feat: add customVideoThumbnailGenerator callback to create video thumbnails on send (Cursor Agent)
    • feat: add flag to redactEvent with edits (Christian Kußowski)
    • feat: new helper stripKeyPreservingDefault to clear SSSS keyId secret entries alone (Karthikeyan S)
    • fix(voip): stop delayed leave heartbeat when delayed event is gone (Cursor Agent)
    • fix: allow redact-power users to end polls (MSC3381) (quantumheart)
    • fix: be less strict on http status codes for oidc (Christian Kußowski)
    • fix: make login types check optional (Christian Kußowski)
    • refactor: always fetch member list from server for first megolm session (Christian Kußowski)
    • test(polls): await expectLater before power-level mutation (quantumheart)
    Open source →
  8. 8.1.0 13 Jul 2026
    Release notes

    [8.1.0] 13th July 2026

    • fix: avoid concurrent modification when updating group calls (Marco Attanasio)
    • fix: clear LiveKit key debounce timestamp on dispose (Marco Attanasio)
    • fix: get user device keys for gappy syncs and partial rooms (td)
    Open source →
    Release notes
    • fix: avoid concurrent modification when updating group calls (Marco Attanasio)
    • fix: clear LiveKit key debounce timestamp on dispose (Marco Attanasio)
    • fix: get user device keys for gappy syncs and partial rooms (td)
    Open source →
  9. 8.0.0 09 Jul 2026
    Release notes

    [8.0.0] 9th July 2026

    • chore: better error handling for soft logout (Christian Kußowski)
    • docs: correct Dart SDK version in cloud setup notes (Cursor Agent)
    • fix: do not assume room member count is 1 if absent (Christian Kußowski)
    • fix: ensure not soft logged out in pushhelper (Christian Kußowski)
    • fix: (BREAKING) Soft logout with Matrix native OIDC does not send soft_logout flag (Christian Kußowski)
    • fix: use thumbnail only if present (Christian Kußowski)
    • refactor: No longer set timeline event as state event (Christian Kußowski)
    Open source →
    Release notes
    • chore: better error handling for soft logout (Christian Kußowski)
    • docs: correct Dart SDK version in cloud setup notes (Cursor Agent)
    • fix: do not assume room member count is 1 if absent (Christian Kußowski)
    • fix: ensure not soft logged out in pushhelper (Christian Kußowski)
    • fix: (BREAKING) Soft logout with Matrix native OIDC does not send soft_logout flag (Christian Kußowski)
    • fix: use thumbnail only if present (Christian Kußowski)
    • refactor: No longer set timeline event as state event (Christian Kußowski)
    Open source →
  10. 7.5.0 03 Jul 2026
    Release notes

    [7.5.0] 2nd July 2026

    • build: (BREAKING) update to matrix spec 1.18 (Christian Kußowski)
    • build: (deps): bump actions/checkout from 6 to 7 (dependabot[bot])
    • build: update dart to 3.11 and enable null aware elements in lists (Christian Kußowski)
    • build: update to matrix spec 1.17 (Christian Kußowski)
    • ci: enable sort_pub_dependencies lint (Cursor Agent)
    • fix: database operation not in transaction (Christian Kußowski)
    • fix: load keys for decryption separately for [Room].searchEvents (Karthikeyan S)
    • fix: selfSign() with passphrase fails sometimes when using existing ssss instead of just the passphrase (Christian Kußowski)
    • fix: type error in model (Christian Kußowski)
    • refactor: use new formatting for code generated files (Christian Kußowski)
    Open source →
    Release notes
    • build: (BREAKING) update to matrix spec 1.18 (Christian Kußowski)
    • build: (deps): bump actions/checkout from 6 to 7 (dependabot[bot])
    • build: update dart to 3.11 and enable null aware elements in lists (Christian Kußowski)
    • build: update to matrix spec 1.17 (Christian Kußowski)
    • ci: enable sort_pub_dependencies lint (Cursor Agent)
    • fix: database operation not in transaction (Christian Kußowski)
    • fix: load keys for decryption separately for [Room].searchEvents (Karthikeyan S)
    • fix: selfSign() with passphrase fails sometimes when using existing ssss instead of just the passphrase (Christian Kußowski)
    • fix: type error in model (Christian Kußowski)
    • refactor: use new formatting for code generated files (Christian Kußowski)
    Open source →
  11. 7.4.0 24 Jun 2026
    Release notes
    • feat: add skipScanner flag to download methods for per-call content scanner bypass (Khalil Amor)
    Open source →
  12. 7.3.0 18 Jun 2026
    Release notes
    • feat: add isValidMatrixIdStrict for spec-compliant matrix id validation (Cursor Agent)
    • fix: return null when thumbnail was not found and make cast nullable (yurtemre7)
    Open source →
  13. 7.2.4 16 Jun 2026
    Release notes
    • chore: Follow up actually store updated tofu state in db (Christian Kußowski)
    • fix: Allow image resizer to return new mime type (Christian Kußowski)
    Open source →
  14. 7.2.3 11 Jun 2026
    Release notes
    • feat: Flag cross signing keys as tofu (Christian Kußowski)
    • chore: Increase timeout for create key (Christian Kußowski)
    • fix: Do not request keys when already logged out (Christian Kußowski)
    Open source →
  15. 7.2.2 29 May 2026
    Release notes
    • fix: fail tests if they fail (#2348) (td)
    Open source →
  16. 7.2.1 28 May 2026
    Release notes
    • feat: update ssss to centralise key logic (Abrish Sabri)
    • fix: Account data not existing throws exception while function expects empty json object (Christian Kußowski)
    • fix: encryption loop iteration (Abrish Sabri)
    Open source →
  17. 7.2.0 27 May 2026
    Release notes
    • build: (deps): bump actions/checkout from 4 to 6 (dependabot[bot])
    • feat: add matrix content scanner support (Khalil)
    • fix: Actually throw error on failed download (Christian Kußowski)
    • fix: Workaround that synapse's initial sync account data may not be up to date (Christian Kußowski)
    Open source →
  18. 7.1.2 12 May 2026
    Release notes
    • fix: do not send notify rtc event in direct chats (td)
    Open source →
  19. 7.1.1 12 May 2026
    Release notes
    • fix: call delayed event canceller should not use application and actually remove it from local state on leave (td)
    • fix: Do not send dozens of key request to device messages on timeline export (krille-chan)
    • fix: Pass correct event to redaction localization (Christian Kußowski)
    Open source →
  20. 7.1.0 29 Apr 2026
    Release notes
    • feat: custom rooms list sorter (Karthikeyan S)
    • feat: gate LaTeX markdown parsing behind enableLatexMarkdown flag (Khalil)
    • fix: clear database if onSoftLogout fails instead of logout (td)
    • fix: fetch poll responses for fragmented timelines (Khalil)
    • fix: last event in archived rooms (td)
    • fix: null check operator in SSSS accountData parsing (Karthikeyan S)
    • fix: preserve call rejection room previews (#2322) (Yash Garg)
    Open source →
  21. 7.0.0 15 Apr 2026
    Release notes
    • refactor: (BREAKING) add type for power level as extension type over int (Christian Kußowski)
    • fix(voip): allow updating application and stop timers for cancelled delayed events (Yash Garg)
    • chore: Ignore avoid void async in webworker (Christian Kußowski)
    • feat: Store sending files in file cache for 30 days (Christian Kußowski)
    • fix: shrinkImage fail blocks sendFileEvent without ux feedback (Christian Kußowski)
    Open source →
  22. 6.2.0 13 Mar 2026
    Release notes
    • chore: (BREAKING) Apply default soft logout handling (Christian Kußowski)
    • chore: Add exit 0 to tear down all in bootstrap test (Christian Kußowski)
    • chore: improve to_device log lines (td)
    • chore: remove _discoveryDataLoading dead code (Karthikeyan S)
    • feat(auth): add additionalFields support to AuthenticationData for UIA stages (arman)
    • feat: Add support for low priority room and sort rooms properly (Christian Kußowski)
    • fix: expiresIn from OIDC is in seconds not milliseconds (Christian Kußowski)
    • fix: Katex markdown syntax (Christian Kußowski)
    • fix: pass missing additional profile info to CachedProfileInformation (Christian Kußowski)
    • refactor: Make Matrix SDK Database extendable (Christian Kußowski)
    • refactor: Remove commented code (Christian Kußowski)
    • test: check if init() with waitUntilLoadCompletedLoaded hangs (Karthikeyan S)
    • test: dehydrated devices logic in synapse (Karthikeyan S)
    Open source →
  23. 6.1.1 09 Feb 2026
    Release notes
    • fix: handle UIA case for unexpectedResponse during exception + tests
    Open source →
  24. 6.1.0 07 Feb 2026
    Release notes
    • build: Update vodozemac to 0.5.0 (Christian Kußowski)
    • chore: Add tests for OIDC refresh and logout (Christian Kußowski)
    • chore: better default body for unknown message format in calcUnlocalizedBody (Karthikeyan S)
    • chore: Store oidc client id (Christian Kußowski)
    • feat: Logout with oidc (Christian Kußowski)
    • feat: Refresh token with matrix native oidc (Christian Kußowski)
    • fix: Room.searchEvents() returns empty list if all events are cached in db (Christian Kußowski)
    • refactor: Always try deserialize error as matrixexception (Christian Kußowski)
    Open source →
  25. 6.0.0 21 Jan 2026
    Release notes
    • feat: add an option to intercept log events (#2233) (Yash Garg)
    • feat: Simplified bootstrap with crypto identity extension (Christian Kußowski)
    • fix: don't remove local participant on group call reconnection (Karthikeyan S)
    • refactor: (BREAKING) Use unified requestAndCache method (Christian Kußowski)
    Open source →
  26. 5.0.0 13 Jan 2026
    Release notes
    • feat: Implement MSC2964 dynamic client registration (Christian Kußowski)
    • feat: Implement MSC2964 OIDC login flow (Christian Kußowski)
    • feat: MSC4075 - MatrixRTC notification event (call ringing) (Karthikeyan S)
    • feat: send MSC4075 notification event for group calls (Karthikeyan S)
    • fix: override server sent group call leave if we know we are still in a group call (td)
    • fix: unescaped property keys in push rule evaluator + tests (Karthikeyan S)
    • refactor: (BREAKING) Event info map (Christian Kußowski)
    • refactor: Add name property to ssss key and pass through keyId for opening (Christian Kußowski)
    • refactor: Store read receipts in own box instead of room account data (Christian Kußowski)
    • test: [Room].isDirectChat functionality (Karthikeyan S)
    Open source →
  27. 4.1.0 21 Dec 2025
    Release notes
    • refactor: Deprecated Client.customRefreshTokenLifetime in favor of method parameter (Christian Kußowski)
    Open source →
  28. 4.0.3 17 Dec 2025
    Release notes
    • fix: remove call member event wrt unprotected state keys (td)
    Open source →
  29. 4.0.2 16 Dec 2025
    Release notes
    • feat: New searchEvents method in room (Christian Kußowski)
    • fix: config option with voip to use unprotected state keys for group call member events (td)
    • fix: skip unnecessary 404 errors in profile fetching for member displayname change events in timeline (Karthikeyan S)
    Open source →
  30. 4.0.1 11 Dec 2025
    Release notes
    • refactor: CI as integrate.yaml file without file (Christian Kußowski)
    • refactor: Update lints package and add missing type annotations (Christian Kußowski)
    • feat: add a flag to use MSC3757 (Yash Garg)
    Open source →
  31. 4.0.0 13 Nov 2025
    Release notes

    Matrix Dart SDK 4.0.0 comes with support for polls, adds first bits towards OIDC and improved support for spaces and threads. This release also fixes a major performance leak while updating user device keys in the sync loop. Especially for larger accounts this should improve the performance a lot. v4.0.0 It comes with some breaking changes:

    Migration guide

    • Client.checkHomeserver() now returns a fourth value. You can just ignore it if you don't need auth_metadata.
    • RelationshipType.reply has been removed in favor of Event.inReplyToEventId() where you can set if you want to ignore fallbacks or not. This makes it easier to differenciate fallback replies and replies inside of a thread.

    All changes

    • feat: (BREAKING) Discover OIDC auth metadata on Client.checkHomeserver() (Christian Kußowski)
    • feat: Allow init with access token (Christian Kußowski)
    • feat: Implement msc 3381 polls (krille-chan)
    • feat: Use small versions of bullet point characters (Kelrap)
    • fix: Correctly remove space child (Christian Kußowski)
    • fix: Set join rules with knowk_restricted and multiple allow condition room ids (Christian Kußowski)
    • refactor: (BREAKING) Replace Event.relationshipType and Event.relationshipEventId with Event.inReplyToEventId() for replies. (Christian Kußowski)
    • refactor: Add option to always call auth metadata (Christian Kußowski)
    • refactor: Escape HTML tags before markdown rendering (Christian Kußowski)
    • refactor: Make direct chat getter type safe (Christian Kußowski)
    • refactor: Simpler update user device keys (Christian Kußowski)
    • chore: Cache auth metadata response in client (Christian Kußowski)
    • chore: Remove flutter from CI (Christian Kußowski)
    Open source →
  32. 3.0.2 24 Oct 2025
    Release notes
    • chore: bump vodozemac version to v0.4.0 (Karthikeyan S)
    • refactor: merge onGroupCallState and onGroupCallEvent into matrixRTCEventStream with proper types (Karthikeyan S)
    • test: matrixRTCEventStream emitted events in a group call (Karthikeyan S)
    Open source →
  33. 3.0.1 15 Oct 2025
    Release notes
    • feat: Make display sending event configurable in Room.sendEvent() (Christian Kußowski)
    • chore: tidy up call membership event (td)
    • fix: Remove avatar crashes with invalid uri (Christian Kußowski)
    Open source →
  34. 3.0.0 07 Oct 2025
    Release notes

    Migration hints:

    • With extended profiles in Matrix 1.16 you now have to use Client.getProfileField() instead of Client.getAvatar() or Client.getDisplayname().

    • You no longer need to ship flutter_openssl_crypto. The necessary encryption algorithms now come from the Vodozemac package. This should make the platform integration much easier.

    All changes:

    • feat: Add deleteDeviceDisplayName() method to matrix API (Christian Kußowski)
    • feat: Add onProgress for upload and download methods (Christian Kußowski)
    • feat: Auto refresh last event after limited timeline (Christian Kußowski)
    • feat: Implement get mentions from event content (Christian Kußowski)
    • feat: Leave DM rooms and invite when ignoring a user (Christian Kußowski)
    • feat: reactions for voip calls (td)
    • feat: Set m.mention field when sending text event (Christian Kußowski)
    • fix: (BREAKING CHANGE) remove only your device call membership if room is not msc3757 (td)
    • fix: Set unread notification count only if not null in sync (Christian Kußowski)
    • refactor: migrate to web and js_interop pkgs (Karthikeyan S)
    • refactor: Return a better default for lastEventReceivedTime (Christian Kußowski)
    • refactor: Support matrix spec 1.16 (Christian Kußowski)
    • refactor: Upgrade to vodozemac cryptoutils (Christian Kußowski)
    • chore: Remove unused callbacks (Christian Kußowski)
    • chore: Remove unused dependency (Christian Kußowski)
    • chore: Revert on upload progress (Christian Kußowski)
    Open source →
  35. 2.0.1 09 Sep 2025
    Release notes
    • fix: scheduled event list init (td)
    Open source →
  36. 2.0.0 09 Sep 2025
    Release notes

    There have been some breaking changes to the VoIP codebase. Specifically, you will have to pass your instance of the VoIP class to existing getCallMemberships* functions which are an extension on the Room class.

    • feat: delayed and device owned state events support for group calls (td)
    • feat: allow setting keyring size (td)
    • feat: (BREAKING CHANGE) allow setting custom call timeout values, you will have to pass the voip class to a bunch of existing call related methods though (td)
    • feat: also debounce join key rotation (td)
    • fix: fix the issue that user avatar can not be loaded on windows (Eric Lin)
    • fix: reuse a deviceId if available (td)
    • refactor: (BREAKING CHANGE) you can now get the matrix eventId from CallMembership(s) (td)
    • refactor: Allow room ids to not have a domain (Christian Kußowski)
    • refactor: Clean up new dart version lints (Christian Kußowski)
    • refactor: Make signableJson type safe with type safe class (Christian Kußowski)
    • refactor: Remove dynamic in cross signing code (Christian Kußowski)
    • refactor: Restrict canChangeStateEvent, canInvite and canSendEvent to joined users (Christian Kußowski)
    • refactor: Restrict canKick canBan and canRedact to joined users (Christian Kußowski)
    • refactor: Restrict canRequestHistory to joined or archived rooms (Christian Kußowski)
    • refactor: Sync for unknown room in push helper and catch timeout exceptions (Christian Kußowski)
    Open source →
  37. 1.1.1 07 Aug 2025

    Nothing published for this version

  38. 1.1.0 14 Jul 2025
    Release notes
    • fix: (BREAKING) Can not logout and login again with same Client object (Christian Kußowski)
    • refactor: Clean up new dart version lints (Christian Kußowski)

    Now if you logout and login again you will reuse the same database. In case you use database encryption and want to use a new key, please consider recreating the database like this:

    await client.database.delete();
    client.database = await MatrixSdkDatabase.init(/*...*/);
    
    Open source →
  39. 1.0.1 16 Jun 2025
    Release notes
    • chore: Add hint to init vodozemac also in native implementations (Christian Kußowski)
    • fix: exportDump and importDump and add unit tests (Christian Kußowski)
    • fix: user.canKick should be true for knocking users as well (Christian Kußowski)
    Open source →
  40. 1.0.0 10 Jun 2025
    Release notes
    • feat: Migrate to vodozemac (Christian Kußowski)
    • refactor: Make database non nullable (Christian Kußowski)
    • refactor: (BREAKING) Make database required (Christian Kußowski)
    • refactor: disable benchmarks by global boolean (#2104) (Krille-chan)
    • refactor: Remove olm dependency (Christian Kußowski)

    Breaking changes:

    DatabaseBuilder deprecated

    From now on the Client constructor expects an open database. Client.database is no longer nullable.

    Before:

    final client = Client(
      'Client Name',
      databaseBuilder: (_) async {
          final database = MatrixSdkDatabase(
            '<Database Name>',
            database: await databaseFactoryFfi.openDatabase(':memory:'),
            sqfliteFactory: databaseFactoryFfi,
          );
          await database.open();
          return database;
        },
    );
    

    Now:

    final client = Client(
        '<Client Name>',
        database: await MatrixSdkDatabase.init(
            '<Database Name>',
            database: await databaseFactoryFfi.openDatabase(':memory:'),
            sqfliteFactory: databaseFactoryFfi,
        ),
    );
    

    LibOlm deprecated in favor of Vodozemac

    LibOlm is no longer used. From now on you should use Vodozemac. For Flutter you can use flutter_vodozemac. This just needs to be initialized once:

    import 'package:flutter_vodozemac/flutter_vodozemac.dart' as vod;
    
    // ...
    
    await vod.init();
    
    final client = Client('Matrix Client',
        // ...
        // ...
        nativeImplementations: NativeImplementationsIsolate(
            compute,
            // Also init in NativeImplemenetations if you use it there:
            vodozemacInit: () => vod.init(),
        ),
        // ...
    );
    

    This should work on Android, iOS, macOS, Linux and Windows.

    For web you need to compile vodozemac to wasm. Please refer to the Vodozemac bindings documentation.

    Open source →
  41. 0.40.2 05 Jun 2025
    Release notes
    • fix: fallback on homeserver is userID null (The one with the braid)
    Open source →
  42. 0.40.1 02 Jun 2025
    Release notes
    • feat: Add logout command (Christian Kußowski)
    • feat: Switch to github flavor markdown to render checkboxes (krille-chan)
    • fix: Add missing copy json in updateInboundGroupdSessionAllowedAtIndex method (Christian Kußowski)
    • fix: Correct filename when downloading thumbnail (Christian Kußowski)
    • fix: no user feedback if client.getConfig() takes some time (Christian Kußowski)
    • refactor: Do not store room update for leave rooms not cached anyway (Christian Kußowski)
    Open source →
  43. 0.40.0 09 May 2025
    Release notes
    • feat: Add localization for voice message type (Krille)
    • feat: Support fallback for threads in Event.getReplyEvent() (Krille)
    • fix: Fetch well-known from domain from userId, not from homeserver domain (krille-chan)
    • fix: incorrect Event status update in constructor (Karthikeyan S)
    • refactor: (BREAKING) Remove hive database and hive dependencies (Krille)
    • refactor: Remove unused event status roomState (Krille)
    Open source →
  44. 0.39.4 06 May 2025
    Release notes
    • chore: prev_batch update after a limited timeline follow-up (Karthikeyan S)
    • fix: make sure prev_batch is updated after a limited timeline (td)
    • fix: sanity if room prev_batch null, populate it (td)
    Open source →
  45. 0.39.3 06 May 2025
    Release notes
    • fix: Do not load timeline while sync is processed (Krille)
    Open source →
  46. 0.39.2 30 Apr 2025
    Release notes
    • fix: add proper description for User class (Yash-Garg)
    • fix: handling of existing calls in onCallInvite (Yash-Garg)
    • fix: make sure to keep track of aggregated events after requesting history or future (td)
    Open source →
  47. 0.39.1 10 Apr 2025
    Release notes
    • fix: deleting last message is edited (Mohammad Reza Moradi)
    Open source →
  48. 0.39.0 09 Apr 2025
    Release notes
    • feat: endpoints for spec v1.14 (BREAKING CHANGE)
    • feat: Make dehydrated device name configurable
    • feat: ensure direct chats have only 2 members before sending verification requests
    • fix: Trim plaintext after removeMarkdown
    • fix: use macv2 for correct base64 encoding
    • chore: add v1.14 to supported versions
    • chore: upgrade webrtc_interface to v1.2.2+hotfix.1
    Open source →
  49. 0.38.1 19 Mar 2025
    Release notes
    • chore: Export event localizations (Krille)
    • chore: Remove unnecessary template (Krille)
    • feat: Add command to upgrade room (Krille)
    • feat: Add parameter for allow condition for restricted rooms (Krille)
    • feat: allow skipping existing chat when calling startDirectChat (td)
    • feat: export timeline events (Karthikeyan S)
    • feat: upload code coverage to codecov (td)
    • fix: incorrect filename when caption is used in body of event (Karthikeyan S)
    • fix: incorrect mimeType for files when downloading (Karthikeyan S)
    • fix: Older state events overwrite newer ones on fetching history (Krille)
    • fix: room prev_batch set incorrectly (Karthikeyan S)
    • fix: WebRTC videoValue missing (Krille)
    • refactor: Add file info to placeholder before sending file event (Krille)
    • refactor: Add missing versions to supportedVersions and use warning instead of blocking (Krille)
    • refactor: Improve linebreak logic for html messages (Krille)
    • refactor: Make markUnread a noop if unread is already as intendend and throw exception if room membership is not join (Krille)
    Open source →
  50. 0.38.0 05 Feb 2025
    Release notes

    Migration notes

    Now you can pass a StringBuffer object to the command handler to pass some arbitrary data back to the caller.

    Before:

    addCommand('newCommand', (CommandArgs args){});
    

    After:

    addCommand('newCommand', (CommandArgs args, StringBuffer? stdout){});
    

    In order to use the stdout, you should create a StringBuffer stdout object and pass it to the parseAndRunCommand method or sendTextEvent (that uses parseAndRunCommand internally).

    Like this:

    final stdout = StringBuffer();
    
    await client.parseAndRunCommand(
      null, // Room can be null now, if the command isn't room specific
      "/newCommand options",
      ...
      stdout: stdout,
    );
    
    // OR
    
    await room.sendTextEvent(
      "/newCommand options"
      ...
      commandStdout: stdout,
    );
    
    final output = DefaultCommandOutput.fromStdout(stdout);
    if(output != null) {
      print(output.toString());
    }
    

    All changes:

    • feat: (BREAKING) Make share keys with logic configurable (Krille)
    • feat: BREAKING improve command_extension (The one with the braid)
    • fix: Megolm sessions become invalid after restarting client (Krille)
    • fix: priorize direct chat users over empty hero user list (The one with the braid)
    • fix: PushNotification fromJson - toJson fails (Krille)
    • refactor: Make converting linebreaks in markdowntohtml optional (Krille)
    • refactor: Use .toSet() instead of Set.from() (Krille)
    Open source →
  51. 0.37.0 27 Jan 2025
    Release notes

    Bigger release with a lot of refactorings under the hood. Those do not necessarily make the SDK more performant but more robust and type safe.

    There are multiple breaking changes:

    • The SDK now uses spec v1.13
    • Rename timeCreated to latestEventReceivedTime in Room
    • Push Notification helper class make all fields optional and migrate dynamics to Object?
    • Remove deprecated Hive Database

    Also Client.onEvent has been deprecated in favor of:

    Client.onTimelineEvent // For timeline events (after decryption)
    Client.onHistoryEvent // Same for timeline events when fetching history
    Client.onNotification // Events which would trigger a notification like messages or room invites (after decryption)
    

    If you are using Client.onEvent to filter for state events, please from now on use Client.onSync and filter the state events out of it (as they are unencrypted anyway). Same with "Account Data" or ephemeral events. For notifications the usage should now be much easier as Client.onNotification already filters out events which should not trigger a notification.

    All changes:

    • feat: support push rule conditions event_property_is & event_property_contains (Karthikeyan S)
    • build: Add timeouts to all ci jobs (Krille)
    • build: Update dev dependencies and remove unused dependencies (Krille)
    • chore: (BREAKING CHANGE) spec v1.13 autogen (td)
    • chore: Add tests for converting event types (Krille)
    • chore: add transactionId getter to Event class (Karthikeyan S)
    • chore: BREAKING rename timeCreated to latestEventReceivedTime in Room (Karthikeyan S)
    • chore: Dispose all clients in test (Krille)
    • chore: Follow up store unable to decrypt information correctly (Krille)
    • fix: Add missing redacts parameter when transforming to Event type (Krille)
    • fix: Also load room account data in getSingleRoom() (Krille)
    • fix: clear cache when clearing DB in MatrixSdkDatabase (Karthikeyan S)
    • fix: Coverage CI job is timing out (Krille)
    • fix: No roomId in BasicRoomEvent stores roomaccountdata silently wrong (Krille)
    • fix: Use MB and KB instead of MiB and KiB for file sizes (Krille)
    • refactor: (BREAKING) Push Notification helper class make all fields optional and migrate dynamics to Object? (Krille)
    • refactor: (BREAKING) Remove deprecated Hive Database (Krille)
    • refactor: Do not handle ephemerals as EventUpdates (Krille)
    • refactor: Do not unnecessarily serialize and deserialize json for every account data object (Krille)
    • refactor: Do not use eventupdate type for verification requests (Krille)
    • refactor: Handle Room Account Data outside of Room Event Updates (Krille)
    • refactor: Remove BasicRoomEvent type (Krille)
    • refactor: Replace enhanced enum with native dart enum (Krille)
    • refactor: Update rooms by event not event update (Krille)
    • refactor: Use Event instead of EventUpdate for pending decryption event queue and for decrypt events in general (Krille)
    • refactor: Use Event instead of EventUpdate for storing in db (Krille)
    Open source →
  52. 0.36.0 17 Dec 2024
    Release notes

    How to migrate from onMigration to onInitStateChanged

    Before:

    Client('Name', onMigration: () {
      print('Migrating now....');
    });
    

    After:

    Client('Name', onInitStateChanged: (state) {
      if (state == InitState.migratingDatabase) {
        print('Migrating now....');
      }
    });
    
    • chore: Make parse version error less sound (Krille)
    • feat: (BREAKING) Replace onMigration with advanced callback onInitStateChanged (Krille)
    • feat: Add deleteFile() endpoint to database (Krille)
    • feat: support filtering events when requesting events history or future (Johannes Nevels)
    • fix: BREAKING! missed initial updates for stream listener callbacks in P2P & mesh calls (Karthikeyan S)
    • fix: clear legacy db on logout properly (Karthikeyan S)
    • fix: don't reset wellknown cache on initialization (Konrad Pozniak)
    • fix: rejecting a call doesn't send m.call.reject event (Karthikeyan S)
    • fix: throw error on failed reaction send (Mohammad Reza Moradi)
    • refactor: BREAKING Store room states as triple keys (Krille)
    • refactor: Clarify Room.join() behavior and make sure DM link is purged if room not found (Krille)
    • refactor: Do not set default timeout for initialSync (Krille)
    • refactor: Do not set the deprecated dont_notify action in push rules (Krille)
    • refactor: Fix new lints from flutter 3.27 (Krille)
    • refactor: Remove unnecessary roomId parameter from decryptRoomEvent method (Krille)
    Open source →
  53. 0.35.0 11 Nov 2024
    Release notes

    Fixes a minor performance leak where the app re-requests the member list of all encrypted rooms. For this the parameter cache in Room.requestParticipants() is now also responsible to store the member data in the database. Also it is not true by default anymore for unencrypted rooms.

    • feat: Add additional properties for LoginFlow type (Krille)
    • feat: Optional authentication for profile requests (Krille)
    • fix: BREAKING! Cache members for encrypted rooms in database (Krille)
    • chore: add require trailing comma lint (Mohammad Reza Moradi)
    Open source →
  54. 0.34.0 21 Oct 2024
    Release notes
    • feat: add equality and hashCode overrides for autogenerated models (BREAKING CHANGE) (td)
    • feat: v1.12 spec endpoints support (BREAKING CHANGE) (td)
    • fix: (BREAKING) Change power level without changing memory (Krille)
    • fix: AsyncCache is not invalidating on error (Krille)
    • fix: by default don't uplaod new keys in our tests (Nicolas Werner)
    • fix: Deduplicate key OTK uploads (Nicolas Werner)
    • fix: Don't wait for 5 milliseconds on every sync in our tests (Nicolas Werner)
    • fix: edge cases when calculating (un)localized body (Nicolas Werner)
    • fix: enable some event tests without libolm (Nicolas Werner)
    • fix: prevent body (and plaintextBody) from return html by accident (Nicolas Werner)
    • fix: properly remove reply fallback from (un)localized body (Nicolas Werner)
    • fix: Race conditions in tests now that they are running faster (Nicolas Werner)
    • refactor: Migrate to m.marked_unread from Matrix v1.12 (Krille)
    • refactor: Use Object.hash instead of hashCode ^ (Krille)
    • chore: Add more (un)localized body tests (Nicolas Werner)
    • chore: bump dart version to fix tests not exiting sometimes (Nicolas Werner)
    • chore: Lower loglevel for call event with unexpected sender (Krille)
    • chore: Make more clear that Client.uploadContent() does not end to end encrypt the file (Krille)
    • chore: Switch to cheaper github runner (Nicolas Werner)
    • chore: tear down clients in event tests properly (Nicolas Werner)
    • chore: update Emote-only expressions (The one with the braid)
    • chore: Upgrade dependencies (Nicolas Werner)
    Open source →
  55. 0.33.0 19 Sep 2024
    Release notes
    • feat: BREAKING CHANGE v1.11 matrix-spec endpoints (td)
    • fix: also lazy load members for archive (Nicolas Werner)
    • fix: don't convert archived rooms to joined rooms by accident (Nicolas Werner)
    • fix: wait for pending transactions before db close (Nicolas Werner)
    Open source →
  56. 0.32.4 28 Aug 2024
    Release notes
    • fix: actually make sure clientBox has a account (td)
    Open source →
  57. 0.32.3 27 Aug 2024
    Release notes
    • feat: cache .well-known data (The one with the braid)
    • fix: dedup /versions calls (td)
    • fix: race condition between getState and requestUser updates (td)
    Open source →
  58. 0.32.2 21 Aug 2024
    Release notes
    • fix: SQLCipher dylib location on macOS builds (The one with the braid)
    • refactor: Also use authenticated media if unstable features claim support (Krille)
    Open source →
  59. 0.32.1 16 Aug 2024
    Release notes
    • feat: support for authenticated media (td)
    Open source →
  60. 0.32.0 09 Aug 2024
    Release notes
    • chore: add info about tests to readme (td)
    • chore: increase log level to verbose in tests (td)
    • fix: App freezes because of recursive loop with getLocalizedDisplayname() call (Krille)
    • fix: Call logout on soft logout fail (Krille)
    • fix: don't restart github action service after apt install (Nicolas Werner)
    • fix: leave->invite in the same sync would hide the invite (Nicolas Werner)
    • (BREAKING) fix: update last event properly on cancel send (td)
    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