shyun_link 3.0.1 copy "shyun_link: ^3.0.1" to clipboard
shyun_link: ^3.0.1 copied to clipboard

Streamlined deeplink and short URL management with Clean Architecture. Focused on core functionality - ShyunLinkManager.createShortLink() and deeplink handling with multiple URL format support.

Changelog #

All notable changes to the shyun_link package will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

3.0.1 - 2025-08-21 #

๐Ÿ”ง Bug Fixes #

Deep Link Case Preservation:

  • Fixed critical issue where deep link host/pageName was being converted to lowercase
  • nearound://passPromotionRegister now correctly preserves case as passPromotionRegister
  • Before: Uri.parse() would convert host to passpromotionregister
  • After: Manual regex extraction preserves original case passPromotionRegister

Technical Details:

  • Modified _buildContextFromUri() method to accept originalUrl parameter
  • Added case-preserving regex extraction: RegExp(r'^[^:]+://([^/?#]+)')
  • Updated all calls to _buildContextFromUri() to pass original URL string
  • DeepLinkContext.pageName, pageType, and route now preserve original casing

Impact: Resolves routing issues for apps that depend on case-sensitive page names.

3.1.0 - 2025-08-12 #

๐Ÿงน CLEANUP RELEASE - Streamlined Package #

Major Cleanup: Removed unnecessary features and focused on core functionality - ShyunLinkManager.createShortLink() and deeplink handling.

โŒ Removed Features #

Sharing Functionality:

  • Removed shareContent(), shareStore(), shareCuration(), shareEvent(), shareApp() methods
  • Removed share_plus dependency
  • Sharing can be implemented externally using the created short links

Batch Processing:

  • Removed createBatchLinks() from ShyunLinkManager
  • Removed createShortLinks(), createShortLinksFromGenericRequests(), processDeepLinks() from ShyunLinkService
  • Individual link creation is sufficient for most use cases

Legacy Methods:

  • Removed createShortLinkLegacy() from ShyunLinkManager
  • Removed createShortLinkFromGenericRequest(), createShortLinkFromUrl() from ShyunLinkService
  • Use new template pattern API instead

System Analysis:

  • Removed getSystemStatus(), getRouteStats() methods
  • Debugging features removed for production focus

Unused Integrations:

  • Removed AppLinksIntegration helper class
  • No longer exported or maintained

โœ… Maintained Core Features #

Essential Functionality:

  • ShyunLinkManager.initialize() - System setup
  • ShyunLinkManager.createShortLink() - Core short link creation with new template pattern
  • ShyunLinkManager.processDeepLink() - Deeplink handling
  • ShyunLinkManager.getLinkInfo() - Link information retrieval

DeepLink Processing:

  • All 4 deeplink formats maintained: parameterized, direct path, web URL, fallback
  • Complete Strategy Pattern system for robust deeplink handling
  • DeepLinkProcessingStrategy system fully preserved

๐Ÿ“ฆ Package Improvements #

Reduced Dependencies:

  • Removed share_plus dependency
  • Smaller package footprint
  • Faster installation

Cleaner API:

  • Focused on core use cases
  • Simplified documentation
  • Better maintainability

๐Ÿ”ง Migration Guide #

If you were using sharing methods:

// Before
await ShyunLinkManager.shareStore(123, customText: 'Check this out!');

// After - Create link then share manually
final shortUrl = await ShyunLinkManager.createShortLink(
  pageName: 'store',
  pageType: 'store', 
  pageId: 123,
);
// Use share_plus or other sharing package
await Share.share('Check this out!\n\n$shortUrl');

If you were using batch processing:

// Before
final urls = await ShyunLinkManager.createBatchLinks(requests);

// After - Create individual links
final urls = <String>[];
for (final request in requests) {
  final url = await ShyunLinkManager.createShortLink(
    pageName: request.pageName,
    pageType: request.pageType,
    pageId: request.pageId,
  );
  urls.add(url);
}

All other APIs remain unchanged.


3.0.0 - 2025-08-13 #

๐Ÿ’ฅ BREAKING CHANGES - Template-Based URL API #

MAJOR RELEASE: Complete API redesign with new template-based URL pattern aligned with server specifications.

