From a53c6727e158394473f258df2901219c7298b5bc Mon Sep 17 00:00:00 2001 From: Arjun Komath Date: Fri, 24 Oct 2025 22:42:21 +1100 Subject: [PATCH] Remove posthog --- apps/web/.env.example | 3 -- apps/web/next.config.js | 21 +------- apps/web/package.json | 3 +- apps/web/pages/_app.tsx | 26 ++-------- apps/web/utils/posthog.ts | 10 ---- apps/web/utils/useUser.tsx | 6 --- pnpm-lock.yaml | 99 +++++++++++++------------------------- 7 files changed, 40 insertions(+), 128 deletions(-) delete mode 100644 apps/web/utils/posthog.ts diff --git a/apps/web/.env.example b/apps/web/.env.example index c959e14..7634391 100644 --- a/apps/web/.env.example +++ b/apps/web/.env.example @@ -35,6 +35,3 @@ NEXT_PUBLIC_SANITY_PROJECT_ID=jeixxcw8 MANAGEPROMPT_SECRET= MANAGEPROMPT_CHANGEGPT_WORKFLOW_ID= -# PostHog -NEXT_PUBLIC_POSTHOG_KEY= -NEXT_PUBLIC_POSTHOG_HOST= diff --git a/apps/web/next.config.js b/apps/web/next.config.js index 7ebed06..7bef343 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -5,7 +5,7 @@ const ContentSecurityPolicy = ` style-src 'self' data: 'unsafe-inline' maxcdn.bootstrapcdn.com cdn.jsdelivr.net cdn.zapier.com fonts.googleapis.com; img-src 'self' * data: blob:; font-src 'self' data: maxcdn.bootstrapcdn.com cdn.jsdelivr.net fonts.gstatic.com; - connect-src 'self' wss: *.supabase.co *.changes.page manageprompt.com zapier.com *.zapier.com www.google.com *.atlassian.com us.i.posthog.com; + connect-src 'self' wss: *.supabase.co *.changes.page manageprompt.com zapier.com *.zapier.com www.google.com *.atlassian.com; worker-src 'self' blob:; report-to default `; @@ -66,25 +66,6 @@ const moduleExports = { "cdn.sanity.io", ], }, - // PostHog rewrites for ingest and static assets - async rewrites() { - return [ - { - source: "/ingest/static/:path*", - destination: "https://us-assets.i.posthog.com/static/:path*", - }, - { - source: "/ingest/:path*", - destination: "https://us.i.posthog.com/:path*", - }, - { - source: "/ingest/decide", - destination: "https://us.i.posthog.com/decide", - }, - ]; - }, - // This is required to support PostHog trailing slash API requests - skipTrailingSlashRedirect: true, }; // ensure that your source maps include changes from all other Webpack plugins diff --git a/apps/web/package.json b/apps/web/package.json index fd6858f..d2151dd 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -27,6 +27,7 @@ "@supabase/supabase-js": "^2.39.3", "@tailwindcss/typography": "^0.5.1", "@types/canvas-confetti": "^1.6.4", + "@vercel/analytics": "^1.5.0", "@vercel/og": "^0.0.20", "canvas-confetti": "^1.9.3", "capture-node": "^2.2.0", @@ -45,8 +46,6 @@ "next-sitemap": "^4.2.3", "nprogress": "^0.2.0", "openai": "^3.2.1", - "posthog-js": "^1.242.2", - "posthog-node": "^4.17.1", "postmark": "^3.0.15", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/apps/web/pages/_app.tsx b/apps/web/pages/_app.tsx index 7116e1d..474ce99 100644 --- a/apps/web/pages/_app.tsx +++ b/apps/web/pages/_app.tsx @@ -1,10 +1,7 @@ +import { Analytics } from "@vercel/analytics/next"; import dynamic from "next/dynamic"; import localFont from "next/font/local"; import Head from "next/head"; -import { Router } from "next/router"; -import posthog from "posthog-js"; -import { PostHogProvider } from "posthog-js/react"; -import { useEffect } from "react"; import "../styles/global.css"; import { UserContextProvider } from "../utils/useUser"; @@ -31,24 +28,8 @@ const geist = localFont({ export default function App({ Component, pageProps }) { const getLayout = Component.getLayout || ((page) => page); - useEffect(() => { - posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY, { - api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST, - loaded: (ph) => { - if (process.env.NODE_ENV === "development") ph.debug(); - }, - debug: process.env.NODE_ENV === "development", - }); - - const handleRouteChange = () => posthog.capture("$pageview"); - Router.events.on("routeChangeComplete", handleRouteChange); - return () => { - Router.events.off("routeChangeComplete", handleRouteChange); - }; - }, []); - return ( - + <> )} - + + ); } diff --git a/apps/web/utils/posthog.ts b/apps/web/utils/posthog.ts deleted file mode 100644 index cbe2bf8..0000000 --- a/apps/web/utils/posthog.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { PostHog } from "posthog-node" - -export default function PostHogClient() { - const posthogClient = new PostHog(process.env.NEXT_PUBLIC_POSTHOG_KEY!, { - host: process.env.NEXT_PUBLIC_POSTHOG_HOST, - flushAt: 1, - flushInterval: 0, - }) - return posthogClient -} \ No newline at end of file diff --git a/apps/web/utils/useUser.tsx b/apps/web/utils/useUser.tsx index 90b7d65..9c83455 100644 --- a/apps/web/utils/useUser.tsx +++ b/apps/web/utils/useUser.tsx @@ -6,7 +6,6 @@ import { User, } from "@supabase/supabase-js"; import { useRouter } from "next/router"; -import posthog from "posthog-js"; import { createContext, useCallback, @@ -70,7 +69,6 @@ export const UserContextProvider = ({ const signOut = useCallback(async () => { const { error } = await supabase.auth.signOut(); - posthog.reset(); setBillingDetails(null); await router.replace(ROUTES.HOME); @@ -109,10 +107,6 @@ export const UserContextProvider = ({ fetchBilling().then(() => { setLoading(false); }); - posthog.identify(user.id, { - email: user.email, - name: user.user_metadata?.full_name, - }); } else { setLoading(false); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f68f19f..08d41e0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -270,6 +270,9 @@ importers: '@types/canvas-confetti': specifier: ^1.6.4 version: 1.9.0 + '@vercel/analytics': + specifier: ^1.5.0 + version: 1.5.0(next@14.2.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@vercel/og': specifier: ^0.0.20 version: 0.0.20 @@ -324,12 +327,6 @@ importers: openai: specifier: ^3.2.1 version: 3.3.0 - posthog-js: - specifier: ^1.242.2 - version: 1.242.2 - posthog-node: - specifier: ^4.17.1 - version: 4.17.1 postmark: specifier: ^3.0.15 version: 3.11.0 @@ -2120,6 +2117,32 @@ packages: cpu: [x64] os: [win32] + '@vercel/analytics@1.5.0': + resolution: {integrity: sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==} + peerDependencies: + '@remix-run/react': ^2 + '@sveltejs/kit': ^1 || ^2 + next: '>= 13' + react: ^18 || ^19 || ^19.0.0-rc + svelte: '>= 4' + vue: ^3 + vue-router: ^4 + peerDependenciesMeta: + '@remix-run/react': + optional: true + '@sveltejs/kit': + optional: true + next: + optional: true + react: + optional: true + svelte: + optional: true + vue: + optional: true + vue-router: + optional: true + '@vercel/og@0.0.20': resolution: {integrity: sha512-089P+TfqWz0xBxjOvOhkZIDDtfrLcye94H4IZ+SqxoGPWpNGXaBvRJER/z5SoJxJRcCAL8tPiK5zdjRskM6tLw==} engines: {node: '>=16'} @@ -2276,9 +2299,6 @@ packages: axios@0.26.1: resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} - axios@1.9.0: - resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} - axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -2489,9 +2509,6 @@ packages: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} - core-js@3.42.0: - resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} - cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -2945,9 +2962,6 @@ packages: resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} engines: {node: '>=0.4.0'} - fflate@0.4.8: - resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} - fflate@0.7.4: resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} @@ -4325,27 +4339,9 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} - posthog-js@1.242.2: - resolution: {integrity: sha512-bj5Bq9Z/TE24k0fbt/VoD13xsqCybuoLp7KkWmfknEiO63+1Ln/PnX/1CjppikE9yM7toQIWY3vY7hT/RTT57Q==} - peerDependencies: - '@rrweb/types': 2.0.0-alpha.17 - rrweb-snapshot: 2.0.0-alpha.17 - peerDependenciesMeta: - '@rrweb/types': - optional: true - rrweb-snapshot: - optional: true - - posthog-node@4.17.1: - resolution: {integrity: sha512-cVlQPOwOPjakUnrueKRCQe1m2Ku+XzKaOos7Tn/zDZkkZFeBT/byP7tbNf7LiwhaBRWFBRowZZb/MsTtSRaorg==} - engines: {node: '>=15.0.0'} - postmark@3.11.0: resolution: {integrity: sha512-asguBQ9M/8ueQMJ1D45iPF+3+T641q8rAU8m8cQSfhDWePw4TVYql9wszjAwSCE93dUonyrF08D8Kvg6USBoFA==} - preact@10.26.6: - resolution: {integrity: sha512-5SRRBinwpwkaD+OqlBDeITlRgvd8I8QlxHJw9AxSdMNV6O+LodN9nUyYGpSF7sadHjs6RzeFShMexC6DbtWr9g==} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -5199,9 +5195,6 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - web-vitals@4.2.4: - resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} - webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -6876,6 +6869,11 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.7.2': optional: true + '@vercel/analytics@1.5.0(next@14.2.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + optionalDependencies: + next: 14.2.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + '@vercel/og@0.0.20': dependencies: '@resvg/resvg-wasm': 2.0.0-alpha.4 @@ -7066,14 +7064,6 @@ snapshots: transitivePeerDependencies: - debug - axios@1.9.0: - dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.2 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - axobject-query@4.1.0: {} bail@2.0.2: {} @@ -7272,8 +7262,6 @@ snapshots: cookie@1.0.2: {} - core-js@3.42.0: {} - cors@2.8.5: dependencies: object-assign: 4.1.1 @@ -7883,8 +7871,6 @@ snapshots: dependencies: xml-js: 1.6.11 - fflate@0.4.8: {} - fflate@0.7.4: {} file-entry-cache@6.0.1: @@ -9811,27 +9797,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - posthog-js@1.242.2: - dependencies: - core-js: 3.42.0 - fflate: 0.4.8 - preact: 10.26.6 - web-vitals: 4.2.4 - - posthog-node@4.17.1: - dependencies: - axios: 1.9.0 - transitivePeerDependencies: - - debug - postmark@3.11.0: dependencies: axios: 0.25.0 transitivePeerDependencies: - debug - preact@10.26.6: {} - prelude-ls@1.2.1: {} prettier@2.8.8: {} @@ -10950,8 +10921,6 @@ snapshots: web-namespaces@2.0.1: {} - web-vitals@4.2.4: {} - webidl-conversions@3.0.1: {} webpack-bundle-analyzer@4.7.0: