appxiomcoreplugin 1.0.0
appxiomcoreplugin: ^1.0.0 copied to clipboard
Detect and report bugs in Flutter based mobile apps. Reports issues like memory leaks, crashes, ANR and exceptions. Plugin has low memory and size footprint.
Appxiom Core Plugin #
A comprehensive Flutter plugin for detecting and reporting bugs in mobile applications. This plugin helps developers track user journeys (Goal tracking), memory leaks, crashes, exceptions, and performance issues with minimal memory and size footprint.
Features #
- 🔍 Memory Leak Detection: Automatically detect and report memory leaks in Flutter apps
- 💥 Crash Tracking: Monitor and report application crashes and exceptions
- 🎯 Goal Management: User journey (Goal) tracking with beginGoal/completeGoal APIs
- 📊 Activity Markers: Set custom activity markers for debugging and analytics
- 🌐 Network Monitoring: HTTP request/response interceptor for API error tracking
- ⚡ Performance Monitoring: Cold startup delay detection
- 📱 Cross-Platform: Full support for Android and iOS
- 🚀 Low Footprint: Minimal memory usage and app size impact
Installation #
Add this to your package's pubspec.yaml file:
dependencies:
appxiomcoreplugin: ^1.0.0
Then run:
flutter pub get
Quick Start #
Initialize the Plugin #
import 'package:appxiomcoreplugin/appxiomcoreplugin.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Initialize for Android
Appxiomcoreplugin().init("<android_app_key>", "android_platform_key");
// Initialize for iOS
Appxiomcoreplugin().initIOS();
runApp(MyApp());
}
Setting iOS and iPad keys in info.plist
Open your Info.plist file and add the following keys:
<key>AX</key>
<dict>
<!-- Keys for iOS -->
<key>AppKey</key>
<string>IOS_APP_KEY_FROM_APPXIOM_DASHBOARD</string>
<key>PlatformKey</key>
<string>IOS_PLATFORM_KEY_FROM_APPXIOM_DASHBOARD</string>
<!-- Keys for iPadOS -->
<key>AppKeyIpad</key>
<string>IPADOS_APP_KEY_FROM_APPXIOM_DASHBOARD</string>
<key>PlatformKeyIpad</key>
<string>IPADOS_PLATFORM_KEY_FROM_APPXIOM_DASHBOARD</string>
</dict>
Setting Android in AndroidManifest.xml
Open your project level build.gradle file and add the following inside the repositories block:
maven {
url = uri("https://appxiom-android.s3.us-west-1.amazonaws.com") //Appxiom Maven repo link
}
App Startup Delay Monitoring #
In your first screen (initial screen/splash screen), use AxInitialState instead of regular State to monitor cold startup delays:
// For the FIRST screen/initial screen only
class InitialScreen extends StatefulWidget {
@override
_InitialScreenState createState() => _InitialScreenState();
}
class _InitialScreenState extends AxInitialState<InitialScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Text('Initial Screen'),
);
}
}
### Memory Leak Detection
Use `AxState` instead of regular `State` for automatic memory leak detection.
// For all OTHER screens, use AxState
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends AxState<MyWidget> {
@override
Widget build(BuildContext context) {
return Container(
child: Text('Hello World'),
);
}
}
Goal/ User Journey Tracking #
Track user goals and completion:
// Begin a goal and get the goal ID
int goalId = await Ax.beginGoal("user_signup");
// Complete the goal
await Ax.completeGoal(goalId);
Activity Markers #
Set activity markers for debugging:
// Set an activity marker
await Ax.setActivityMarker("button_clicked", "Login button pressed");
Network Monitoring #
import 'package:appxiomcoreplugin/observe.dart';
// The plugin automatically intercepts HTTP calls
// Use AxClient for monitored HTTP requests
final response = await AxClient().get(Uri.parse('<url>'));
Custom Issue Reporting #
// Report custom issues
Ax.reportIssue("LoginScreen.dart:45","Login failed", "User authentication failed with invalid credentials"
);
Custom Error Reporting #
// Report custom exceptions with stack trace
try {
// Some code that may throw an error
} catch (error, stackTrace) {
// Report the error using Ax.reportError API
Ax.reportError(error, stackTrace);
}
Advanced Usage #
HTTP Interceptor #
Use AxHttpInterceptor for HTTP monitoring when not using AxClient:
import 'package:appxiomcoreplugin/src/ax_http_interceptor.dart';
// The interceptor automatically tracks:
// - Request/response times
// - HTTP status codes
// - Request/response payloads
// - API endpoint patterns
final response = await AxHttpInterceptor.get(
Uri.parse('<url>'),
headers: {'Content-Type': 'application/json'},
);
About Appxiom #
Appxiom helps developers build more reliable mobile applications with comprehensive monitoring and debugging tools. Visit appxiom.com to learn more.