Library / SDK
Frezyx/talker avatar
Frezyx/talker

Talker splits Dart logging into a core package and a package per integration

☎️ Advanced error handler and logger for dart and flutter apps

845 stars127 forksDartMIT

At a glance

What is it?
Talker is a Dart and Flutter error handler and logger published on pub.dev as a family of packages: a core talker package, a Flutter layer that shows logs on screen, a pretty logger, and adapters for dio, http, Chopper, BLoC, Riverpod and gRPC. The design goal is to shorten the path between an exception and the place it happened, and the cost is a dependency list you choose from.
Who is it for?
Adopt Talker when you build Flutter applications and want the log history, the error location and the crash report to live in one place, including on the device, without building a logging UI yourself. Do not adopt it if your team standardises on print and debugPrint with a crash reporter doing the analysis, since Talker's value is the on-screen history and the adapters, and the package list grows with every integration you enable.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Dart, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

One family, many packages, chosen by integration

Talker is described as an advanced error handler and logger for Dart and Flutter apps, and the first thing the README does is explain the packaging. Talker is designed for any level of customization, and the packages table splits the project by what you integrate with rather than by feature.

The core package is talker, the main Dart package for logging and error handling. talker_flutter is the Flutter extension layer, described as providing coloured Flutter app logs on iOS and Android, a logs list screen, showing error messages at UI out of the box, and a route observer. talker_logger is the customizable pretty logger for Dart and Flutter apps.

Then come the integrations, and the naming is regular enough to guess the rest of the list: talker_dio_logger for dio HTTP calls, talker_http_logger for the http package, talker_chopper_logger for Chopper, talker_bloc_logger for BLoC, and talker_riverpod_logger for Riverpod. The motivation list also names built-in support for GRPC calls, and the repository carries a packages directory holding all of them.

The main package is published on pub.dev as talker, and the repository is organised as a monorepo with packages, docs, examples and utils directories. The example directory holds shop_app_example, which is the quickest way to see the log screen inside a real application rather than a snippet.

The goal is to shorten the path to the error

The Motivation section states the main goal plainly: to provide the ability to understand where the error occurs in the shortest possible time. Everything else in the list follows from that.

The features are grouped by what they remove from the debugging loop. Compatibility with any state management, so the logging layer does not dictate how you structure your app. Compatibility with any crash reporting tool, including Firebase Crashlytics, Sentry and custom tools, so the library sits alongside whatever you already use rather than replacing it. Logging of the UI output of a Flutter app on the screen, so the history is where the bug happened rather than in a console you cannot see. Sharing and saving of log history and crash reports, so a report can leave the device. Alerts for UI exceptions, so a failure is not silent. And the built-in support for the HTTP clients and state management libraries listed earlier.

Two of those deserve emphasis. The on-screen log output is the unusual part of Talker: a logger that renders into the app means a tester on a real device, or a user before they send feedback, can see what happened without a debugger attached. And the crash reporting interoperability is the part that keeps it out of the way of an existing stack.

The README also points to a web demo hosted at frezyx.github.io/talker, and says the demo is there for better understanding how it works, which is a sensible way to evaluate a logging user interface.

Getting the packages and seeing them work

The documentation available here does not include installation commands, so rather than invent them, it is worth pointing at where the project says to get the code.

The packages are published on pub.dev, and the README links the main talker package directly to its pub.dev page, with a badge for the package version and another for the popularity statistics. Every adapter in the table has its own pub.dev listing, which means you add only the ones your app needs rather than a single bundle.

The source is on GitHub under the Frezyx organisation, and the repository carries a packages directory, so the published package and the monorepo source are both one click away. The docs directory holds the documentation sources, and the web demo linked from the README runs the packages in a browser, which is a reasonable place to start before you wire anything into an application.

The example directory contains shop_app_example, an application that uses the packages, and it is the best reference for how the Flutter layer is set up in a real project, because the README itself does not show the wiring code.

The last push to the master branch was on 2026-10-20, and the published versions are in the 5.1 line, with 5.1.17 on 2026-04-27, 5.1.16 on 2026-03-25 and 5.1.15 on 2026-03-08.

What each adapter package is for

The adapter packages are the reason the family exists, and they are worth choosing deliberately rather than adding all of them.

The HTTP ones cover the three common Dart clients. talker_dio_logger is described as the best logger for dio HTTP calls, talker_http_logger does the same job for the http package, and talker_chopper_logger for Chopper. Each one turns the client's requests and responses into Talker log entries, turning HTTP traffic into the same log stream as the rest of the app.

