Skip to content

fix(llc, core, ui, localization): hide raw StreamChannel errors behind themed, connection-aware states - #2846

Open
xsahil03x wants to merge 1 commit into
masterfrom
sahil/flu-628-hide-raw-streamchannel-errors-from-end-users
Open

fix(llc, core, ui, localization): hide raw StreamChannel errors behind themed, connection-aware states#2846
xsahil03x wants to merge 1 commit into
masterfrom
sahil/flu-628-hide-raw-streamchannel-errors-from-end-users

Conversation

@xsahil03x

@xsahil03x xsahil03x commented Jul 27, 2026

Copy link
Copy Markdown
Member

FLU-628

Raw StreamChannel initialization errors — and the default list/scroll-view error states — were leaking unthemed, unlocalized error details to end users. This routes them through themed, localized, connection-aware default states (no internet / slow connection / generic), overridable at every level.

What changed

stream_chat

  • Add StreamChatNetworkError.type (StreamChatNetworkErrorType) exposing the transport failure kind; deprecate isRequestCancelledError in favor of type == StreamChatNetworkErrorType.cancel.
  • A failed channel initialization no longer leaves Channel.initialized errored or its name/image/extraData setters throwing — a subsequent successful (re)init recovers cleanly (supports the retry flow).
  • Clearer toString() for StreamWebSocketError / StreamChatNetworkError.

stream_chat_flutter_core

  • Add StreamChannelState.retry() to re-run a failed channel init (the retry action for StreamChannel.errorBuilder).
  • Add DefaultStreamChannelBuilders, an inherited widget supplying default loading/error builders to descendant StreamChannels.
  • The default StreamChannel error state no longer exposes raw error details.

stream_chat_flutter

  • StreamChat now installs themed, connection-aware default loading & error states for StreamChannel — overridable per-StreamChannel or via DefaultStreamChannelBuilders.
  • Default list/scroll-view error states (channel, message, member, user, thread, poll-vote, reaction, search, photo) are now connection-aware, falling back to each view's specific error text.
  • StreamScrollViewErrorWidget gains errorSubtitle; StreamScrollViewLoadingWidget gains size (StreamLoadingSpinnerSize) and deprecates the now-unused height/width.

stream_chat_localizations

  • New connection-error strings (connectionError*, slowConnectionError*, genericError*) for all supported locales.

Testing

  • All four touched package suites pass; dart analyze --fatal-infos clean.
  • New tests cover the default channel error/loading states, the retry-clears-stale-error flow, and full localization coverage.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added connection-aware, localized error titles/descriptions (and optional error subtitles) across scroll-based views.
    • Added resolveNetworkErrorText and improved default channel loading/error UI via inherited default builders, including retry() for failed channel initialization.
    • Added StreamScrollViewLoadingWidget.size and StreamScrollViewErrorWidget.errorSubtitle.
  • Bug Fixes

    • Improved network error classification (transport type), cancellation detection, and error toString() formatting.
    • Fixed channel retry/initialization so errors don’t become stale or leak raw details; corrected watcher count/removal behavior.
  • Deprecations

    • Deprecated the legacy cancellation flag and StreamScrollViewLoadingWidget width/height.

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The update adds typed transport errors, retryable channel initialization, inherited default channel builders, localized network-aware error messages, updated scroll-view error/loading widgets, and connection-error translations across supported locales.

Changes

Network errors and channel state

Layer / File(s) Summary
Transport error contract
packages/stream_chat/lib/src/core/error/stream_chat_error.dart, packages/stream_chat/test/src/core/error/stream_chat_error_test.dart, packages/stream_chat/CHANGELOG.md
Adds transport error types, Dio mapping, deprecated cancellation compatibility, updated error formatting, and related tests and changelog entries.
Channel initialization recovery
packages/stream_chat/lib/src/client/channel.dart, packages/stream_chat/test/src/client/channel_test.dart
Allows failed channels to be retried, preserves setter access after failed initialization, and uses typed cancellation errors.

Flutter error presentation