๐Ÿš€ New Template Pattern API #

Server-Aligned URL Generation:

  • New Pattern: ${webUrl}/${pageName}?type=${pageType}&id=${pageId}
  • Deep Link Pattern: ${appScheme}://${pageName}?type=${pageType}&id=${pageId}
  • Flexible Parameters: pageName required, pageType and pageId optional

New API Structure:

// New CreateShortLinkRequest with template support
final request = CreateShortLinkRequest(
  pageName: 'store',       // ๐Ÿ†• Required: URL path segment
  pageType: 'store',       // ๐Ÿ†• Optional: Query parameter
  pageId: 123,            // ๐Ÿ†• Optional: Query parameter
  webUrl: 'https://app.com',  // ๐Ÿ†• Required: Base web URL
  appScheme: 'myapp',      // ๐Ÿ†• Required: App scheme
);

// Simplified ShyunLinkManager API
await ShyunLinkManager.createShortLink(
  pageName: 'store',
  pageType: 'store', 
  pageId: 123,
);

๐Ÿ—‘๏ธ Removed Components #

DeepLinkFacade Completely Removed:

  • โŒ DeepLinkFacade class and all related code
  • โŒ Facade pattern implementation
  • โŒ Complex wrapper layer between service and repositories
  • โœ… Direct access to ShyunLinkService for cleaner architecture

Legacy Factory Methods Deprecated:

// โŒ Deprecated (still works but shows warnings)
ShortLinkFactory.createStoreRequest(storeId)
ShortLinkFactory.createCurationRequest(type, id)
ShortLinkFactory.createGenericRequest(url, linkType)

// โœ… New unified API
ShortLinkFactory.createLink(
  pageName: 'store',
  pageType: 'store',
  pageId: 123,
  webUrl: 'https://app.com',
  appScheme: 'myapp',
)

โšก Enhanced URL Parsing #

New DeepLinkEntity Features:

  • pageName getter: Extracts page name from URL path
  • pageType getter: Extracts type from query parameters
  • pageId getter: Extracts ID from query parameters
  • followsNewPattern getter: Detects new template pattern URLs
  • New DeepLinkType.webTemplate and DeepLinkType.appTemplate enum values

๐Ÿ”„ Migration Guide #

1. Update ShyunLinkManager Usage:

// โŒ Old way (v2.x)
await ShyunLinkManager.createShortLink(
  type: 'store',
  id: 123,
  metadata: {...},
);

// โœ… New way (v3.0+)
await ShyunLinkManager.createShortLink(
  pageName: 'store',
  pageType: 'store',
  pageId: 123,
);

2. Replace Facade with Service:

// โŒ Old way (will not compile)
final facade = ShyunLink.facade;
await facade.createLink(request);

// โœ… New way
final service = ShyunLink.service;
await service.createShortLink(
  pageName: 'store',
  pageType: 'store', 
  pageId: 123,
  webUrl: 'https://app.com',
  appScheme: 'myapp',
);

3. Update Factory Method Calls:

// โŒ Deprecated (shows warnings)
factory.createStoreRequest(123);

// โœ… New unified approach
factory.createLink(
  pageName: 'store',
  pageType: 'store',
  pageId: 123,
  webUrl: webUrl,
  appScheme: appScheme,
);

๐Ÿ—๏ธ Architecture Improvements #

Simplified Dependency Structure:

  • Direct service access without facade layer
  • Cleaner dependency injection container
  • Reduced complexity and better performance
  • More intuitive API surface

Enhanced URL Pattern Support:

  • Server-aligned URL generation
  • Consistent pattern across web and mobile
  • Better parameter extraction and validation
  • Future-proof extensible design

๐Ÿ“ฆ Backward Compatibility #

Supported with Warnings:

  • Legacy ShyunLinkManager methods (marked @Deprecated)
  • Old factory methods work but show deprecation warnings
  • Existing initialization code continues to work

Not Supported:

  • Direct DeepLinkFacade usage (removed completely)
  • Facade-dependent code will fail to compile

๐Ÿ”ง Example App Updates #

