SimformSolutionsPvtLtd/showcaseview
53.3
Weak · 19 September 2026
6.8k
lines of production code
Dart
with C++
1
measurement over time
What this system is
This system is a Flutter package designed to create guided UI tours and highlight specific interface elements. It provides a scoped API for registering showcases, managing their lifecycle, and rendering customizable tooltips with action buttons. The library handles overlay positioning, animations, and cross-platform rendering to ensure consistent visual feedback across mobile and desktop targets.
How it got here
2019 — Initial scaffolding and v5 migration
9 changes.
This period established the foundational structure of the ShowCaseView package, including documentation, licensing, and linting configurations. It involved migrating the example application to Flutter embedding v2, Dart 3, and modern build systems while restructuring the library's internal exports.
2021–2025 — Showcase library development and platform expansion
8 changes.
This period focused on building the core Showcase library for guided UI tours, including significant refactoring of the tooltip rendering engine and overlay infrastructure to improve performance and flexibility. Concurrently, the project expanded its capabilities by introducing new widget components for actions and animations, while also adding full platform support for macOS and web in the example application.
Features
Add macOS platform support to the example app
The example application now includes a complete macOS target, enabling users to build and run the app on macOS. This change adds the necessary Xcode project structure, including the Runner target, Swift source files (AppDelegate, MainFlutterWindow), and configuration files (Info.plist, entitlements, xcconfigs) required to integrate Flutter on the macOS platform.
example/linux, example/macos, example/windows · high confidence
Added web platform support to the example app
The example application now supports the web platform. This change introduces the necessary \index.html\ entry point and \manifest.json\ configuration, enabling the Flutter example to be built and served as a web application.
example/web · high confidence
Initial project scaffolding and documentation
This change establishes the foundational structure for the ShowCaseView Flutter package. It adds essential contributor guidelines (CONTRIBUTING.md) and a Code of Conduct (CODE\_OF\_CONDUCT.md) to define community standards. The project's license is formally set to MIT, replacing the previous placeholder. Documentation is significantly expanded with a detailed README.md that includes installation instructions, feature overviews, and performance benchmarks for version 5.x.x. Additionally, development tooling is configured with analysis\_options.yaml for linting, and the .gitignore file is updated to exclude IDE-specific files and lockfiles. The legacy IDE module file (showcaseview.iml) is removed as part of this cleanup.
(repo-wide) · high confidence
Initial release of the Showcase library for guided UI tours
This change introduces the core components of the Showcase library, enabling developers to create guided tours and highlight specific UI elements. The \Showcase\ widget wraps target widgets to display informative tooltips, while \ShowcaseView\ manages the sequence, state, and lifecycle of multiple showcases within a defined scope. The implementation includes \ShowcaseController\ for individual showcase logic, \ShowcaseService\ for scoped registration and lookup, and \TargetWidget\ for rendering the highlight overlay. Key features visible in the diff include support for custom tooltip widgets via \Showcase.withWidget\, configuration for animations, overlays, and auto-scrolling, and the ability to handle multiple concurrent showcases through scoping.
lib/src/showcase · high confidence
New model classes for tooltip action buttons and showcase scoping
This change introduces several new model classes in the \lib/src/models\ directory to support enhanced tooltip interactions and isolated showcase scopes. \TooltipActionButton\ and \TooltipActionConfig\ define the structure and styling for interactive buttons within tooltips, allowing users to add custom or predefined actions (like next/previous/skip) with configurable layouts, icons, and padding. \ActionButtonIcon\ supports both standard icons and image icons for these buttons. Additionally, \ShowcaseScope\ enables multiple independent showcase systems to coexist by managing controllers within named scopes, while \LinkedShowcaseDataModel\ handles data for linked showcase overlays, and \FlutterInheritedData\ captures necessary inherited widget context (like themes and text styles) for consistent rendering.
lib/src/models · high confidence
New widget components for tooltips, actions, and animations
This change introduces several new widget classes in the library to support enhanced tooltip and showcase features. It adds \ActionWidget\ and \TooltipActionButtonWidget\ to render and handle action buttons within tooltips, including support for custom icons and accessibility semantics. A new \FloatingActionWidget\ allows persistent UI elements to remain visible during a showcase tour. Additionally, \ToolTipSlideTransition\ provides a size-independent slide animation for tooltips, \DefaultTooltipTextWidget\ handles standardized text rendering, and \ShowcaseCircularProgressIndicator\ offers platform-specific loading indicators.
lib/src/widget · high confidence
Behavioural changes
Example app demonstrates scoped showcase views and global configuration
The example application has been updated to showcase the library's \ShowcaseView\ registration API, allowing for scoped tours and global settings. The new \detailscreen.dart\ demonstrates how to register a specific scope (\\_detailsScreen\) and manage lifecycle callbacks (\onFinish\, \onDismiss\) for a single-target showcase. The main \main.dart\ now uses a global \ShowcaseView.register\ call to configure shared behaviors such as auto-play delays, blur values, and custom floating action widgets, while also defining global tooltip actions (Previous/Next) that can be selectively hidden for specific widgets.
example/lib · high confidence
Example app updated for multi-platform support and linting
The example application now includes configuration and metadata to support building on Linux, Windows, and Web platforms, alongside a migration to the Flutter stable channel. A new analysis\_options.yaml file has been added to enforce standard Flutter linting rules, and the .gitignore has been updated to exclude generated files for these new platforms as well as the pubspec.lock file.
example · high confidence
Library restructured with new exports and BSD-2 license
The lib directory has been reorganized to export specific modules from the src folder, including action buttons, tooltip configurations, showcase views, and floating action widgets, replacing the previous single-file structure. Additionally, the license header has been updated to BSD-2, and the Calculator class has been removed.
lib · high confidence
Migrate example app to Flutter embedding v2 and update Android build configuration
The Android example app has been migrated to the Flutter v2 embedding, which changes the main activity to use io.flutter.embedding.android.FlutterActivity and removes the manual plugin registration in MainActivity.kt. The AndroidManifest.xml has been updated to declare the flutterEmbedding version as 2, set the activity as exported, and configure splash screen and normal theme metadata. Additionally, the Gradle wrapper has been upgraded from version 4.10.2 to 8.12, and the package attribute was removed from the manifest tags to align with newer Android/Gradle standards.
example/android · high confidence
Refactored overlay and positioning infrastructure for showcase tooltips
The internal implementation of the showcase overlay system has been restructured to improve reliability and maintainability. A new \OverlayManager\ singleton now centralizes the creation, visibility, and rebuilding of the overlay entry, replacing scattered logic. A dedicated \ShapeClipper\ handles the cutout paths for target widgets, with a specific fallback rendering path for web platforms to ensure correct visual output. Additionally, a \TargetPositionService\ manages the calculation of target widget coordinates and dimensions, introducing caching to optimize performance. Supporting changes include new utility constants for default dimensions and animations, and new enums (\TooltipPosition\, \TooltipActionPosition\) that define tooltip placement and action button layout options.
lib/src/utils · high confidence
ShowCaseWidget deprecated in favor of ShowcaseView
The \ShowCaseWidget\ class is now deprecated and will be removed in version 6.0.0. Users should migrate to the new \ShowcaseView\ API, using \ShowcaseView.register()\ to register showcases and \ShowcaseView.get()\ to access the current active showcase key, replacing the previously deprecated \ShowCaseWidget.activeTargetWidget\ and \builder\ patterns.
lib/src · high confidence
Tooltip rendering engine refactored with configurable gap and repaint optimization
The tooltip rendering system has been restructured into a new set of internal components (including \RenderPositionDelegate\, \RenderAnimationDelegate\, and \RenderObjectManager\) to improve layout precision and performance. A key user-facing change is the addition of the \targetTooltipGap\ parameter, which allows you to control the specific spacing between the target widget and the tooltip. The new rendering pipeline also implements a throttled repaint mechanism to reduce unnecessary paint operations, resulting in smoother animations and lower CPU usage during showcases.
lib/src/tooltip · high confidence
iOS example app updated to Flutter embedding v2 and iOS 11 minimum
The iOS example project has been migrated to the Flutter embedding v2 architecture, which removes the manual embedding of App.framework and Flutter.framework from the Xcode project settings and switches the build script to embed\_and\_thin. The minimum supported iOS version has been raised from 8.0 to 11.0, and the Xcode project version has been upgraded to 13.0. Additionally, the Info.plist now includes CADisableMinimumFrameDurationOnPhone to support higher refresh rate displays on modern iPhones.
example/ios · high confidence
Test coverage
Removal of obsolete calculator unit tests; Removed example app widget test.
Dependencies
Example app and package updated for Dart 3 and modern Android build systems
The example application and the showcaseview package have been upgraded to require Dart SDK 3.0.0 or higher, dropping support for earlier Dart versions. The example app's Android configuration has been modernized to use the Gradle plugin management DSL, targeting Android SDK 34 with Java/Kotlin 17, and now references the local package via a path dependency. Additionally, the package version has been bumped to 5.1.0, and the example app now includes asset support and uses flutter\_lints for code analysis.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 53.
Lenses
- Code Health 96
- Architecture 100
- Maturity 55
- Readiness 40
- Security 52
- Domain Modelling 100
Changes since last survey
- 300 commits — 193 feature/other, 107 fixes
By area
- (root) — 141 commits
- lib/src — 80 commits
- (repo) — 21 commits
- example/lib — 20 commits
- .github/workflows — 11 commits
- example/android — 4 commits
- example/ios — 4 commits
- lib/showcase.dart — 4 commits
- preview/showcaseview.gif — 3 commits
- example/linux — 2 commits
- .github/ISSUE_TEMPLATE — 1 commit
- doc/documentation.md — 1 commit
- example/README.md — 1 commit
- example/macos — 1 commit
- example/test — 1 commit
- example/web — 1 commit
- example/windows — 1 commit
- lib/measure_size.dart — 1 commit
- lib/target_widget.dart — 1 commit
- lib/tooltip_widget.dart — 1 commit
Notable commits
- fix: - Assertion for all properties in constructor, - typo fix
- fix: :bug: #105 showcase not showing text in one line even if it is not so big.
- fix: :bug: #138 Show Unhandled Exception: Null check operator used on a null value error
- fix: :bug: #139 Weird position of tooltip in BottomSheet dialog
- fix: :bug: #56 Landscape mode issue :bug: #86 Showcase isn't rendering responsively
- fix: :bug: #78 Exception:BoxConstraints has NaN values
- fix: :bug: #92 Showcase in ReorderableListView show at incorrect position
- fix: :bug: Fixes #206 Wrong calculation of left and right position of tooltip
- fix: :bug: Fixes #206 Wrong calculation of left and right position of tooltip
- fix: :bug: Fixes duplicate key found in example
- fix: :bug: Tooltip right position issue (#297)
- fix: :bug: fix #158 Arrow animation is not synchronized with tooltip
- fix: :bug: fix issue #121 - SlideTransition widget in tooltip_widget.dart is constantly rebuildung even after the showcasing is supposed to have stopped. (#177)
- fix: :bug: fix issue #182 fetch blur value from context only when _showShowCase is true. (#191)
- fix: :bug: fixes #173 showArrow parameter not working
- fix: :fix: example changes to support flutter version lower than 3.x
- fix: :fix: update CHANGELOG.md (#225)
- fix: :fix: update github workflow to use dart pub insted of pub. (#223)
- fix: :green_heart: fix build work flow
- fix: :green_heart: fix flutter workflow
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
SimformSolutionsPvtLtd/showcaseview was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 0d13c41e2b437287e8d5feac287f30e4398d5807 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.