Layer / File(s) Summary
StreamChannel retry and inherited builders
packages/stream_chat_flutter_core/lib/src/stream_channel.dart, packages/stream_chat_flutter_core/test/stream_channel_test.dart
Adds retry support, inherited loading/error builders, stale-error handling, and safe default error UI.
Localized Flutter error presentation
packages/stream_chat_flutter/lib/src/utils/*, packages/stream_chat_flutter/lib/src/scroll_view/*, packages/stream_chat_flutter/lib/src/stream_chat.dart, packages/stream_chat_flutter/test/src/*
Resolves network-specific error text, updates default list and channel builders, adds error subtitles, and replaces fixed-size loading indicators with sized spinners.
Connection error localization
packages/stream_chat_localizations/lib/src/*, packages/stream_chat_localizations/test/*
Adds connection, slow-connection, and generic error translations across supported locales and validates them.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant App
  participant StreamChannel
  participant StreamChannelState
  participant DefaultStreamChannelBuilders
  App->>StreamChannel: build channel
  StreamChannel->>StreamChannelState: initialize
  StreamChannelState->>DefaultStreamChannelBuilders: resolve error builder
  DefaultStreamChannelBuilders->>StreamChannelState: render localized error and retry
  App->>StreamChannelState: press Try Again
  StreamChannelState->>StreamChannelState: retry initialization
Loading

Possibly related PRs

Suggested reviewers: renefloor, brazol

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: replacing raw StreamChannel errors with themed, connection-aware states.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sahil/flu-628-hide-raw-streamchannel-errors-from-end-users

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (1)
packages/stream_chat/lib/src/client/channel.dart (1)

2048-2052: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Retry handshake depends on undocumented evaluation ordering across two packages. The initialized completer reset in Channel.query is only observable by callers that read channel.initialized after query()/watch() has begun executing; StreamChannelState._initializeChannel silently relies on that. Neither side states the constraint, so a harmless-looking reorder would resurrect the "stuck on stale error" bug.

  • packages/stream_chat/lib/src/client/channel.dart#L2048-L2052: add a comment noting this reset must remain before the first await so callers observe the fresh completer.
  • packages/stream_chat_flutter_core/lib/src/stream_channel.dart#L830-L834: add a comment (or an explicit two-statement form) stating that _maybeInitChannel() must be started before channel.initialized is read.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/stream_chat/lib/src/client/channel.dart` around lines 2048 - 2052,
The retry handshake relies on evaluation ordering that must be documented at
both sites: in packages/stream_chat/lib/src/client/channel.dart#L2048-L2052, add
a comment stating the _initializedCompleter reset in Channel.query must occur
before the first await so callers observe the fresh completer; in
packages/stream_chat_flutter_core/lib/src/stream_channel.dart#L830-L834, add a
comment or use explicit statements clarifying that _maybeInitChannel() must be
started before reading channel.initialized.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart`:
- Around line 538-543: Update the resolveNetworkErrorText calls in
MessageListView at
packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart:538-543
and StreamChannelListView at
packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_view.dart:336-347
to provide the view-specific fallbackTitle values
context.translations.loadingMessagesError and
context.translations.loadingChannelsError respectively, preserving existing
behavior for classified errors.

In
`@packages/stream_chat_flutter/lib/src/scroll_view/member_scroll_view/stream_member_grid_view.dart`:
- Around line 368-381: Pass the resolved description as errorSubtitle:
Text(text.description) in the StreamScrollViewErrorWidget builders at
packages/stream_chat_flutter/lib/src/scroll_view/member_scroll_view/stream_member_grid_view.dart#L368-L381,
packages/stream_chat_flutter/lib/src/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart#L338-L351,
packages/stream_chat_flutter/lib/src/scroll_view/photo_gallery/stream_photo_gallery.dart#L393-L404,
and
packages/stream_chat_flutter/lib/src/scroll_view/poll_vote_scroll_view/stream_poll_vote_list_view.dart#L344-L357,
while preserving the existing errorTitle and retry behavior.

In
`@packages/stream_chat_flutter/lib/src/scroll_view/member_scroll_view/stream_member_list_view.dart`:
- Around line 335-348: Update the StreamScrollViewErrorWidget construction in
the errorBuilder callback to pass the resolved description from
resolveNetworkErrorText in addition to errorTitle, ensuring connection and
slow-connection messages are rendered while preserving the custom errorBuilder
and retry behavior.

In
`@packages/stream_chat_flutter/lib/src/scroll_view/reaction_scroll_view/stream_reaction_list_view.dart`:
- Around line 203-211: Pass the resolved description as errorSubtitle:
Text(text.description) in each StreamScrollViewErrorWidget construction using
resolveNetworkErrorText: stream_reaction_list_view.dart lines 203-211,
stream_thread_list_view.dart lines 341-349, stream_user_grid_view.dart lines
367-375, and stream_user_list_view.dart lines 337-345. Keep the existing
errorTitle and retry behavior unchanged.

In
`@packages/stream_chat_flutter/lib/src/scroll_view/stream_scroll_view_loading_widget.dart`:
- Around line 10-12: The deprecated height and width parameters in the loading
widget constructor must continue affecting the spinner dimensions until their
removal. Update the widget’s sizing logic to use caller-provided height and
width when supplied, while retaining the size-based defaults when they are
omitted.

In
`@packages/stream_chat_localizations/lib/src/stream_chat_localizations_ca.dart`:
- Around line 188-204: Add Dart doc comments for the six public localization
getters—connectionErrorTitle, connectionErrorDescription,
slowConnectionErrorTitle, slowConnectionErrorDescription, genericErrorTitle, and
genericErrorDescription—in
packages/stream_chat_localizations/lib/src/stream_chat_localizations_ca.dart
lines 188-204,
packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart
lines 182-198, and
packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart
lines 187-203.

---

Nitpick comments:
In `@packages/stream_chat/lib/src/client/channel.dart`:
- Around line 2048-2052: The retry handshake relies on evaluation ordering that
must be documented at both sites: in
packages/stream_chat/lib/src/client/channel.dart#L2048-L2052, add a comment
stating the _initializedCompleter reset in Channel.query must occur before the
first await so callers observe the fresh completer; in
packages/stream_chat_flutter_core/lib/src/stream_channel.dart#L830-L834, add a
comment or use explicit statements clarifying that _maybeInitChannel() must be
started before reading channel.initialized.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 2df328c8-eca7-4f7d-9244-64b8c8cac126

📥 Commits

Reviewing files that changed from the base of the PR and between 2c02463 and e445160.

📒 Files selected for processing (42)
  • packages/stream_chat/CHANGELOG.md
  • packages/stream_chat/lib/src/client/channel.dart
  • packages/stream_chat/lib/src/core/error/stream_chat_error.dart
  • packages/stream_chat/test/src/client/channel_test.dart
  • packages/stream_chat/test/src/core/error/stream_chat_error_test.dart
  • packages/stream_chat_flutter/CHANGELOG.md
  • packages/stream_chat_flutter/lib/src/localization/translations.dart
  • packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/member_scroll_view/stream_member_grid_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/member_scroll_view/stream_member_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/photo_gallery/stream_photo_gallery.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/poll_vote_scroll_view/stream_poll_vote_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/reaction_scroll_view/stream_reaction_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/stream_scroll_view_error_widget.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/stream_scroll_view_loading_widget.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/thread_scroll_view/stream_thread_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/user_scroll_view/stream_user_grid_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/user_scroll_view/stream_user_list_view.dart
  • packages/stream_chat_flutter/lib/src/stream_chat.dart
  • packages/stream_chat_flutter/lib/src/utils/network_error_text.dart
  • packages/stream_chat_flutter/lib/stream_chat_flutter.dart
  • packages/stream_chat_flutter/test/src/localization/default_translations_test.dart
  • packages/stream_chat_flutter/test/src/stream_chat_default_channel_error_test.dart
  • packages/stream_chat_flutter_core/CHANGELOG.md
  • packages/stream_chat_flutter_core/lib/src/stream_channel.dart
  • packages/stream_chat_flutter_core/test/stream_channel_test.dart
  • packages/stream_chat_localizations/CHANGELOG.md
  • packages/stream_chat_localizations/example/lib/add_new_lang.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_ca.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_no.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart
  • packages/stream_chat_localizations/test/translations_test.dart

Comment thread packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart Outdated
@codecov

codecov Bot commented Jul 27, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 65.68266% with 93 lines in your changes missing coverage. Please review.
✅ Project coverage is 72.76%. Comparing base (2c02463) to head (f865bb0).

Files with missing lines Patch % Lines
.../channel_scroll_view/stream_channel_list_view.dart 0.00% 10 Missing ⚠️
...ew/member_scroll_view/stream_member_grid_view.dart 0.00% 8 Missing ⚠️
...ew/member_scroll_view/stream_member_list_view.dart 0.00% 8 Missing ⚠️
...h_scroll_view/stream_message_search_list_view.dart 0.00% 8 Missing ⚠️
...l_vote_scroll_view/stream_poll_vote_list_view.dart 0.00% 8 Missing ⚠️
...eaction_scroll_view/stream_reaction_list_view.dart 0.00% 8 Missing ⚠️
...ew/thread_scroll_view/stream_thread_list_view.dart 0.00% 8 Missing ⚠️
...l_view/user_scroll_view/stream_user_grid_view.dart 0.00% 8 Missing ⚠️
...l_view/user_scroll_view/stream_user_list_view.dart 0.00% 8 Missing ⚠️
...croll_view/photo_gallery/stream_photo_gallery.dart 0.00% 7 Missing ⚠️
... and 4 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2846      +/-   ##
==========================================
+ Coverage   72.61%   72.76%   +0.15%     
==========================================
  Files         427      428       +1     
  Lines       27421    27593     +172     
==========================================
+ Hits        19911    20079     +168     
- Misses       7510     7514       +4     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@xsahil03x
xsahil03x force-pushed the sahil/flu-628-hide-raw-streamchannel-errors-from-end-users branch 3 times, most recently from ffdad0c to 18b557e Compare July 27, 2026 20:51

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/stream_chat/CHANGELOG.md`:
- Line 14: Update the changelog entry describing StreamWebSocketError.toString()
to document the actual StreamWebSocketError(...) prefix, while preserving the
existing notes about code and transport type.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 797a9876-e8df-4207-bac0-0da629b3fdab

📥 Commits

Reviewing files that changed from the base of the PR and between ffdad0c and 18b557e.

📒 Files selected for processing (42)
  • packages/stream_chat/CHANGELOG.md
  • packages/stream_chat/lib/src/client/channel.dart
  • packages/stream_chat/lib/src/core/error/stream_chat_error.dart
  • packages/stream_chat/test/src/client/channel_test.dart
  • packages/stream_chat/test/src/core/error/stream_chat_error_test.dart
  • packages/stream_chat_flutter/CHANGELOG.md
  • packages/stream_chat_flutter/lib/src/localization/translations.dart
  • packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/member_scroll_view/stream_member_grid_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/member_scroll_view/stream_member_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/photo_gallery/stream_photo_gallery.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/poll_vote_scroll_view/stream_poll_vote_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/reaction_scroll_view/stream_reaction_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/stream_scroll_view_error_widget.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/stream_scroll_view_loading_widget.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/thread_scroll_view/stream_thread_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/user_scroll_view/stream_user_grid_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/user_scroll_view/stream_user_list_view.dart
  • packages/stream_chat_flutter/lib/src/stream_chat.dart
  • packages/stream_chat_flutter/lib/src/utils/network_error_text.dart
  • packages/stream_chat_flutter/lib/stream_chat_flutter.dart
  • packages/stream_chat_flutter/test/src/localization/default_translations_test.dart
  • packages/stream_chat_flutter/test/src/stream_chat_default_channel_error_test.dart
  • packages/stream_chat_flutter_core/CHANGELOG.md
  • packages/stream_chat_flutter_core/lib/src/stream_channel.dart
  • packages/stream_chat_flutter_core/test/stream_channel_test.dart
  • packages/stream_chat_localizations/CHANGELOG.md
  • packages/stream_chat_localizations/example/lib/add_new_lang.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_ca.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_no.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart
  • packages/stream_chat_localizations/test/translations_test.dart
🚧 Files skipped from review as they are similar to previous changes (38)
  • packages/stream_chat_flutter/lib/stream_chat_flutter.dart
  • packages/stream_chat_flutter/lib/src/utils/network_error_text.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart
  • packages/stream_chat_localizations/CHANGELOG.md
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_ca.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/photo_gallery/stream_photo_gallery.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/user_scroll_view/stream_user_grid_view.dart
  • packages/stream_chat_localizations/example/lib/add_new_lang.dart
  • packages/stream_chat_flutter/test/src/localization/default_translations_test.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/member_scroll_view/stream_member_list_view.dart
  • packages/stream_chat_flutter/test/src/stream_chat_default_channel_error_test.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart
  • packages/stream_chat_flutter_core/CHANGELOG.md
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart
  • packages/stream_chat_flutter/lib/src/stream_chat.dart
  • packages/stream_chat/test/src/core/error/stream_chat_error_test.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/member_scroll_view/stream_member_grid_view.dart
  • packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/user_scroll_view/stream_user_list_view.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart
  • packages/stream_chat/lib/src/client/channel.dart
  • packages/stream_chat_flutter_core/test/stream_channel_test.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/thread_scroll_view/stream_thread_list_view.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/stream_scroll_view_error_widget.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/reaction_scroll_view/stream_reaction_list_view.dart
  • packages/stream_chat_flutter/lib/src/localization/translations.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/stream_scroll_view_loading_widget.dart
  • packages/stream_chat_localizations/lib/src/stream_chat_localizations_no.dart
  • packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_view.dart
  • packages/stream_chat/lib/src/core/error/stream_chat_error.dart
  • packages/stream_chat/test/src/client/channel_test.dart
  • packages/stream_chat_flutter_core/lib/src/stream_channel.dart

Comment thread packages/stream_chat/CHANGELOG.md
@xsahil03x
xsahil03x force-pushed the sahil/flu-628-hide-raw-streamchannel-errors-from-end-users branch from 18b557e to 3fa19b4 Compare July 27, 2026 20:56
…e states

Route StreamChannel's default loading and error UI through themed, localized
builders (DefaultStreamChannelBuilders) so end users see connection-aware copy
("No Internet Connection" / "Slow Internet Connection" / generic) instead of
raw error objects. Adds StreamChatNetworkError.type for transport-level
classification, a retry() on StreamChannel, and localized error
title/description keys across all locales.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@xsahil03x
xsahil03x force-pushed the sahil/flu-628-hide-raw-streamchannel-errors-from-end-users branch from 3fa19b4 to f865bb0 Compare July 27, 2026 21:09
@xsahil03x xsahil03x changed the title fix(ui): hide raw StreamChannel errors behind themed, connection-aware states fix(llc, core, ui, localization): hide raw StreamChannel errors behind themed, connection-aware states Jul 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant