traput_dynamic_linking 0.0.1
traput_dynamic_linking: ^0.0.1 copied to clipboard
Traput Dynamic Linking SDK for Flutter. Handles Universal Links (iOS), App Links (Android), and deferred deep links via a single API (Traput.onLink()). Logic-only, no UI.
0.1.0 (2024-12-XX) #
First public beta release. This release focuses on SDK maturity and developer experience.
Phase 4: SDK Maturity & Developer Experience #
4.1 - Public SDK API Finalization
- BREAKING: Renamed
TraputDynamicLinkingtoTraputfor cleaner API - Added
timeoutparameter toTraput.initialize()for configurable request timeout - Added
enableDebugLoggingparameter toTraput.initialize()for optional debug logging - Enhanced DartDocs for all public APIs with comprehensive examples
- Improved API documentation and examples
4.2 - Error Handling & Diagnostics
- Created comprehensive error hierarchy with typed exceptions:
TraputException(base class)TraputInitializationExceptionand subtypesTraputNetworkExceptionand subtypes (timeout, connection)TraputBackendExceptionand subtypes (API errors, invalid response, token invalid)TraputPlatformExceptionand subtypes (missing bundle ID, platform channel errors)
- Implemented
TraputLoggerclass for debug logging - All errors are now typed and actionable
- Debug logging never includes secrets (API keys, tokens)
4.3 - Lifecycle & Edge Case Handling
- Implemented link queue for single-delivery guarantees
- Added idempotent link delivery (prevents duplicate deliveries)
- Improved handling of multiple rapid link opens
- Enhanced callback registration timing handling
- Better support for app resume scenarios
4.4 - Deferred Deep Linking Reliability
- Implemented exponential backoff retry logic (3 retries: 1s, 2s, 4s delays)
- Added configurable timeout support (default: 10 seconds)
- Improved token invalidation handling
- Enhanced safe fallbacks for deferred resolution failures
- Retry on network errors and 5xx server errors
- Don't retry on 4xx client errors (including invalid tokens)
4.5 - Demo App Polish
- Enhanced demo app UI with better link display
- Added example deep link routes (product, user, campaign)
- Improved visual feedback and status display
- Added configuration display
- Created comprehensive demo app README
4.6 - Documentation
- Created troubleshooting guide with common issues and solutions
- Created integration checklist for step-by-step setup
- Enhanced main README with troubleshooting and common mistakes
- Improved all code examples
- Added error handling examples
4.7 - SDK Release Readiness
- Set version to 0.1.0
- Created API stability documentation
- Comprehensive changelog
- Release notes
Features #
- Unified API:
Traput.onLink()handles Universal Links, App Links, and deferred deep links - Robust Error Handling: Typed exceptions for all error scenarios
- Reliable Deferred Linking: Automatic retry with exponential backoff
- Debug Logging: Optional debug logging (never logs secrets)
- Lifecycle Support: Handles all app states (cold start, warm start, resume)
- Single Delivery Guarantee: Each link is delivered exactly once
Breaking Changes #
- API Rename:
TraputDynamicLinkingrenamed toTraput- This is not a breaking change for existing users since SDK has never been published
- All references updated in code, tests, and documentation
Deprecated #
Traput.resolveDeferredLink()- UseTraput.onLink()instead
Migration #
Since this is the first public release, no migration is needed. If you were using an internal version:
- Update class name from
TraputDynamicLinkingtoTraput - Consider using
Traput.onLink()instead ofresolveDeferredLink() - Enable debug logging during development:
enableDebugLogging: true - Handle typed exceptions instead of generic exceptions
0.0.1 #
Initial SDK skeleton:
TraputDynamicLinking.initialize(apiKey, baseUrl)- Capture
traput_tokenfrom Android intents and iOS URLs/universal links resolveDeferredLink()callsPOST /deferred/resolveusinghttp