The PostHog project is an open-source analytics platform providing product analytics, session recording, feature flagging, and A/B testing capabilities. It is designed for self-hosting, allowing users to maintain control over their data while leveraging the platform's extensive analytics and optimization tools. The project is hosted on GitHub and continues to see active development with a balanced focus on both front-end improvements and back-end stability.
toTypeName
function to HogQL (posthog/hogql/functions/mapping.py
).posthog/hogql_queries/insights/funnels/utils.py
).posthog/hogql_queries/insights/trends/trends_actors_query_builder.py
).frontend/src/scenes/trends/persons-modal/persons-modal-utils.tsx
).frontend/src/queries/schema.json
, posthog/clickhouse/client/execute_async.py
).frontend/src/scenes/retention/RetentionTable.tsx
).posthog/models/cohort/util.py
).frontend/src/scenes/settings/project/Proxy.tsx
).frontend/src/scenes/settings/project/Proxy.tsx
).frontend/src/scenes/session-recordings/player/rrweb/canvas/canvas-plugin.ts
).frontend/src/scenes/insights/EmptyStates/EmptyStates.tsx
).posthog/api/proxy_record.py
).posthog/tasks/validate_proxy_domains.py
).frontend/src/scenes/settings/project/Proxy.tsx
).frontend/src/scenes/session-recordings/player/inspector/performance-event-utils.ts
).ee/session_recordings/session_summary/summarize_session.py
).plugin-server/src/worker/ingestion/event-pipeline/extractHeatmapDataStep.ts
).query
support for InsightCachingState
mechanism (posthog/api/test/test_insight.py
, posthog/caching/calculate_results.py
).frontend/src/scenes/insights/views/InsightsTable/columns/BreakdownColumn.tsx
).frontend/src/lib/components/HedgehogBuddy/HedgehogOptions.tsx
).posthog/hogql_queries/web_analytics/stats_table.py
).ee/billing/billing_manager.py
, ee/billing/billing_types.py
, ee/billing/test/test_billing_manager.py
).frontend/src/scenes/surveys/SurveyEditQuestionRow.tsx
, posthog/api/test/test_survey.py
).docker-compose.hobby.yml
).frontend/src/scenes/experiments/ExperimentView/DataCollection.tsx
, frontend/src/scenes/experiments/ExperimentView/DataCollectionCalculator.tsx
). The PostHog development team has been actively working on various features and fixes across the platform. Recent activities show a strong focus on enhancing the user interface, improving backend functionalities, and adding new features such as active CPU time tracking, dynamic CNAME targets, and randomizing survey questions. The team has also been addressing bugs and optimizing existing functionalities to ensure a robust and user-friendly experience. The ongoing efforts reflect a proactive approach to maintaining and improving the platform's capabilities.
Risk Severity: High
- Rationale: Absence of test coverage can lead to undetected bugs and regressions.
- Examples:
- posthog/hogql/functions/mapping.py
: Addition of toTypeName
.
- posthog/hogql_queries/insights/funnels/utils.py
: Support for non-string funnel breakdowns.
- Next Steps:
- Implement comprehensive unit tests for all new functionalities.
- Ensure edge cases are covered.
Risk Severity: Medium
- Rationale: Frequent rewrites can introduce instability.
- Examples:
- frontend/src/scenes/settings/project/Proxy.tsx
: Multiple updates related to proxy settings.
- posthog/api/proxy_record.py
: Frequent updates with fixes/features.
- Next Steps:
- Conduct thorough reviews of affected files.
- Ensure clear requirements before changes.
Risk Severity: Medium - Rationale: Prolonged discussions can lead to delays and reduced morale. - Examples: - Issue #22348: Discussions around fixing a blocking issue. - PR #22340: Discussions on dashboard refreshes. - Next Steps: - Facilitate regular team meetings for alignment. - Encourage constructive feedback.
Risk Severity: Medium - Rationale: Ambiguous specifications can lead to misinterpretations. - Examples: - Issue #22346: "No data yet" empty state lacks detailed criteria. - PR #22339: Session replay during onboarding lacks clear specifications. - Next Steps: - Ensure clear specifications before implementation. - Use templates/checklists for standardization.
Risk Severity: Low
- Rationale: Moderate issues can introduce bugs but aren't certain to do so.
- Examples:
- posthog/hogql/functions/mapping.py
: Long file length suggests multiple responsibilities.
- posthog/clickhouse/client/execute_async.py
: Further improvements in error handling needed.
- Next Steps:
- Refactor large files into smaller modules where feasible.
- Enhance error handling mechanisms.
Risk Severity: Low - Rationale: Non-critical PRs left open can indicate bottlenecks but do not pose immediate risks. - Examples: - PR #22336: "Hog" tab addition has been open without merging. - PR #22335: Sorting functionality left open without merging. - Next Steps: - Streamline review process for timely resolution.
/debug
.toTypeName
.Proxy.tsx
to identify underlying issues.The PostHog project is progressing well with active development focusing on both new features and system stability. However, the lack of explicit test coverage for new functionalities poses a significant risk that needs addressing. Additionally, frequent updates to certain files indicate potential instability that requires further investigation. Overall, the project reflects a balanced approach to innovation and maintenance but must address testing gaps to ensure robustness.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
Paul D'Ambra | ![]() |
1 | 17/15/0 | 15 | 51 | 3751 |
vs. last report | = | -9/-12/= | -14 | -115 | -20246 | |
Thomas Obermüller | ![]() |
1 | 11/9/0 | 8 | 45 | 2179 |
vs. last report | = | +2/+3/-1 | = | -22 | -45872 | |
Ben White | ![]() |
2 | 10/7/0 | 12 | 75 | 1662 |
vs. last report | +1 | -13/-9/-2 | -6 | -100 | -10773 | |
Michael Matloka | ![]() |
3 | 2/1/0 | 20 | 24 | 1470 |
vs. last report | = | -7/-7/= | -17 | -52 | -6048 | |
Sandy Spicer | ![]() |
1 | 3/6/0 | 7 | 91 | 1442 |
vs. last report | = | -3/+1/-1 | +1 | +18 | +478 | |
Tom Owers | ![]() |
1 | 4/3/0 | 3 | 29 | 1298 |
vs. last report | = | -8/-8/-2 | -10 | -12 | -2561 | |
Juraj Majerik | ![]() |
1 | 2/3/0 | 3 | 11 | 665 |
vs. last report | = | -3/-1/= | -1 | -8 | -2 | |
David Newell | ![]() |
1 | 8/6/2 | 6 | 22 | 601 |
vs. last report | = | +3/+4/+2 | +2 | -13 | -5350 | |
Phani Raj | ![]() |
1 | 3/3/0 | 3 | 11 | 471 |
vs. last report | = | =/+1/= | +1 | -2 | +156 | |
Bianca Yang | ![]() |
3 | 4/2/0 | 7 | 29 | 469 |
vs. last report | +1 | -1/-2/= | = | -1 | -5310 | |
github-actions | ![]() |
2 | 0/0/0 | 5 | 23 | 247 |
vs. last report | = | =/=/= | +2 | +20 | = | |
Tiina Turban | ![]() |
1 | 5/4/0 | 4 | 44 | 187 |
vs. last report | = | -5/-2/= | -6 | -33 | -2134 | |
Manoel Aranda Neto | ![]() |
1 | 1/0/0 | 2 | 7 | 72 |
Frank Hamand | ![]() |
1 | 9/8/1 | 8 | 9 | 61 |
vs. last report | = | +8/+7/+1 | +7 | +8 | +53 | |
timgl | ![]() |
1 | 1/1/0 | 1 | 2 | 30 |
vs. last report | = | =/+1/= | = | +1 | +27 | |
Eric Duong | ![]() |
1 | 0/1/0 | 1 | 2 | 17 |
vs. last report | = | -10/-8/-1 | -8 | -13 | -182 | |
Peter Abordan | ![]() |
1 | 0/0/0 | 1 | 1 | 15 |
Marius Andra | ![]() |
1 | 1/1/0 | 1 | 4 | 14 |
vs. last report | = | -9/-10/-1 | -10 | -42 | -766 | |
feedanal | ![]() |
1 | 6/1/0 | 1 | 1 | 5 |
vs. last report | +1 | +3/+1/= | +1 | +1 | +5 | |
Robbie | ![]() |
1 | 1/2/0 | 2 | 2 | 5 |
vs. last report | = | -1/=/= | = | -4 | -134 | |
Marcus Hof (MarconLP) | 0 | 1/0/0 | 0 | 0 | 0 | |
Steven Shults (slshults) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | = | =/=/= | = | = | = | |
danielxnj | ![]() |
0 | 0/0/0 | 0 | 0 | 0 |
Dylan Martin (dmarticus) | 0 | 2/2/0 | 0 | 0 | 0 | |
None (matzexcom) | 0 | 1/0/0 | 0 | 0 | 0 | |
Nikita Vorobev (nikitaevg) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | -1 | +1/=/= | -1 | -2 | -30 | |
Neil Kakkar (neilkakkar) | 0 | 2/0/0 | 0 | 0 | 0 | |
Kamil Tyborowski (ktyborowski) | 0 | 1/0/1 | 0 | 0 | 0 | |
vs. last report | = | =/=/= | = | = | = | |
PostHog Bot (posthog-bot) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | -1 | -4/-2/= | -2 | -4 | -30 | |
Raquel Smith (raquelmsmith) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | -1 | =/-2/= | -3 | -46 | -1364 | |
Zach Waterfield (zlwaterfield) | 0 | 3/0/1 | 0 | 0 | 0 | |
vs. last report | -1 | +2/-1/+1 | -1 | -1 | -20 | |
None (dependabot[bot]) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | -1 | -1/-1/= | -1 | -1 | -2 | |
Abenezer Belachew (abenezerBelachew) | 0 | 1/0/0 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
The PostHog development team is working on an open-source analytics platform that provides product analytics, session recording, feature flagging, and A/B testing capabilities. It is designed for self-hosting, allowing users to maintain control over their data while leveraging the platform's extensive analytics and optimization tools. The project is hosted on GitHub and continues to see active development with a balanced focus on both front-end improvements and back-end stability.
toTypeName
function to HogQL (posthog/hogql/functions/mapping.py
).posthog/hogql_queries/insights/funnels/utils.py
).posthog/hogql_queries/insights/trends/trends_actors_query_builder.py
).frontend/src/scenes/trends/persons-modal/persons-modal-utils.tsx
).frontend/src/queries/schema.json
, posthog/clickhouse/client/execute_async.py
).frontend/src/scenes/retention/RetentionTable.tsx
).posthog/models/cohort/util.py
).frontend/src/scenes/settings/project/Proxy.tsx
).frontend/src/scenes/settings/project/Proxy.tsx
).frontend/src/scenes/session-recordings/player/rrweb/canvas/canvas-plugin.ts
).frontend/src/scenes/insights/EmptyStates/EmptyStates.tsx
).posthog/api/proxy_record.py
).posthog/tasks/validate_proxy_domains.py
).frontend/src/scenes/settings/project/Proxy.tsx
).frontend/src/scenes/session-recordings/player/inspector/performance-event-utils.ts
).ee/session_recordings/session_summary/summarize_session.py
).plugin-server/src/worker/ingestion/event-pipeline/extractHeatmapDataStep.ts
).query
support for InsightCachingState
mechanism (posthog/api/test/test_insight.py
, posthog/caching/calculate_results.py
).frontend/src/scenes/insights/views/InsightsTable/columns/BreakdownColumn.tsx
).frontend/src/lib/components/HedgehogBuddy/HedgehogOptions.tsx
).posthog/hogql_queries/web_analytics/stats_table.py
).ee/billing/billing_manager.py
, ee/billing/billing_types.py
, ee/billing/test/test_billing_manager.py
).frontend/src/scenes/surveys/SurveyEditQuestionRow.tsx
, posthog/api/test/test_survey.py
).docker-compose.hobby.yml
).frontend/src/scenes/experiments/ExperimentView/DataCollection.tsx
, frontend/src/scenes/experiments/ExperimentView/DataCollectionCalculator.tsx
).frontend/__snapshots__/scenes-app-pipeline--pipeline-node-edit-configuration-stateless-plugin--dark.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-node-edit-configuration-stateless-plugin--light.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-node-new-destination--dark.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-node-new-destination--light.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-node-new-sequence-timer--dark.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-node-new-sequence-timer--light.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-node-new-transformation--dark.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-node-new-transformation--light.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-nodes-management-page--dark.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-nodes-management-page--light.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-overview-page--dark.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-overview-page--light.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-site-apps-page--dark.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-site-apps-page--light.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-transformations-page-empty--dark.png
, frontend/__snapshots__/scenes-app-pipeline--pipeline-transformations-page-empty--light.png
, frontend/src/scenes/pipeline/Destinations.tsx
, frontend/src/scenes/pipeline/PipelineNodeNew.tsx
). The PostHog development team has been actively working on various features and fixes across the platform. Recent activities show a strong focus on enhancing the user interface, improving backend functionalities, and adding new features such as active CPU time tracking, dynamic CNAME targets, and randomizing survey questions. The team has also been addressing bugs and optimizing existing functionalities to ensure a robust and user-friendly experience. The ongoing efforts reflect a proactive approach to maintaining and improving the platform's capabilities.
Since the last report 6 days ago, there has been a significant amount of activity in the repository. Numerous new issues have been created, and several issues have been closed. This indicates ongoing development and maintenance efforts.
bin/e2e-test-runner
due to malformed SQL in 0061_add_ttl_to_heatmaps
migration when settings.TEST
is true.person_distinct_id_override
instead of person_override
, which may change data for certain groups but is necessary for correctness.The recent activity in the repository reflects a robust development cycle focused on both expanding features and maintaining system integrity. The team's responsiveness to issues, both in terms of introducing enhancements and resolving bugs, indicates a strong commitment to user satisfaction and continuous improvement. The introduction of new features alongside critical bug fixes suggests a balanced approach to development, ensuring both innovation and stability.
Overall, the project appears to be progressing well with significant improvements made over the past week.
Since the last analysis 6 days ago, there has been significant activity in the PostHog/posthog repository. Numerous pull requests (PRs) have been opened and closed, with various enhancements, bug fixes, and new features being introduced. Below is a detailed report of the changes:
useActions
& useValues
.available_features
./debug
to run Hog programs.target_cname
.target_cname
in proxy UI.toTypeName
function to HogQL for debugging purposes.Overall, the recent activity indicates an active development cycle aimed at both expanding capabilities and ensuring the reliability of the platform.
This level of activity suggests that the PostHog team is actively working on both new features and improvements to existing functionalities, ensuring that the platform remains robust and user-friendly.
posthog/hogql/functions/mapping.py
Reason for Review: This file was recently updated to add a new function 'toTypeName' to hogql. Understanding this function could provide insights into recent feature additions.
Analysis:
toTypeName
function indicates an enhancement to the type handling capabilities of hogql. This function likely maps various data types to their corresponding type names.posthog/hogql_queries/insights/funnels/utils.py
Reason for Review: This file was updated to support non-string funnel breakdowns. It is essential for understanding how the system handles different data types in funnel analyses.
Analysis:
get_funnel_order_class
: Determines the class to use based on the funnel order type.get_funnel_actor_class
: Determines the class for funnel actors based on visualization type and order.funnel_window_interval_unit_to_sql
: Converts funnel window interval units to SQL-compatible strings.get_breakdown_expr
: Constructs expressions for breakdowns, supporting both single and multiple breakdowns, with optional URL normalization.ast
and parse_expr
suggests dynamic query generation, which is powerful but should be carefully managed to avoid injection vulnerabilities.frontend/src/scenes/settings/project/Proxy.tsx
Reason for Review: This file has multiple updates related to proxy settings and UI improvements. It is crucial for understanding recent changes in proxy management.
Analysis:
Proxy
) handles displaying a table of proxy records and a form for adding new domains.isCloudOrDev
).LemonTable
, LemonButton
, and other UI components from the PostHog design system.valid
, erroring
, waiting
) with appropriate UI feedback (e.g., spinners, tooltips).useValues
, useActions
). The use of TypeScript enhances type safety.posthog/clickhouse/client/execute_async.py
Reason for Review: This file was updated for active CPU time tracking, which is important for performance monitoring and optimization.
Analysis:
QUERY_WAIT_TIME
, QUERY_PROCESS_TIME
) using Prometheus.OSCPUVirtualTimeMicroseconds
).QueryNotFoundError
, QueryRetrievalError
). The use of structured logging (structlog
) enhances observability.posthog/api/proxy_record.py
Reason for Review: This file has been frequently updated with fixes and features related to proxy records. It is significant for understanding backend changes in proxy management.
Analysis:
ProxyRecordSerializer
) for proxy records with appropriate read-only fields.ProxyRecordViewset
) with custom list, create, and destroy methods.generate_target_cname
).OrganizationAdminWritePermissions
) ensures proper access control.plugin-server/src/worker/ingestion/event-pipeline/extractHeatmapDataStep.ts
Reason for Review: This file was updated to fix heatmap data extraction issues. It is important for understanding how heatmap data is processed and validated.
Analysis:
extractHeatmapDataStep
) processes heatmap data from events and produces Kafka messages.replacePathInUrl
, isValidString
, isValidNumber
) enhance readability by encapsulating common checks.SCALE_FACTOR
).captureIngestionWarning
).Overall, the reviewed files exhibit good structure, organization, and code quality. Testing coverage should be comprehensive to ensure robustness across different scenarios.
toTypeName
function in posthog/hogql/functions/mapping.py
, do not mention any corresponding unit tests. Similarly, changes in posthog/hogql_queries/insights/funnels/utils.py
and other files lack explicit references to new or updated tests.posthog/hogql/functions/mapping.py
: Addition of toTypeName
function without mention of tests.posthog/hogql_queries/insights/funnels/utils.py
: Updates to support non-string funnel breakdowns without mention of tests.frontend/src/scenes/settings/project/Proxy.tsx
: Multiple updates related to proxy settings and UI improvements within a few days.posthog/api/proxy_record.py
: Frequent updates with fixes and features related to proxy records.posthog/hogql/functions/mapping.py
: The file is quite long (814 lines), suggesting it might be handling multiple responsibilities that could be broken down into smaller modules.posthog/clickhouse/client/execute_async.py
: While robust, further improvements in error handling could enhance reliability.