Updated to v3.0 API:

  • New template pattern examples
  • Updated method calls and parameter structure
  • Demonstrates new URL generation patterns

2.3.0 - 2025-01-12 #

๐ŸŽ‰ Major Feature: Native Plugin Integration #

BREAKING IMPROVEMENT: ShyunLink is now a complete Flutter Plugin with native Android/iOS support!

โœจ New Features #

  • ๐Ÿ”ฅ Native Plugin Support: Automatic native code integration on Android and iOS

    • No more manual MainActivity setup required
    • Automatic deep link handling through native code
    • Complete plugin architecture with proper platform channels
  • ๐Ÿš€ Hybrid Architecture: Best of both worlds

    • Native plugin for automatic deep link detection
    • Pure Dart fallback for maximum compatibility
    • Automatic plugin detection and graceful degradation
  • ๐Ÿ“ฑ Enhanced Native Integration:

    • Android: ShyunLinkPlugin.kt with full deep link processing
    • iOS: SwiftShyunLinkPlugin.swift with Universal Links support
    • Automatic Method Channel setup and communication

๐Ÿ”ง Technical Improvements #

  • Plugin Architecture: Complete Flutter plugin setup in pubspec.yaml
  • Native Platform Interface: ShyunLinkPlatform for Dart โ†” Native communication
  • Automatic Detection: Smart detection of available deep link handling methods
  • Enhanced Error Handling: Better error recovery and user guidance

๐Ÿ“š Developer Experience #

  • Zero Configuration: flutter pub add shyun_link now includes everything
  • Backward Compatible: All existing code continues to work unchanged
  • Smart Guidance: Automatic detection and helpful setup guidance
  • Multiple Options: Native plugin, app_links integration, or pure Dart usage

๐Ÿ› ๏ธ Migration Guide #

No migration required! Your existing code works exactly the same:

await ShyunLinkManager.initialize(
  appScheme: 'myapp',
  webBaseUrl: 'https://myapp.com',
  onDeepLink: (context) {
    // Now with automatic native deep link detection!
  },
);

๐Ÿ—๏ธ Under the Hood #

  • Android: Full Kotlin plugin with Method Channel integration
  • iOS: Swift plugin with App Delegate method handling
  • Platform Channels: Seamless communication between Dart and native code
  • Automatic Initialization: Plugin auto-initializes and integrates with ShyunLinkManager

2.2.3 - 2025-08-12 #

  • Enhanced Guidance: Improved app_links package detection and user guidance
  • Manual Integration: Added comprehensive examples for manual app_links setup
  • Better Error Messages: More helpful error messages when app_links is not automatically detected
  • Documentation Updates: Added detailed integration guide for app_links package

๐Ÿ“š New Examples #

  • AppLinks Integration: Added example/lib/app_links_example.dart with complete integration examples
  • Manual Setup Guide: Step-by-step instructions for manual app_links configuration
  • Troubleshooting: Enhanced troubleshooting section in documentation

๐Ÿ› Bug Fixes #

  • Detection Issue: Resolved app_links package detection issues that caused false warnings
  • User Experience: Improved user experience when app_links package is present but not auto-detected

2.2.2 - 2025-08-12 #

๐Ÿ”’ Privacy & Security #

  • Domain Sanitization: Removed all personal domain information from package files
  • Generic Examples: Replaced nearound, cocl.nearound.co, and near.ly with generic myapp, myapp.com, and myapp.ly examples
  • Package Privacy: Ensured no personal information is exposed in the published package

๐Ÿ“ Documentation Updates #

  • Updated all example code and documentation to use generic domain names
  • Replaced 64 occurrences of personal domain information across all files
  • Maintained full functionality while protecting privacy

2.2.1 - 2025-08-12 #

๐Ÿ”ง Package Structure Improvements #

  • ๐Ÿ“ Documentation: Renamed docs/ to doc/ following pub.dev conventions
  • ๐Ÿ”— Links Updated: All documentation links updated to use doc/ paths
  • ๐Ÿ“ฆ Package Compliance: Fixed pub.dev validation warnings for better package listing

๐Ÿ“š Documentation Path Updates #

  • All README.md links now point to doc/ directory
  • Maintains full compatibility with all documentation guides
  • Improved pub.dev package browsing experience

