Skip to main content
This page describes the HarmonyOS SDK support scope and current limits so you can confirm whether your project meets the requirements before integration.

Support scope

ItemSupport
Project modelHarmonyOS NEXT / Stage model ArkTS projects
SDK formHAR modules imported through @flashcatcloud/* packages
RUM data sourceEvents always write source: "harmony"
Device typesSDK HAR modules declare support for default, phone, tablet, 2in1, tv, wearable, and car
Runtime initializationInitialize once in AbilityStage.onCreate when possible
Data upload@kit.NetworkKit, POST /api/v2/rum

Modules and capabilities

ModulePackageDescription
Core@flashcatcloud/coreInitialization, configuration, context, user information, tracking consent, persistence, and upload
RUM@flashcatcloud/rumView, action, resource, error, and session handling
Trace@flashcatcloud/traceW3C traceparent / tracestate injection, RUM resource correlation, and the FlashcatHttp wrapper
Crash@flashcatcloud/crashAPP_CRASH and APP_FREEZE collection, reported as RUM crash errors
Hvigor plugin@flashcatcloud/hvigor-pluginUploads ArkTS sourcemap, nameCache.json, and native .so symbols

Permission requirements

The host application must allow the SDK to access the network upload endpoint.
module.json5
{
  module: {
    requestPermissions: [
      {
        name: "ohos.permission.INTERNET"
      }
    ]
  }
}
If your application itself reads network state, you can also declare ohos.permission.GET_NETWORK_INFO. The current SDK event context does not automatically subscribe to network state changes, so this permission is not required for RUM upload.

Kit dependencies

The SDK source uses these HarmonyOS Kits:
KitUsage
@kit.AbilityKitApplication context, bundle information, exception observer, and foreground/background state
@kit.BasicServicesKitDevice brand, model, OS version, API level, and device type
@kit.NetworkKitRUM batch upload and the FlashcatHttp request wrapper
@kit.RemoteCommunicationKitrcp interceptor for Trace header injection and resource recording
@kit.ArkUIrouterPageUpdate observer for automatic views
@kit.PerformanceAnalysisKithiAppEvent crash and hang observer, plus HiLog output
@kit.BackgroundTasksKitWorkScheduler deferred upload registration

Initialization order

Enable the SDK in this order:
  1. Call Flashcat.initialize(...) to create the core instance
  2. Call FlashcatRum.enable(...) to enable RUM
  3. Call FlashcatTrace.enable(...) to enable Trace
  4. Call FlashcatCrash.enable(...) to enable Crash
Crash events are written through the RUM feature. Do not enable only @flashcatcloud/crash without RUM, because received crash replays will not produce RUM errors.

Supported automatic collection

CapabilitySupportDescription
Automatic viewsSupportedRequires setTrackNavigation(true) and FlashcatRum.startViewTracking(context)
Automatic tapsSupported through explicit wrappingRequires setTrackUserInteractions(true) and FlashcatRum.trackTap(target) in click handlers
Automatic resourcesSupportedCollected through the rcp interceptor or FlashcatHttp wrapper
Unhandled exceptionsSupportedCollected through errorManager.on('error')
Crashes and hangsSupportedReplayed by hiAppEvent on the next launch
Trace correlationSupportedInjects W3C traceparent and tracestate, and writes _dd.trace_id / _dd.span_id to RUM resources

Current limits

LimitDescription
Navigation scopeAutomatic views currently listen to ArkUI routerPageUpdate; use manual views or additional wrapping for Navigation / NavDestination
Tap scopeThe SDK does not automatically traverse every component; call FlashcatRum.trackTap() in button handlers or shared click wrappers
Network scopeOnly requests using the rcp interceptor, FlashcatHttp, or manual resource APIs are collected
Resource lifecycleA resource must finish while a view is active; in-flight resources are dropped when the view closes
Concurrent resourcesA single view keeps at most 100 pending resources
rcp host restrictionsetFirstPartyHosts() currently applies only to FlashcatHttp; an rcp session with the interceptor injects Trace headers into that session’s requests; requests that already have traceparent are not overwritten
Crash timingHarmonyOS replays crashes and hangs on the next launch; the SDK does not synchronously report from the crashing process
Network statusconnectivity.status is currently unknown
Session ReplayNot currently supported
Page performance metricsHarmonyOS page rendering performance is not automatically collected
FrustrationsetTrackFrustrations() is reserved and currently does not generate frustration events

Symbolication compatibility

HarmonyOS crash stacks can contain both ArkTS / JS frames and native .so frames. The server resolves them as follows:
Frame typeResolution methodRequired uploaded files
ArkTS / JSUses HarmonyOS sourceMaps.map to restore source files, function names, lines, and columnssourceMaps.map; obfuscated builds can also include nameCache.json
Native C/C++Reuses the native symbolication pipeline and matches by build_id, architecture, and .so nameUnstripped .so files with GNU build-id
Upload symbol files as part of your release build, and keep service and version aligned with SDK initialization and RUM events. Otherwise the console can receive crash events but cannot resolve frames back to source locations.