#
Migrate to the umbrella package
To migrate to the new @workleap/telemetry umbrella package, follow these steps 👇
#
Remove the standalone library packages
Since the @workleap/telemetry package declares dependencies on the standalone telemetry libraries, host applications no longer need to declare direct dependencies on those packages.
To get started, open a terminal at the root of your application and install the telemetry umbrella package. (If your application uses other packages for additional functionality, such as LogRocketLogger, you may still want to keep those installed separately.)
pnpm remove @workleap/logrocket @workleap/honeycomb @workleap/mixpanel
Then, install the @workleap/telemetry package:
pnpm add @workleap/telemetry logrocket
#
Update the initialization code
Change the initialize code to use the initializeTelemetry function instead of standalone registration/initialization functions:
Before:
import { createRoot } from "react-dom/client";
import { registerLogRocketInstrumentation } from "@workleap/logrocket";
import { registerHoneycombInstrumentation } from "@workleap/honeycomb";
import { initializeMixpanel } from "@workleap/mixpanel";
registerLogRocketInstrumentation("my-app-id");
registerHoneycombInstrumentation("sample", "my-app-id", [/.+/g,], {
proxy: "https://sample-proxy",
});
initializeMixpanel("wlp", "development");
const root = createRoot(document.getElementById("root")!);
root.render(
<App />
);
Now:
import { createRoot } from "react-dom/client";
import { initializeTelemetry, TelemetryProvider } from "@workleap/telemetry/react";
const client = initializeTelemetry({
logRocket: {
appId: "my-app-id"
},
honeycomb: {
namespace: "sample",
serviceName: "my-app-name",
apiServiceUrls: [/.+/g],
options: {
proxy: "https://sample-proxy"
}
},
mixpanel: {
productId: "wlp",
envOrTrackingApiBaseUrl: "development"
}
});
const root = createRoot(document.getElementById("root")!);
root.render(
<TelemetryProvider client={client}>
<App />
</TelemetryProvider>
);
#
Replace createUserTraits with the client
The createUserTraits standalone function is not exported anymore. Use the client createWorkleapPlatformDefaultUserTraits method instead.
Before:
import { createDefaultUserTraits } from "@workleap/logrocket";
import LogRocket from "logrocket";
const traits = createDefaultUserTraits({
userId: "6a5e6b06-0cac-44ee-8d2b-00b9419e7da9",
organizationId: "e6bb30f8-0a00-4928-8943-1630895a3f14",
organizationName: "Acme",
isMigratedToWorkleap: true,
isOrganizationCreator: false,
isAdmin: false
});
LogRocket.identify(traits.userId, traits);
Now:
import { useLogRocketInstrumentationClient } from "@workleap/telemetry/react";
import LogRocket from "logrocket";
const client = useLogRocketInstrumentationClient();
const traits = client.createWorkleapPlatformDefaultUserTraits({
userId: "6a5e6b06-0cac-44ee-8d2b-00b9419e7da9",
organizationId: "e6bb30f8-0a00-4928-8943-1630895a3f14",
organizationName: "Acme",
isMigratedToWorkleap: true,
isOrganizationCreator: false,
isAdmin: false
});
LogRocket.identify(traits.userId, traits);
#
Replace setGlobalSpanAttribute and setGlobalSpanAttributes with the client
The setGlobalSpanAttribute and setGlobalSpanAttributes standalone functions are not exported anymore. Use the client setGlobalSpanAttribute and setGlobalSpanAttributes methods instead.
Before:
import { setGlobalSpanAttributes } from "@workleap/honeycomb";
setGlobalSpanAttribute("app.user_id", "123");
Now:
import { useHoneycombInstrumentationClient } from "@workleap/telemetry/react";
const client = useHoneycombInstrumentationClient();
client.setGlobalSpanAttribute("app.user_id", "123");
client.setGlobalSpanAttributes({
"app.user_id": "123"
})
#
Replace setSuperProperty and setSuperProperties with the client
The setSuperProperty and setSuperProperties standalone functions are not exported anymore. Use the client setGlobalEventProperty and setGlobalEventProperties methods instead.
Before:
import { setSuperProperties } from "@workleap/mixpanel";
setSuperProperties({
"User Id": "123"
});
Now:
import { useMixpanelClient } from "@workleap/telemetry/react";
const client = useMixpanelClient();
client.setGlobalEventProperty("User Id", "123");
client.setGlobalEventProperties({
"User Id": "123"
});
#
Replace createTrackingFunction with the client
The createTrackingFunction standalone function is not exported anymore. Use the client createTrackingFunction method instead.
Before:
import { createTrackingFunction } from "@workleap/mixpanel";
const track = createTrackingFunction();
track("ButtonClicked", { "Trigger": "ChangePlan", "Location": "Header" });
Now:
import { useMixpanelClient } from "@workleap/telemetry/react";
const client = useMixpanelClient();
const track = client.createTrackingFunction();
track("ButtonClicked", { "Trigger": "ChangePlan", "Location": "Header" });