2.2.0 - 2025-08-12 #

๐Ÿš€ Complete Native Platform Integration #

  • ๐Ÿ“ฑ Android Native Setup: Complete AndroidManifest.xml configuration with intent filters
  • ๐ŸŽ iOS Native Setup: Full iOS configuration with Info.plist, URL schemes, and Universal Links
  • ๐Ÿ”ง Native Plugins: Swift/Kotlin plugins for advanced deep link handling
  • ๐Ÿ“‹ Example Configurations: Ready-to-use native setup files in /android and /ios directories

๐Ÿ› ๏ธ Enhanced Developer Experience #

  • ๐Ÿ“š Platform Setup Guide: Comprehensive step-by-step native configuration guide
  • โšก Complete Example App: Updated example with full native integration and testing
  • ๐Ÿงช Native Testing: Built-in deep link testing with Method Channel integration
  • ๐Ÿ“– Updated Documentation: All guides updated with native setup instructions

๐ŸŽฏ Production-Ready Features #

  • ๐Ÿ”— Universal Link Support: iOS Universal Links with associated domains
  • ๐Ÿ“ฑ App Links Support: Android App Links with domain verification
  • ๐ŸŽจ Custom URL Schemes: Both platforms support custom scheme deep links
  • ๐Ÿ”„ Fallback Mechanisms: Graceful degradation when native features unavailable

๐Ÿ“ฆ Native File Structure #

android/
โ”œโ”€โ”€ src/main/AndroidManifest.xml     # Intent filter configuration
โ”œโ”€โ”€ src/main/kotlin/MainActivity.kt  # Deep link handling example
โ””โ”€โ”€ src/main/kotlin/DeepLinkPlugin.kt # Advanced plugin (optional)

ios/
โ”œโ”€โ”€ Classes/SwiftShyunLinkPlugin.swift # Swift deep link plugin
โ”œโ”€โ”€ Classes/ShyunLinkPlugin.m          # Objective-C bridge
โ”œโ”€โ”€ Classes/ShyunLinkPlugin.h          # Header file
โ”œโ”€โ”€ shyun_link.podspec                 # CocoaPods specification
โ””โ”€โ”€ Info.plist.example                # iOS configuration template

๐Ÿงช Testing & Validation #

  • ADB Commands: Android deep link testing with adb shell commands
  • iOS Simulator: xcrun simctl testing for iOS deep links
  • Native-Flutter Bridge: Method Channel integration for testing
  • Real Device Testing: QR codes, browser testing, and messenger integration

๐Ÿ“‹ Usage Before vs After #

Before (v2.1.0):

// Flutter only - native setup required separately
await ShyunLinkManager.initialize(...);

After (v2.2.0):

// Flutter setup (same as before)
await ShyunLinkManager.initialize(...);

// + Complete native files included in package
// + Step-by-step platform setup guide
// + Working example with native integration
// + Testing tools and validation methods

๐Ÿ“š Documentation Updates #

  • Platform Setup Guide: Complete Android/iOS configuration
  • Easy Usage Guide: Updated with native setup requirements
  • Example App: Complete native integration demonstration
  • INDEX.md: Updated documentation structure and navigation

2.1.0 - 2025-08-11 #

๐Ÿš€ Major Features #

  • ๐ŸŽฏ Ultra-Simple API: Introduced ShyunLinkManager - a convenience wrapper that reduces setup from 50+ lines to just 5 lines!
  • ๐Ÿ“ฑ One-Line Initialization: Complete deeplink system initialization with automatic listeners, error handling, and fallback mechanisms
  • ๐Ÿ”— Convenience Methods: Added dedicated methods for common operations:
    • ShyunLinkManager.shareStore(), shareCuration(), shareEvent(), shareApp()
    • ShyunLinkManager.createShortLink() with simplified parameters
    • ShyunLinkManager.createBatchLinks() for multiple link creation