The state management ones follow the same pattern. talker_bloc_logger is for BLoC and talker_riverpod_logger for Riverpod, and the motivation list states that Talker is compatible with any state management, so the two packages exist for the two most common choices rather than as a requirement.

The GRPC support is listed alongside those in the feature list, and the naming pattern suggests the same shape for a gRPC logger package.

What the adapters buy you is a consistent log format across the layers of an application. Without them, an HTTP client, a BLoC and a widget each log in their own idiom, and the log history becomes a mixture of shapes that is hard to read on a phone screen. With them, the log screen shows one stream.

The Flutter layer is where the difference shows

The talker_flutter package is the one that changes how a Flutter developer works, and its description in the table is a list of things you would otherwise build yourself.

Coloured Flutter app logs for iOS and Android, a logs list screen, showing error messages at UI out of the box, and a route observer. The route observer is the quiet one: with a navigation observer in place, the log history includes where the user was, which turns a stack trace into a path.

The alerts for UI exceptions close the loop. Flutter's default behaviour for a build error is to show a grey error widget in place of the widget that failed, which tells a developer that something broke but not much else. With Talker, the error is captured, shown as an alert, and written into the same history as everything else the app did.

That combination is the reason the library exists. An app that logs to a console tells you what happened only if you are attached to the console. An app that logs to the screen tells you what happened to the person using it, and the history can be shared with them.

The main package is the part that works without Flutter, and talker_logger is the pretty console output for Dart applications, so a backend service can use the same core without pulling in the Flutter layer.

Logs, crash reports and what you should check first

Talker sits between two things that developers usually keep apart. It is a logger, with a history, a screen and a level system, and it is also an error handler, with alerts and reports you can share.

The sharing part matters more than it sounds. The README lists allowing sharing and saving of logs history and error crash reports among the features, and lists works with any crash reporting tool among the compatibility promises. Together those mean a user can hand you the log of the session where the app broke, rather than a paraphrase of what they remember, and you can still forward the same event into Crashlytics or Sentry if that is where your dashboards live.

The alternative approach is worth naming because many teams already have it: use print or debugPrint for the console, and a crash reporting SDK for the failures, and accept that the two streams never meet. That setup is free and it works, and it is the right answer when your failures are already reproducible on a device you can attach to. It stops being the right answer the moment the bug only happens for one user, on one device, once.

Two limitations are visible in the documentation. The first is that a logger that writes to the screen is a logger that runs in release builds too, and the README does not describe a mechanism for stripping it out. The second is that the number of packages in the table means the dependency set is chosen rather than imposed, which is a benefit for the app and a cost for anyone trying to standardise on one logging setup across a team.

The licence is MIT, the package is on pub.dev, and the repository carries a code of conduct, a contributing guide and a renovate configuration for dependency updates.

Editorial conclusion

Adopt Talker when you build Flutter applications and want the log history, the error location and the crash report to live in one place, including on the device, without building a logging UI yourself. Do not adopt it if your team standardises on print and debugPrint with a crash reporter doing the analysis, since Talker's value is the on-screen history and the adapters, and the package list grows with every integration you enable. Before you commit, read the web demo linked from the README, because the fastest way to judge a logging UI is to see it, and check that the version you pin, in the 5.1.x line, matches the Flutter SDK your application builds with.

Frequently asked questions

Which packages make up the Talker family?

The core talker package for logging and error handling, talker_flutter for the Flutter layer with coloured logs, a logs list screen and a route observer, talker_logger as a pretty logger, and adapters including talker_dio_logger, talker_http_logger, talker_chopper_logger, talker_bloc_logger and talker_riverpod_logger, plus GRPC support.

Does Talker work with Firebase Crashlytics or Sentry?

Yes. The README lists compatibility with any crash reporting tool, including Firebase Crashlytics, Sentry and custom tools, so Talker is meant to sit alongside an existing reporting stack rather than replace it.

Can a Flutter app show its logs on screen with Talker?

Yes. The README lists logging of the UI output of a Flutter app on the screen, and talker_flutter provides coloured app logs, a logs list screen, alerts for UI exceptions and a route observer.

Which state management libraries does Talker support?

Talker is described as compatible with any state management, and the package table includes talker_bloc_logger for BLoC and talker_riverpod_logger for Riverpod, so the built-in loggers cover the two most common choices.

Official sources

  1. Frezyx/talker on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/frezyx-talker.svg)](https://hysenlabs.com/projects/frezyx-talker)

Was this useful?