chuck_interceptor 3.2.0
chuck_interceptor: ^3.2.0 copied to clipboard
Chuck is an HTTP Inspector tool which helps debugging http requests. It catches and stores http requests and responses, which can be viewed via simple UI.
3.2.0 #
- Removed the
package_info_plusdependency. App details in exported logs now come fromChuckCore.getPackageInfo(), which awaits an optionalpackageInfoProviderpassed toChuck(returns the newChuckPackageInfo). Without a provider the log header simply omits the app details. - Removed the
share_plusdependency.Chucktakes a single optionalonSharecallback (ChuckShareContentwithsubject,textorfilePath). Without it the share button on the call details screen and the "Share" action after saving logs are hidden. ChuckCore.saveHttpRequestsnow returnsFuture<void>.
3.1.3 #
- Bumped
material_uito^1.5.0,share_plusto^13.3.1andpackage_info_plusto^10.2.2. - Narrowed the
dart:convertanddart:ioimports in the save helper to the symbols it uses. No API or behaviour changes.
3.1.2 #
- Fixed the
ScrollController is attached to more than one ScrollPositionassertion thrown while scrolling or swiping tabs on the call details screen (iOS). The Preview tab now owns itsScrollControllerinstead of sharing thePrimaryScrollControllerwith the other tabs. - Rewrote the JSON viewer on the Preview tab as a lazy sliver (
SliverList.builder). The tree is flattened into the currently visible rows, so only rows on screen are built and large responses scroll smoothly. - The Preview tab now parses the response body once per response instead of on every rebuild.
- Nested arrays show the type of their first element (e.g.
Array<Object>[3]) consistently, and a primitive JSON root value (e.g."ok"or42) is now displayed instead of an empty view.
3.1.1 #
- Bumped
material_uito^1.4.0. - Formatted the package, example and tests with a 120 column page width (
formatter.page_widthinanalysis_options.yaml). No API or behaviour changes.
3.1.0 #
-
Dropped the
http(package:http) dependency. Chuck no longer pullshttpinto consumers' dependency graphs.- Removed
Chuck.onHttpResponse(...)and the internalChuckHttpAdapter. - Removed the
ChuckHttpExtensionsextension (Future<Response>.interceptWithChuck(...)).
- Removed
-
New client agnostic API which replaces it and works with any http client, including
package:http,chopper,retrofitor a hand written one. It takes plain values (method, uri, headers, body, status code), so Chuck does not need to depend on the client:chuck.logHttpCall(...)logs a finished request and response in one step.chuck.logRequest(...)returns a call id;chuck.logResponse(id, ...)andchuck.logError(id, ...)complete it later, for clients which stream the response.chuck.genericAdapterexposes the same methods asChuckGenericAdapterif you prefer wiring the adapter yourself.- Generated call ids count down from
-1, so they never collide with thehashCodebased ids used by the Dio andHttpClientadapters.
-
Migration for
package:httpusers:final response = await http.get(url); chuck.logHttpCall( method: response.request!.method, uri: response.request!.url, statusCode: response.statusCode, requestHeaders: response.request?.headers, responseHeaders: response.headers, responseBody: response.body, client: 'http package', ); -
Dio and
dart:ioHttpClientintegrations are unchanged.
3.0.1 #
- Inspector no longer inherits the host app theme. Chuck screens and dialogs now build their own
ThemeData(ChuckThemeData.isolate/ChuckThemeData.buildTheme), so the app's colors, fonts, tab and button styling can't leak into the inspector. Only the brightness and an explicitChuckThemeExtensionoverride are still taken from the surrounding app. - Fixed clipped tab labels ("Response") on the call details screen.
- Trimmed the published archive via
.pubignore: package tests, the example app's test and analysis config,pubspec.lock,.metadataand editor/CI folders are no longer shipped to pub.flutter-io.cn (they stay in git). Onlyexample/lib/main.dart,example/pubspec.yamlandexample/README.mdremain so the pub.flutter-io.cn "Example" tab keeps working.
3.0.0 #
- Breaking: removed
flutter_local_notifications. Chuck no longer ships a native notification dependency, which removes the notification permission, the notification channel setup and a large chunk of native code from the final APK/IPA.- Removed
Chuck(showNotification: ...)andChuck(notificationIcon: ...)parameters — delete them from yourChuck(...)call. - Same for
ChuckCore(showNotification: ..., notificationIcon: ...).
- Removed
- New
ChuckButton: draggable floating button which shows the number of intercepted calls and opens the inspector on tap. It replaces the notification as the default way of opening Chuck.- Use
builder: chuck.builderinMaterialAppfor the default placement, or buildChuckButton(chuckCore: chuck.core, child: child)yourself to customisevisible,alignment,padding,draggableandhideWhenEmpty. - Button color reflects traffic state (idle / in flight / failed) and it is hidden automatically
when
enabled: falseor while the inspector is open.
- Use
- Added
Chuck.core,Chuck.callsStreamandChuckCore.callsStream/ChuckCore.isInspectorOpenedso a custom inspector entry point can be built without touching internals. - Raised the required environment to Dart
>=3.13.0and Flutter>=3.47.0; the example app now uses the same constraints. - Example app: migrated iOS from CocoaPods to Swift Package Manager (Podfile,
Podfile.lockandPods/removed, xcconfigs and workspace cleaned) and adopted theUIScenelifecycle (UIApplicationSceneManifestwithFlutterSceneDelegate,AppDelegatenow registers plugins viaFlutterImplicitEngineDelegate).
2.6.2 #
- Fixed
No ScaffoldMessenger widget foundcrash when tapping copy buttons (request/response body, headers, error, stack trace, JSON viewer, cURL) inside apps whose widget tree does not expose aScaffoldMessengerabove Chuck's screens.- Chuck's calls list, call details and stats screens now install their own
ScaffoldMessenger. - All snack bars go through
ChuckSnackBarHelper, which usesScaffoldMessenger.maybeOfand logs instead of throwing when no messenger is reachable.
- Chuck's calls list, call details and stats screens now install their own
2.6.1 #
- Fixed
prefer_if_elements_to_conditional_expressionslint violations in JSON viewer widget to resolve pub.flutter-io.cn pana static analysis and platform score.
2.6.0 #
- Performance & Zero Overhead:
- Added
enabledflag (defaulttrue). When set tofalse, interceptors short-circuit immediately with zero logging, zero memory allocation, and zero overhead for production builds. - Added
maxBodySizeparameter (default 1 MB) to prevent OOM crashes on huge payloads (e.g. large file downloads, binary streams). - Debounced notifications (350ms) to eliminate platform channel jank on high-frequency API traffic.
- Notifications automatically suppressed while the inspector UI is open.
- $O(1)$ memory limit eviction via efficient bounded FIFO buffer.
- Added
- Size Optimization:
- Completely removed
permission_handlerand 5 native sub-packages, significantly reducing APK/IPA binary size. - Streamlined file export and sharing with
share_plus(XFile) requiring zero Android storage permissions. - Optimized
.pubignoreby excluding platform and test build artifacts, reducing pub.flutter-io.cn archive size from 125 KB down to 39 KB (~70% reduction).
- Completely removed
- UI & Theme Overhaul:
- Re-architected theme system around Flutter
ThemeExtension(ChuckThemeExtension) with comprehensive light & dark tokens (semantic status colors, HTTP method badges, JSON syntax highlighting). - Redesigned calls list screen with a clean search bar, modern call cards, and bottom safe area padding.
- Modernized call details screen with structured copyable cards, tabbed views, and live reactive stream updates.
- Completely revamped Stats screen into an informative dashboard with KPI summary cards, timing latency metrics, transfer breakdown, and HTTP methods analytics.
- Themed interactive JSON tree viewer with full syntax coloring.
- Re-architected theme system around Flutter
- Bug Fixes:
- Fixed bug where Dio and HttpClient response/request headers were lost due to iterating unpopulated maps.
- Fixed
addErrornot clearingloading = falseor calculating call duration, leaving errored calls indefinitely in pending state. - Fixed average duration calculation in Stats screen that was overwriting sums instead of accumulating.
- Fixed
firstWherecrash in call details screen when a call was evicted from FIFO while being viewed. - Fixed stale state in call details tab views by propagating reactive calls.
2.5.0 #
- Updated dependencies.
2.4.3 #
- Added
ChuckThemeExtensionandChuckThemeDataexports for package-level Chuck UI theming. - Fixed Chuck dialogs and screens to respect host app light/dark theme without forcing light mode.
- Fixed theme token propagation so custom Chuck theme overrides are preserved when attaching to
ThemeData. - Added
onAccenttheme token to ensure readable foreground content on accent-colored surfaces. - Updated core Chuck UI widgets to use Chuck theme tokens instead of relying on host text theme colors.
2.4.2 #
- Version bump for publishing
2.4.1 #
- update version to 2.4.1 and upgrade flutter_local_notifications to 21.0.0
2.4.0 #
- Updated dependencies: flutter_local_notifications to ^20.0.0
2.3.3 #
- Updated dependencies: share_plus to ^12.0.1, flutter_local_notifications to ^19.5.0
- Migrated from flutter_lints to analysis_lints for better code analysis
- Minor improvements and code quality enhancements
- Version bump for publishing
2.3.2 #
- Version bump for publishing
2.3.1 #
- Version bump for publishing
2.3.0 #
- Performance optimizations and memory management improvements
- Enhanced error handling with comprehensive try-catch blocks
- Improved null safety patterns and defensive programming
- Added comprehensive code documentation and inline comments
- Created unit test suite for core functionality
- Fixed README.md documentation errors and API inconsistencies
- Optimized list operations and reduced memory allocations
- Better user feedback and error recovery mechanisms
- Fixed JSON parsing issues in response preview widgets
- Enhanced JSON detection and validation logic
- Improved error handling for malformed JSON responses
- Better fallback display for JSON parsing failures
- Added detailed error messages for debugging JSON issues
- Fixed Content-Type detection when headers show "unknown"
- Enhanced Content-Type header parsing for different HTTP client formats
- Improved JSON detection logic to work even with unknown content types
- Better fallback to structure-based JSON detection
- Enhanced text response detection for unknown content types
- Improved JSON display with interactive JsonViewer widget
- Added beautiful styling and formatting for JSON responses
- Enhanced JSON readability with expandable/collapsible structure
- Better visual separation and container styling for JSON content
- Fixed JSON parsing to show structured view instead of raw text
- Removed Preview tab from HTTP call details screen
- Simplified UI by removing redundant preview functionality
- Updated tab controller to use 4 tabs instead of 5
- Cleaned up unused preview widget code
- Restored Preview tab to HTTP call details screen
- Simplified ChuckCallResponseWidget to show single view (raw body)
- Enhanced ChuckCallResponsePreviewWidget with interactive JSON viewer
- Separated concerns: Response tab shows raw data, Preview tab shows formatted view
- Improved user experience with dedicated preview functionality
- Updated dependencies
2.2.7 #
- Updated dependencies.
2.2.6 #
- Updated dependencies.
2.2.5 #
- Updated dependencies.
2.2.4 #
- Updated dependencies.
2.2.3 #
- Updated dependencies.
2.2.2 #
- Updated dependencies.
2.2.1 #
- Updated dependencies.
2.2.0 #
- Updated dependencies.
2.1.9 #
- Updated dependencies.
2.1.8 #
- Updated dependencies.
2.1.7 #
- Updated dependencies.
2.1.6 #
- Updated dependencies.
2.1.5 #
- Updated dependencies.
2.1.4 #
- Updated dependencies.
2.1.3 #
- Thank you, @Hayotbek_Ferghana, for fixing the ui bug!
2.1.2 #
- UI bug fixes. Updated dependencies.
2.1.1 #
- Updated dependencies.
2.1.0 #
- Updated dependencies. Updates minimum supported SDK version to Flutter 3.19 /Dart 3.3.0
2.0.9 #
- Updated dependencies
2.0.8 #
- Updated dependencies
2.0.7 #
- Updated dependencies
2.0.6+1 #
- Updated dependencies
2.0.5 #
- flutter_local_notifications package updated
2.0.4 #
- json viewer ui changes
2.0.3 #
- json viewer ui changes
2.0.2 #
- Updates minimum supported SDK version to Flutter 3.13/Dart 3.1.0
2.0.0+2 #
- http bug fixed
2.0.0+1 #
- Updated dependencies
2.0.0 #
- flutter 2.10.0 support, dart 3 support
1.1.4 #
- Updated dependencies
1.1.3 #
- migration Flutter sdk 3.7.0
1.1.2 #
- bug fixed
1.1.1 #
- bug fixed
1.1.0 #
- chopper package removed from dependencies
1.0.9 #
- collection package removed from dependencies
1.0.8 #
- Updated dependencies
1.0.7 #
- open_file package remove
1.0.6 #
- Updated dependencies
1.0.5 #
- Updated dependencies, Bug fixes
1.0.4 #
- Updated dependencies
1.0.3 #
- Updated dependencies
1.0.2 #
- Updated dependencies
1.0.1 #
- Updated dependencies
1.0.0 #
- Updated dependencies
0.0.8 #
- Updated dependencies
0.0.7 #
- Bug fixed
0.0.6 #
- Updated dependencies
0.0.5 #
- Updated dependencies
0.0.4 #
- Updated dependencies
0.0.3 #
- Details page bug fixed
0.0.2 #
- Updated dependencies
0.0.1 #
- Initial release