โœจ Enhanced User Experience #

  • ๐Ÿค– Automatic Setup: Auto-configures AppLinks listeners, duplicate prevention, and error recovery
  • ๐Ÿ“ Smart Context Parsing: DeepLinkContext class provides structured deeplink information
  • ๐ŸŽ›๏ธ Flexible Configuration: Optional app_links dependency with graceful degradation
  • ๐Ÿ” Built-in Debugging: Comprehensive logging and system status reporting

๐Ÿ—๏ธ Architecture Improvements #

  • ๐Ÿ”„ Service Pattern Independence: ShyunLinkService now completely independent from deprecated DeepLinkFacade
  • ๐Ÿงฉ Direct Dependency Injection: Service receives dependencies directly instead of wrapping facade
  • โšก Improved Performance: Eliminated wrapper layer for better performance
  • ๐Ÿ“ฆ Zero External Dependencies: Works without GetX or other DI frameworks

๐Ÿ“š Documentation Overhaul #

  • ๐Ÿ“– Easy Usage Guide: New EASY_USAGE_GUIDE.md for 5-minute setup
  • ๐Ÿ“‹ Updated Short Link Guide: Completely rewritten SHORTLINK_GUIDE.md with new API
  • ๐Ÿ”„ Migration Guide: MIGRATION_GUIDE.md for smooth transition from facade to service pattern
  • ๐Ÿ’ก Best Practices: Comprehensive troubleshooting and optimization tips

๐Ÿ”ง Developer Experience #

  • 90% Code Reduction: From 50+ lines of complex setup to 5 lines of simple configuration
  • Type Safety: Strongly typed DeepLinkContext with pageType, pageId, and params
  • Error Recovery: Automatic fallback mechanisms with detailed error reporting
  • Multi-Project Ready: Designed for easy reuse across multiple projects

๐Ÿ“‹ Usage Before vs After #

Before (v2.0.x):

// Complex 50+ line setup with manual AppLinks configuration
static Future<void> _initializeDeepLinkSystem() async {
  final config = ShyunLinkConfig.defaults(...);
  ShyunLink.initialize(config: config);
  await _setupDeepLinkListener(); // Complex manual setup
  // ... lots of boilerplate code
}

After (v2.1.0):

// Simple 5-line setup - everything automated!
await ShyunLinkManager.initialize(
  appScheme: 'myapp',
  webBaseUrl: 'https://myapp.com',
  onDeepLink: (context) => Navigator.pushNamed(context.route),
);

// Easy link creation and sharing
await ShyunLinkManager.shareStore(12345);

โš ๏ธ Deprecation Notice #

  • DeepLinkFacade is now deprecated and will be removed in v3.0.0
  • Use ShyunLinkService directly or the new ShyunLinkManager for convenience
  • Existing code continues to work but will show deprecation warnings

2.0.1 - 2025-08-12 #

๐Ÿ”ง Fixed #

  • Critical Bug Fix: Fixed pageType and pageId parameters being sent as null in API requests
  • URL Parsing Enhancement: Added intelligent URL parsing to extract pageType, pageId, and deepLinkPath from query parameters and URL paths
  • DeepLinkFacade Improvement: Enhanced createLink() method to automatically detect and use appropriate factory methods based on URL content

โœจ Enhanced #

  • Automatic Parameter Extraction: The system now automatically extracts:
    • pageType from URL ?type= parameter
    • pageId from URL ?id= parameter
    • deepLinkPath from URL path (e.g., /curationDetail โ†’ curationDetail) or ?deepLinkPath= parameter
  • Smart Factory Method Selection:
    • Curation URLs automatically use createCurationRequest()
    • Store URLs automatically use createStoreRequest()
    • Other URLs use createPageRequest() with extracted parameters
  • Enhanced Factory Methods: Added optional deepLinkPath parameter to:
    • createCurationRequest()
    • createStoreRequest()

๐Ÿ“š Documentation #

  • New Comprehensive Guide: Added SHORTLINK_GUIDE.md with complete usage examples
  • Best Practices: Included troubleshooting tips and best practices for short link creation
  • Real-world Examples: Added practical examples including ProductLinkService implementation

โšก Performance #

  • Fallback Strategy: Added robust error handling with graceful fallback to generic requests when URL parsing fails
  • URL Validation: Enhanced URL format validation before processing

