diff --git a/apps/mobile/app.config.ts b/apps/mobile/app.config.ts
index 17a920b9f60..a62d6f557cb 100644
--- a/apps/mobile/app.config.ts
+++ b/apps/mobile/app.config.ts
@@ -43,7 +43,7 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
favicon: "./assets/favicon.png",
bundler: "metro",
},
- plugins: ["expo-router"],
+ plugins: ["expo-router", "expo-localization"],
extra: {
router: {},
eas: {
diff --git a/apps/mobile/app/_layout.tsx b/apps/mobile/app/_layout.tsx
index cb06e07d52d..283df545853 100644
--- a/apps/mobile/app/_layout.tsx
+++ b/apps/mobile/app/_layout.tsx
@@ -1,16 +1,6 @@
import "react-native-get-random-values"; // MUST BE FIRST IMPORT
import "../global.css";
-import { PortalHost } from "@rn-primitives/portal";
-import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
-import { Stack } from "expo-router";
-const queryClient = new QueryClient();
+import { RootLayout } from "@/screens/RootLayout";
-export default function RootLayout() {
- return (
-
-
-
-
- );
-}
+export default RootLayout;
diff --git a/apps/mobile/lib/env.ts b/apps/mobile/lib/env.ts
index f30047c4e3a..5173ffcf431 100644
--- a/apps/mobile/lib/env.ts
+++ b/apps/mobile/lib/env.ts
@@ -8,6 +8,8 @@ const envSchema = z.object({
EXPO_PUBLIC_WEB_URL: z.url().optional(),
EXPO_PUBLIC_DEEP_LINK_SCHEME: z.string().default("superset"),
EXPO_PUBLIC_DEEP_LINK_DOMAIN: z.string().optional(),
+ EXPO_PUBLIC_POSTHOG_KEY: z.string(),
+ EXPO_PUBLIC_POSTHOG_HOST: z.url().default("https://us.i.posthog.com"),
});
export const env = envSchema.parse({
@@ -18,4 +20,6 @@ export const env = envSchema.parse({
.EXPO_PUBLIC_DEEP_LINK_SCHEME as unknown,
EXPO_PUBLIC_DEEP_LINK_DOMAIN: process.env
.EXPO_PUBLIC_DEEP_LINK_DOMAIN as unknown,
+ EXPO_PUBLIC_POSTHOG_KEY: process.env.EXPO_PUBLIC_POSTHOG_KEY as unknown,
+ EXPO_PUBLIC_POSTHOG_HOST: process.env.EXPO_PUBLIC_POSTHOG_HOST as unknown,
});
diff --git a/apps/mobile/lib/posthog/client.ts b/apps/mobile/lib/posthog/client.ts
new file mode 100644
index 00000000000..e38b20541a8
--- /dev/null
+++ b/apps/mobile/lib/posthog/client.ts
@@ -0,0 +1,10 @@
+import { env } from "../env";
+
+export const posthogConfig = {
+ apiKey: env.EXPO_PUBLIC_POSTHOG_KEY,
+ host: env.EXPO_PUBLIC_POSTHOG_HOST,
+ options: {
+ enableSessionReplay: false,
+ debug: env.NODE_ENV === "development",
+ },
+};
diff --git a/apps/mobile/lib/posthog/index.ts b/apps/mobile/lib/posthog/index.ts
new file mode 100644
index 00000000000..63205d047c1
--- /dev/null
+++ b/apps/mobile/lib/posthog/index.ts
@@ -0,0 +1 @@
+export { posthogConfig } from "./client";
diff --git a/apps/mobile/package.json b/apps/mobile/package.json
index 3ea2308de16..ec71955508e 100644
--- a/apps/mobile/package.json
+++ b/apps/mobile/package.json
@@ -14,6 +14,7 @@
"dependencies": {
"@better-auth/expo": "1.4.16",
"@electric-sql/client": "https://pkg.pr.new/@electric-sql/client@3724",
+ "@react-native-async-storage/async-storage": "2.2.0",
"@react-navigation/native": "^7.1.28",
"@rn-primitives/portal": "^1.3.0",
"@rn-primitives/slot": "^1.2.0",
@@ -31,10 +32,14 @@
"clsx": "^2.1.1",
"dotenv": "^17.2.3",
"expo": "~54.0.31",
+ "expo-application": "~7.0.8",
"expo-constants": "^18.0.13",
"expo-crypto": "^15.0.8",
"expo-dev-client": "~6.0.20",
+ "expo-device": "~8.0.10",
+ "expo-file-system": "~19.0.21",
"expo-linking": "~8.0.11",
+ "expo-localization": "~17.0.8",
"expo-network": "~8.0.8",
"expo-router": "^6.0.21",
"expo-secure-store": "~15.0.8",
@@ -42,6 +47,7 @@
"expo-system-ui": "~6.0.9",
"expo-web-browser": "~15.0.10",
"lucide-react-native": "^0.562.0",
+ "posthog-react-native": "^4.23.0",
"react": "19.1.0",
"react-native": "0.81.5",
"react-native-get-random-values": "^1.11.0",
diff --git a/apps/mobile/screens/RootLayout/RootLayout.tsx b/apps/mobile/screens/RootLayout/RootLayout.tsx
new file mode 100644
index 00000000000..bf7ddb1e38b
--- /dev/null
+++ b/apps/mobile/screens/RootLayout/RootLayout.tsx
@@ -0,0 +1,20 @@
+import { PortalHost } from "@rn-primitives/portal";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
+import { Stack } from "expo-router";
+
+import { PostHogUserIdentifier } from "./components/PostHogUserIdentifier";
+import { PostHogProvider } from "./providers/PostHogProvider";
+
+const queryClient = new QueryClient();
+
+export function RootLayout() {
+ return (
+
+
+
+
+
+
+
+ );
+}
diff --git a/apps/mobile/screens/RootLayout/components/PostHogUserIdentifier/PostHogUserIdentifier.tsx b/apps/mobile/screens/RootLayout/components/PostHogUserIdentifier/PostHogUserIdentifier.tsx
new file mode 100644
index 00000000000..634c89a6a85
--- /dev/null
+++ b/apps/mobile/screens/RootLayout/components/PostHogUserIdentifier/PostHogUserIdentifier.tsx
@@ -0,0 +1,21 @@
+import { usePostHog } from "posthog-react-native";
+import { useEffect } from "react";
+import { useSession } from "@/lib/auth/client";
+
+export function PostHogUserIdentifier() {
+ const { data: session } = useSession();
+ const posthog = usePostHog();
+
+ useEffect(() => {
+ if (session?.user) {
+ posthog.identify(session.user.id, {
+ email: session.user.email,
+ name: session.user.name,
+ });
+ } else if (session === null) {
+ posthog.reset();
+ }
+ }, [session, posthog]);
+
+ return null;
+}
diff --git a/apps/mobile/screens/RootLayout/components/PostHogUserIdentifier/index.ts b/apps/mobile/screens/RootLayout/components/PostHogUserIdentifier/index.ts
new file mode 100644
index 00000000000..9c592fde4de
--- /dev/null
+++ b/apps/mobile/screens/RootLayout/components/PostHogUserIdentifier/index.ts
@@ -0,0 +1 @@
+export { PostHogUserIdentifier } from "./PostHogUserIdentifier";
diff --git a/apps/mobile/screens/RootLayout/index.ts b/apps/mobile/screens/RootLayout/index.ts
new file mode 100644
index 00000000000..3c5e2f947c5
--- /dev/null
+++ b/apps/mobile/screens/RootLayout/index.ts
@@ -0,0 +1 @@
+export { RootLayout } from "./RootLayout";
diff --git a/apps/mobile/screens/RootLayout/providers/PostHogProvider/PostHogProvider.tsx b/apps/mobile/screens/RootLayout/providers/PostHogProvider/PostHogProvider.tsx
new file mode 100644
index 00000000000..05b103874d2
--- /dev/null
+++ b/apps/mobile/screens/RootLayout/providers/PostHogProvider/PostHogProvider.tsx
@@ -0,0 +1,53 @@
+import { usePathname } from "expo-router";
+import {
+ PostHogProvider as PHProvider,
+ usePostHog,
+} from "posthog-react-native";
+import { type ReactNode, useEffect, useRef } from "react";
+import { posthogConfig } from "@/lib/posthog";
+
+interface PostHogProviderProps {
+ children: ReactNode;
+}
+
+function PostHogInitializer({ children }: { children: ReactNode }) {
+ const posthog = usePostHog();
+ const pathname = usePathname();
+ const previousPathname = useRef(null);
+
+ useEffect(() => {
+ if (posthogConfig.options.debug) {
+ posthog.debug(true);
+ }
+ posthog.register({
+ app_name: "mobile",
+ });
+ }, [posthog]);
+
+ // Track screen views on pathname change
+ useEffect(() => {
+ if (pathname && pathname !== previousPathname.current) {
+ posthog.screen(pathname, { path: pathname });
+ previousPathname.current = pathname;
+ }
+ }, [pathname, posthog]);
+
+ return <>{children}>;
+}
+
+export function PostHogProvider({ children }: PostHogProviderProps) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/apps/mobile/screens/RootLayout/providers/PostHogProvider/index.ts b/apps/mobile/screens/RootLayout/providers/PostHogProvider/index.ts
new file mode 100644
index 00000000000..56caddde426
--- /dev/null
+++ b/apps/mobile/screens/RootLayout/providers/PostHogProvider/index.ts
@@ -0,0 +1 @@
+export { PostHogProvider } from "./PostHogProvider";
diff --git a/bun.lock b/bun.lock
index b2d50e81267..c3f3bf7c6ae 100644
--- a/bun.lock
+++ b/bun.lock
@@ -344,6 +344,7 @@
"dependencies": {
"@better-auth/expo": "1.4.16",
"@electric-sql/client": "https://pkg.pr.new/@electric-sql/client@3724",
+ "@react-native-async-storage/async-storage": "2.2.0",
"@react-navigation/native": "^7.1.28",
"@rn-primitives/portal": "^1.3.0",
"@rn-primitives/slot": "^1.2.0",
@@ -361,10 +362,14 @@
"clsx": "^2.1.1",
"dotenv": "^17.2.3",
"expo": "~54.0.31",
+ "expo-application": "~7.0.8",
"expo-constants": "^18.0.13",
"expo-crypto": "^15.0.8",
"expo-dev-client": "~6.0.20",
+ "expo-device": "~8.0.10",
+ "expo-file-system": "~19.0.21",
"expo-linking": "~8.0.11",
+ "expo-localization": "~17.0.8",
"expo-network": "~8.0.8",
"expo-router": "^6.0.21",
"expo-secure-store": "~15.0.8",
@@ -372,6 +377,7 @@
"expo-system-ui": "~6.0.9",
"expo-web-browser": "~15.0.10",
"lucide-react-native": "^0.562.0",
+ "posthog-react-native": "^4.23.0",
"react": "19.1.0",
"react-native": "0.81.5",
"react-native-get-random-values": "^1.11.0",
@@ -1513,6 +1519,8 @@
"@react-email/text": ["@react-email/text@0.1.5", "", { "peerDependencies": { "react": "^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-o5PNHFSE085VMXayxH+SJ1LSOtGsTv+RpNKnTiJDrJUwoBu77G3PlKOsZZQHCNyD28WsQpl9v2WcJLbQudqwPg=="],
+ "@react-native-async-storage/async-storage": ["@react-native-async-storage/async-storage@2.2.0", "", { "dependencies": { "merge-options": "^3.0.4" }, "peerDependencies": { "react-native": "^0.0.0-0 || >=0.65 <1.0" } }, "sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw=="],
+
"@react-native/assets-registry": ["@react-native/assets-registry@0.81.5", "", {}, "sha512-705B6x/5Kxm1RKRvSv0ADYWm5JOnoiQ1ufW7h8uu2E6G9Of/eE6hP/Ivw3U5jI16ERqZxiKQwk34VJbB0niX9w=="],
"@react-native/babel-plugin-codegen": ["@react-native/babel-plugin-codegen@0.81.5", "", { "dependencies": { "@babel/traverse": "^7.25.3", "@react-native/codegen": "0.81.5" } }, "sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ=="],
@@ -2833,6 +2841,8 @@
"expo": ["expo@54.0.31", "", { "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "54.0.21", "@expo/config": "~12.0.13", "@expo/config-plugins": "~54.0.4", "@expo/devtools": "0.1.8", "@expo/fingerprint": "0.15.4", "@expo/metro": "~54.2.0", "@expo/metro-config": "54.0.13", "@expo/vector-icons": "^15.0.3", "@ungap/structured-clone": "^1.3.0", "babel-preset-expo": "~54.0.9", "expo-asset": "~12.0.12", "expo-constants": "~18.0.13", "expo-file-system": "~19.0.21", "expo-font": "~14.0.10", "expo-keep-awake": "~15.0.8", "expo-modules-autolinking": "3.0.24", "expo-modules-core": "3.0.29", "pretty-format": "^29.7.0", "react-refresh": "^0.14.2", "whatwg-url-without-unicode": "8.0.0-3" }, "peerDependencies": { "@expo/dom-webview": "*", "@expo/metro-runtime": "*", "react": "*", "react-native": "*", "react-native-webview": "*" }, "optionalPeers": ["@expo/dom-webview", "@expo/metro-runtime", "react-native-webview"], "bin": { "expo": "bin/cli", "fingerprint": "bin/fingerprint", "expo-modules-autolinking": "bin/autolinking" } }, "sha512-kQ3RDqA/a59I7y+oqQGyrPbbYlgPMUdKBOgvFLpoHbD2bCM+F75i4N0mUijy7dG5F/CUCu2qHmGGUCXBbMDkCg=="],
+ "expo-application": ["expo-application@7.0.8", "", { "peerDependencies": { "expo": "*" } }, "sha512-qFGyxk7VJbrNOQWBbE09XUuGuvkOgFS9QfToaK2FdagM2aQ+x3CvGV2DuVgl/l4ZxPgIf3b/MNh9xHpwSwn74Q=="],
+
"expo-asset": ["expo-asset@12.0.12", "", { "dependencies": { "@expo/image-utils": "^0.8.8", "expo-constants": "~18.0.12" }, "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ=="],
"expo-constants": ["expo-constants@18.0.13", "", { "dependencies": { "@expo/config": "~12.0.13", "@expo/env": "~2.0.8" }, "peerDependencies": { "expo": "*", "react-native": "*" } }, "sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ=="],
@@ -2847,6 +2857,8 @@
"expo-dev-menu-interface": ["expo-dev-menu-interface@2.0.0", "", { "peerDependencies": { "expo": "*" } }, "sha512-BvAMPt6x+vyXpThsyjjOYyjwfjREV4OOpQkZ0tNl+nGpsPfcY9mc6DRACoWnH9KpLzyIt3BOgh3cuy/h/OxQjw=="],
+ "expo-device": ["expo-device@8.0.10", "", { "dependencies": { "ua-parser-js": "^0.7.33" }, "peerDependencies": { "expo": "*" } }, "sha512-jd5BxjaF7382JkDMaC+P04aXXknB2UhWaVx5WiQKA05ugm/8GH5uaz9P9ckWdMKZGQVVEOC8MHaUADoT26KmFA=="],
+
"expo-file-system": ["expo-file-system@19.0.21", "", { "peerDependencies": { "expo": "*", "react-native": "*" } }, "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg=="],
"expo-font": ["expo-font@14.0.11", "", { "dependencies": { "fontfaceobserver": "^2.1.0" }, "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg=="],
@@ -2857,6 +2869,8 @@
"expo-linking": ["expo-linking@8.0.11", "", { "dependencies": { "expo-constants": "~18.0.12", "invariant": "^2.2.4" }, "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-+VSaNL5om3kOp/SSKO5qe6cFgfSIWnnQDSbA7XLs3ECkYzXRquk5unxNS3pg7eK5kNUmQ4kgLI7MhTggAEUBLA=="],
+ "expo-localization": ["expo-localization@17.0.8", "", { "dependencies": { "rtl-detect": "^1.0.2" }, "peerDependencies": { "expo": "*", "react": "*" } }, "sha512-UrdwklZBDJ+t+ZszMMiE0SXZ2eJxcquCuQcl6EvGHM9K+e6YqKVRQ+w8qE+iIB3H75v2RJy6MHAaLK+Mqeo04g=="],
+
"expo-manifests": ["expo-manifests@1.0.10", "", { "dependencies": { "@expo/config": "~12.0.11", "expo-json-utils": "~0.15.0" }, "peerDependencies": { "expo": "*" } }, "sha512-oxDUnURPcL4ZsOBY6X1DGWGuoZgVAFzp6PISWV7lPP2J0r8u1/ucuChBgpK7u1eLGFp6sDIPwXyEUCkI386XSQ=="],
"expo-modules-autolinking": ["expo-modules-autolinking@3.0.24", "", { "dependencies": { "@expo/spawn-async": "^1.7.2", "chalk": "^4.1.0", "commander": "^7.2.0", "require-from-string": "^2.0.2", "resolve-from": "^5.0.0" }, "bin": { "expo-modules-autolinking": "bin/expo-modules-autolinking.js" } }, "sha512-TP+6HTwhL7orDvsz2VzauyQlXJcAWyU3ANsZ7JGL4DQu8XaZv/A41ZchbtAYLfozNA2Ya1Hzmhx65hXryBMjaQ=="],
@@ -3485,6 +3499,8 @@
"merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="],
+ "merge-options": ["merge-options@3.0.4", "", { "dependencies": { "is-plain-obj": "^2.1.0" } }, "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ=="],
+
"merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="],
"merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="],
@@ -3857,6 +3873,8 @@
"posthog-node": ["posthog-node@5.21.1", "", { "dependencies": { "@posthog/core": "1.10.0" } }, "sha512-xFRlaZTrVfIVrRfEZsI/DM6pdJqeX6iaRlo46nexhB1wfRcuIy1mtp76nkZSw3DDRXBczTo41K7raO2yS3dxzA=="],
+ "posthog-react-native": ["posthog-react-native@4.23.0", "", { "dependencies": { "@posthog/core": "1.13.0" }, "peerDependencies": { "@react-native-async-storage/async-storage": ">=1.0.0", "@react-navigation/native": ">= 5.0.0", "expo-application": ">= 4.0.0", "expo-device": ">= 4.0.0", "expo-file-system": ">= 13.0.0", "expo-localization": ">= 11.0.0", "posthog-react-native-session-replay": ">= 1.2.0", "react-native-device-info": ">= 10.0.0", "react-native-localize": ">= 3.0.0", "react-native-navigation": ">= 6.0.0", "react-native-safe-area-context": ">= 4.0.0", "react-native-svg": ">= 15.0.0" }, "optionalPeers": ["@react-native-async-storage/async-storage", "@react-navigation/native", "expo-application", "expo-device", "expo-file-system", "expo-localization", "posthog-react-native-session-replay", "react-native-device-info", "react-native-localize", "react-native-navigation", "react-native-safe-area-context"] }, "sha512-dhaB9d41tuaeGU4Jium8WJPDGqaybxMa2VVVd4qvFllIHB5cj/+6SPKaGKTTBfBB9ThS88/DO0l6kRqQXz+Dpg=="],
+
"postject": ["postject@1.0.0-alpha.6", "", { "dependencies": { "commander": "^9.4.0" }, "bin": { "postject": "dist/cli.js" } }, "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A=="],
"potpack": ["potpack@1.0.2", "", {}, "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ=="],
@@ -4157,6 +4175,8 @@
"router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="],
+ "rtl-detect": ["rtl-detect@1.1.2", "", {}, "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ=="],
+
"run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
"rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="],
@@ -4523,6 +4543,8 @@
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+ "ua-parser-js": ["ua-parser-js@0.7.41", "", { "bin": { "ua-parser-js": "script/cli.js" } }, "sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg=="],
+
"ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="],
"uint8array-extras": ["uint8array-extras@1.5.0", "", {}, "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A=="],
@@ -5215,6 +5237,8 @@
"meow/type-fest": ["type-fest@3.13.1", "", {}, "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g=="],
+ "merge-options/is-plain-obj": ["is-plain-obj@2.1.0", "", {}, "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="],
+
"mermaid/marked": ["marked@16.4.2", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA=="],
"mermaid/uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="],
@@ -5295,6 +5319,8 @@
"posthog-node/@posthog/core": ["@posthog/core@1.10.0", "", { "dependencies": { "cross-spawn": "^7.0.6" } }, "sha512-Xk3JQ+cdychsvftrV3G9ZrN9W329lbyFW0pGJXFGKFQf8qr4upw2SgNg9BVorjSrfhoXZRnJGt/uNF4nGFBL5A=="],
+ "posthog-react-native/@posthog/core": ["@posthog/core@1.13.0", "", { "dependencies": { "cross-spawn": "^7.0.6" } }, "sha512-knjncrk7qRmssFRbGzBl1Tunt21GRpe0Wv+uVelyL0Rh7PdQUsgguulzXFTps8hA6wPwTU4kq85qnbAJ3eH6Wg=="],
+
"postject/commander": ["commander@9.5.0", "", {}, "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="],
"pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="],