3. Dependencies & Third-Party Libraries
Dependency Health Overview
Up-to-date Dependencies35 / 100
Vulnerability Scanning0 / 100
License Compliance25 / 100
3.1 Dependency Versions & Updates
Status: ⚠️Warning
Findings:
- Multiple dependencies use Git branches (
ref: stable) instead of version tags, which is better than fixed commits but still less ideal than semantic versioning - Git dependencies use
stablebranch references:markedeer_entity_apiusesref: stablemarkedeer_oauthusesref: stableflutter_markedeer_mobile_contentusesref: stablemarkedeer_dynamic_form_builderusesref: stable
- Using branch references is better than fixed commits but still prevents precise version control
- Project pins Flutter to version 3.24.5 via
.fvmrc(FVM - Flutter Version Management) intl: anydependency constraint is too permissive and can lead to unexpected breaking changes
Evidence:
pubspec.yamllines 69-88: Git dependencies withref: stableinstead of version tagscodemagic.yamlline 16, 149: Uses FVM for Flutter version management.fvmrc: Defines Flutter 3.24.5 for the project- Flutter SDK constraint:
>=3.0.0 <4.0.0(compatible with 3.24.5) pubspec.yamlline 23:intl: any- too permissive version constraint- Dependency overrides section (lines 101-112) indicates version conflicts
Risk Level: Medium Risk
Recommendation:
- Replace Git branch dependencies with versioned releases where possible
- For custom forks, create proper version tags and use semantic versioning
- Establish upgrade path for dependencies currently using
stablebranches - Plan Flutter upgrade strategy to latest stable version
- Set up dependency update automation and monitoring
- Change
intl: anyto a specific version constraint (e.g.,^0.18.1) - Document rationale for any dependencies that must remain on Git branches
3.2 Known Vulnerabilities
Status: ⚠️Warning
Findings:
- No automated vulnerability scanning: No evidence of vulnerability scanning tools or processes in place
- Git branch dependencies may miss security updates: Dependencies using
stablebranches may not receive immediate security patches if not actively monitored - Old packages with potential vulnerabilities:
collection: ^1.15.0-nullsafety.4- Very old nullsafety version, may have unpatched vulnerabilitiesflutter_html: ^3.0.0-beta.2- Beta version, may contain security issues
- Deprecated packages: Multiple deprecated packages (
package_info,share) may have known vulnerabilities that won't be patched - No dependency vulnerability monitoring: No evidence of tools like
dart pub outdated --securityor Snyk/Dependabot integration - Custom Git dependencies: Four custom Git dependencies from
Pubmarket-orgmay not receive upstream security updates if not actively maintained - Flutter version: Pinned to 3.24.5, may miss security patches in newer Flutter versions
- Dependency overrides: Multiple dependency overrides may mask security vulnerabilities in transitive dependencies
Evidence:
- No vulnerability scanning tools configured (no Snyk, Dependabot, or similar)
pubspec.yaml: Git branch dependencies (lines 69-88) may not track security fixes immediatelypubspec.yaml: Old packages likecollection: ^1.15.0-nullsafety.4(line 99)pubspec.yaml: Beta versionflutter_html: ^3.0.0-beta.2(line 25)pubspec.yaml: Deprecated packagespackage_info: ^2.0.2(line 38),share: ^2.0.4(line 55)- No
.github/dependabot.ymlor similar security scanning configuration - No evidence of regular security audits or vulnerability assessments
- Dependency overrides section (lines 101-112) may hide transitive dependency vulnerabilities
pubspec.yamlline 98: TODO comment indicates known issue withcollectionoverride
Risk Level: Medium Risk
Recommendation:
- Immediate actions:
- Set up automated vulnerability scanning (Dependabot, Snyk, or
dart pub outdated --security) - Run
flutter pub outdatedanddart pub outdated --securityto identify known vulnerabilities - Review and update old packages (
collection) to latest versions - Document security update process for Git branch dependencies
- Monitor custom Git dependencies for security updates
- Short-term:
- Migrate deprecated packages to maintained alternatives (addresses security update gap)
- Replace Git branch dependencies with versioned releases where possible
- Set up automated dependency update checks in CI/CD pipeline
- Create security update schedule and process
- Review and minimize dependency overrides
3.3 License Compliance
Status: ⚠️Warning
Findings:
- No license documentation: No LICENSE file in project root or license compliance documentation
- No license audit: No evidence of license compliance review or tracking of third-party licenses
- Mixed license types: Dependencies likely use various licenses (MIT, Apache, BSD, GPL, etc.) without documented review
- Custom Git dependency licenses: Four custom Git dependencies from
Pubmarket-org- license terms may differ from upstream or may not be documented - No license attribution: No evidence of license attribution or compliance documentation
- Potential license conflicts: No review process to identify incompatible licenses (e.g., GPL with proprietary code)
- No license compliance process: No documented process for reviewing and approving new dependencies
Evidence:
- No
LICENSEfile in project root - No license documentation in
README.mdor project documentation - No license compliance tracking or audit files
pubspec.yaml: Custom Git dependencies (lines 69-88) may have different license terms- No evidence of license review process in codebase
- Multiple dependencies from pub.dev with various licenses (not documented)
- No license attribution file or NOTICES file
Risk Level: Medium Risk
Recommendation:
- Immediate actions:
- Document all third-party licenses and their requirements
- Review licenses of custom Git fork dependencies
- Short-term:
- Add in-app screen to display third-party licenses
- Create license compliance checklist for new dependencies
- Set up automated license checking in CI/CD pipeline
3.4 Outdated Packages
Status: ❌Fail
Findings:
- Critical: 39 dependencies are constrained to versions older than resolvable versions
- 10 upgradable dependencies are locked to older versions in
pubspec.lock - Multiple deprecated packages identified requiring migration
- Discontinued packages in dependency tree:
js,build_resolvers,build_runner_core,macros - Major version updates available for many critical packages:
- Firebase packages:
firebase_core(2.32.0 → 4.2.1),firebase_crashlytics(3.5.7 → 5.0.5),firebase_messaging(14.7.10 → 16.0.4),firebase_analytics(10.10.7 → 12.0.4),firebase_remote_config(4.4.7 → 6.1.2) camera(0.10.6 → 0.11.3),drift(2.22.1 → 2.29.0),geolocator(10.0.1 → 14.0.2)geocoding(2.2.2 → 4.0.0),google_fonts(4.0.5 → 6.3.2),lottie(2.7.0 → 3.3.2)
- Firebase packages:
- Deprecated packages requiring migration:
package_info: ^2.0.2→ should migrate topackage_info_plus(latest: 9.0.0 available)share: ^2.0.4→ should migrate toshare_plus
- Critical null safety issue:
flutter_markedeer_mobile_contentinternal package's main branch is not null safety compliant, blocking upgrades - Potentially outdated/problematic packages:
collection: ^1.18.0→ current version, but latest is 1.19.1 (minor update available)flutter_html: ^3.0.0-beta.2→ using beta version, stable 3.0.0 is availableintl: ^0.18.1(overridden) → latest is 0.20.2, but constrained by overrideanother_flushbar: ^1.12.30→ check if maintained, consider alternatives
- Dependency overrides indicate version conflicts:
- Multiple dependency overrides (lines 101-112) suggest compatibility issues
analyzer: ">=2.1.0"overridden (current 6.7.0, latest 9.0.0 available)intl: ^0.18.1overridden (conflicts withintl: anyin dependencies)- Multiple Android platform-specific packages overridden
- TODO comment indicates known issue with
collectionoverride due toflutter_htmlcompatibility
Evidence:
flutter pub outdatedoutput shows 39 dependencies constrained to older versionspubspec.yamlline 38:package_info: ^2.0.2(deprecated,package_info_plus9.0.0 available)pubspec.yamlline 55:share: ^2.0.4(deprecated)pubspec.yamlline 99:collection: ^1.18.0(minor update to 1.19.1 available)pubspec.yamlline 25:flutter_html: ^3.0.0-beta.2(stable 3.0.0 available)pubspec.yamlline 23:intl: any(too permissive, overridden to 0.18.1, latest 0.20.2)pubspec.yamllines 69-88: Git dependencies usingref: stablepubspec.yamllines 101-112: Dependency overrides sectionpubspec.yamllines 94-98: TODO comment about removingcollectionoverride onceflutter_htmlissue is fixedpubspec.yamlline 18:drift: ^2.22.1(upgradeable to 2.29.0)- Internal package
flutter_markedeer_mobile_contentmain branch not null safety compliant
Risk Level: High Risk
Recommendation:
- Immediate actions:
- Migrate
package_info→package_info_plus(latest 9.0.0 available) - Migrate
share→share_plus - Update
flutter_markedeer_mobile_contentinternal package to null safety compliant version or migrate to null safety - Plan major version upgrades for Firebase packages (breaking changes expected)
- Address discontinued packages (
js,build_resolvers,build_runner_core,macros) - Short-term:
- Upgrade
collectionto 1.19.1 (minor update) - Move from
flutter_htmlbeta to stable 3.0.0 release (will allow removal ofcollectionoverride) - Plan upgrade path for major version updates (Firebase, camera, drift, geolocator, etc.)
- Review and minimize dependency overrides
- Update
intloverride to latest compatible version (0.20.2) - Evaluate and update
another_flushbaror replace if unmaintained - Continue using
driftbut plan upgrade to 2.29.0 - Long-term:
- Establish regular dependency update schedule
- Set up automated dependency update checks in CI/CD
- Create upgrade plan for major version updates with testing strategy