This update ensures that pageType and pageId are correctly included in all API requests, resolving the critical issue where these parameters were being sent as null.


2.0.0 - 2025-08-10 #

๐Ÿ’ฅ Breaking Changes #

  • API Alignment: Refactored core data models (ShortLinkEntity, CreateShortLinkRequest) to align with the backend API specification. This is a major breaking change affecting how short links are created and parsed.
  • Simplified Fields: Removed customAlias, expiresAt, and metadata from CreateShortLinkRequest to match the new API DTO.
  • Entity Structure: ShortLinkEntity now includes pageType, pageId, and deepLinkPath directly, and no longer contains a nested ShortLinkStats object in its constructor for API responses.

๐Ÿ”ง Fixed #

  • Compilation Errors: Fixed all compilation errors across the facade, factory, and repository layers caused by the data model refactoring.
  • In-Memory Repository: Updated MemoryShortLinkRepository to correctly handle the new entity structure and request objects.

โœจ Improved #

  • API-First Design: The data models are now a direct reflection of the backend API, ensuring more reliable network communication.
  • Code Consistency: Ensured that all layers of the application now use the same, consistent data structures for creating and handling short links.

1.0.2 - 2025-08-09 #

๐Ÿš€ Major Improvements #

  • HTTP Repository: Enabled HTTP repository by default (useHttpRepository: true)
  • Real HTTP Client: Replaced mock HTTP client with actual Dio implementation
  • Network Logging: Added comprehensive request/response logging for debugging
  • Error Handling: Enhanced DioException handling with detailed error messages

๐Ÿ”ง Fixed #

  • NoSuchMethodError: Fixed createShortLink() method not existing (use createLink() instead)
  • Mock HTTP Client: Replaced with real Dio-based HTTP client for actual network requests
  • Network Requests: HTTP requests now actually reach the configured API server
  • Debug Logging: Added detailed logging to track network requests and responses

๐Ÿ“š API Clarification #

  • Correct Method: Use createLink(GenericLinkRequest) instead of non-existent createShortLink()
  • Share Methods: share() and shareLink() return void (not null) - this is expected behavior
  • GenericLinkRequest.curation(): Confirmed working correctly with curationType and id parameters

โšก Performance #

  • Real Network Requests: HTTP calls now use Dio client with proper timeout and error handling
  • Request Interceptors: Added logging interceptors for debugging network issues
  • Connection Management: Proper connection pooling and timeout configuration

1.0.1 - 2025-08-09 #

๐Ÿ”ง Fixed #

  • Repository Selection: Fixed HTTP repository not being used when useHttpRepository: true
  • System Initializer: Added conditional repository initialization based on configuration
  • Fallback Mechanism: Added graceful fallback to memory repository when HTTP repository fails

โœจ Improved #

  • Testing Support: Added repositoryType getter for testing repository selection
  • Error Handling: Enhanced error handling with fallback strategies

1.0.0 - 2025-08-08 #

๐ŸŽ‰ Initial Release #

โœจ Added

  • Core Domain Entities

    • DeepLinkEntity - Comprehensive deep link representation
    • ShortLinkEntity - Short URL management with analytics
    • NavigationRouteEntity - Route configuration and metadata
    • Result<T> - Functional error handling pattern
  • DeepLink Management System

    • Universal Link Support for both app schemes and web URLs
    • Parametrized link processing with query parameter extraction
    • Fallback strategies for handling unknown or malformed links
    • Route validation to ensure links point to valid destinations
    • Preview mode for debugging and testing deeplinks
  • Short URL System

    • HTTP-based short link creation and management
    • Click analytics with geographic, device, and referrer tracking
    • Expiration management with time-based link expiration
    • Custom alias support for branded short links
    • Batch operations for efficient multiple link creation
  • Framework-Agnostic DI System

    • Support for GetX, get_it, Provider, and built-in DI
    • Automatic adapter detection and initialization
    • Custom adapter interface for extending to other DI frameworks
    • Comprehensive lifecycle management with disposable pattern
  • Configuration Management

    • Environment-based configuration (development, staging, production)
    • Runtime configuration modification without rebuilding
    • Security controls including domain whitelisting and rate limiting
    • Performance tuning with caching and request optimization
  • Enterprise Features

    • Comprehensive logging with debug, performance, and error tracking
    • Type safety with full Dart null safety support
    • Testing utilities with built-in mocks and test helpers
    • Performance optimization with caching and request coalescing

๐Ÿ—๏ธ Architecture Components

  • Domain Layer: Pure business logic with entities, repositories, and services
  • Application Layer: Use cases, factories, and facades orchestrating domain logic
  • Infrastructure Layer: External integrations, HTTP clients, and platform services
  • Configuration Layer: Framework-agnostic setup and dependency management

๐Ÿ”ง Integration Points

  • GetX Integration: Seamless integration with GetX state management and routing
  • get_it Integration: Support for get_it service locator pattern
  • Built-in DI: No external dependencies required for basic functionality
  • Custom DI: Extensible adapter pattern for any DI framework

๐Ÿ“ฑ Platform Support

  • โœ… Android - App Links and Custom Schemes
  • โœ… iOS - Universal Links and Custom Schemes
  • โœ… Web - URL Routing with History API
  • โœ… macOS - Custom URL Schemes
  • โœ… Windows - Protocol Registration
  • โœ… Linux - Desktop Integration

๐Ÿงช Testing Support

  • Unit test utilities with mock implementations
  • Integration test helpers for end-to-end scenarios
  • Test configuration presets for different environments
  • Comprehensive example app demonstrating all features

๐Ÿ“š Documentation

  • Complete README with quickstart guide
  • API documentation with detailed examples
  • Architecture overview with diagrams
  • Migration guides for existing implementations
  • Best practices and common patterns

๐Ÿ›ก๏ธ Security Features #

  • URL validation with configurable domain whitelisting
  • Rate limiting to prevent abuse
  • Input sanitization and validation
  • Secure error handling without information leakage

โšก Performance Features #

  • Request caching with configurable timeout
  • Request coalescing to prevent duplicate operations
  • Lazy loading of non-critical components
  • Memory-efficient data structures
  • Optimized batch operations

๐Ÿ” Debugging & Monitoring #

  • Detailed logging with configurable levels
  • Performance metrics and timing information
  • Error tracking with context preservation
  • System status reporting and diagnostics
  • Preview mode for deeplink testing

[Unreleased] #

๐Ÿ”ฎ Planned Features #

  • Analytics dashboard integration
  • A/B testing support for deeplinks
  • Advanced caching strategies
  • GraphQL integration for short links
  • Custom domain support
  • QR code generation
  • Link expiration notifications
  • Webhook integration for link events

Migration Guide #

From Custom Implementation #

If you're migrating from a custom deeplink implementation:

  1. Install the package:

    dependencies:
      flutter_deeplink_architect: ^1.0.0
    
  2. Initialize the system:

    final config = DeepLinkConfig.defaults(
      appScheme: 'your-app-scheme',
      baseUrl: 'https://your-domain.com',
    );
    await DeepLinkArchitect.initialize(config);
    
  3. Replace deeplink handling:

    // Old way
    void handleDeepLink(String url) {
      // Custom parsing and routing logic
    }
       
    // New way
    final facade = DIContainer.get<DeepLinkFacade>();
    final success = await facade.handleDeepLink(url);
    
  4. Update short link creation:

    // Old way
    final shortUrl = await createShortLink(originalUrl);
       
    // New way
    final shortUrl = await facade.createPageLink(
      pageType: 'product',
      pageId: productId,
      originalUrl: originalUrl,
    );
    

Breaking Changes #

  • None (initial release)

Deprecations #

  • None (initial release)

For more information, visit our GitHub repository.

3
likes
130
points
121
downloads

Publisher

unverified uploader

Weekly Downloads

Streamlined deeplink and short URL management with Clean Architecture. Focused on core functionality - ShyunLinkManager.createShortLink() and deeplink handling with multiple URL format support.

Repository (GitHub)

Topics

#deeplink #url #shortlink #navigation

Documentation

API reference

License

MIT (license)

Dependencies

app_links, dio, flutter, logger, url_launcher

More

Packages that depend on shyun_link

Packages that implement shyun_link