Recent issues highlight critical bugs affecting the usability of trends insights and data parsing, posing significant risks to the PostHog platform's core functionalities.
posthog/cdp/validation.py
).frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown--light.png
).frontend/src/scenes/pipeline/hogfunctions/templates/hog-templates.tsx
).hogvm/python/debugger.py
, hogvm/python/test/test_execute.py
).hogql_parser/HogQLParser.cpp
, hogql_parser/HogQLParser.h
).posthog/tasks/tasks.py
, posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py
).posthog/models/cohort/util.py
, posthog/hogql_queries/insights/trends/trends_query_runner.py
).frontend/__snapshots__/components-property-key-info--property-key-info--dark.png
).frontend/__snapshots__/scenes-app-insights--trends-line-edit--dark.png
).ee/api/test/test_billing.py
, frontend/src/scenes/billing/PlanComparison.tsx
).frontend/__snapshots__/scenes-other-billing-v2--billing-v-2-with-discount--dark.png
, frontend/src/scenes/billing/BillingLimit.tsx
).frontend/src/scenes/dashboard/DashboardReloadAction.tsx
).cypress/e2e/actions.cy.ts
, frontend/src/scenes/actions/actionEditLogic.tsx
).frontend/src/scenes/insights/utils.tsx
).frontend/src/lib/components/Cards/InsightCard/InsightCard.tsx
)..storybook/test-runner.ts
, frontend/__snapshots__/scenes-app-insights--trends-line-edit--dark.png
)..storybook/test-runner.ts
, frontend/__snapshots__/scenes-app-insights--funnel-historical-trends--dark.png
).posthog/batch_exports/http.py
, posthog/temporal/tests/batch_exports/test_backfill_batch_export.py
).posthog/temporal/common/heartbeat.py
, posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py
).frontend/src/layout/navigation-3000/sidepanel/panels/activity/SidePanelActivity.tsx
).frontend/src/scenes/teamActivityDescriber.tsx
).The PostHog development team has been highly active, focusing on both frontend enhancements and backend stability. Recent activities include bug fixes, performance optimizations, and new feature implementations. The team's collaborative efforts are evident from the variety of contributions across different modules, indicating a balanced approach to maintaining and improving the platform.
Severity: High (3/3)
Recent issues #22987 and #22982 highlight critical bugs affecting trends insights and data parsing. These bugs can severely impact user experience and trust in the analytics provided by the platform.
Severity: Medium (2/3)
Frequent rewrites in files like frontend/src/scenes/pipeline/hogfunctions/templates/hog-templates.tsx
and posthog/cdp/validation.py
suggest underlying instability or design flaws, increasing the risk of new bugs.
Severity: Medium (2/3)
Extended discussions in PRs #22975 and #22972 indicate prolonged disagreements, which can slow down development progress and affect team morale.
Severity: Medium (2/3)
Issues like #22971 lack clear specifications, leading to potential misunderstandings and misaligned expectations, which can delay feature delivery and require rework.
Enhanced Error Tracking Filtering (#22988):
Support for AND/OR Operands in Replay Filters (#22955):
Removal of Obsolete Feature Flags (#22954):
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
Neil Kakkar | ![]() |
2 | 4/3/1 | 10 | 428 | 42030 |
vs. last report | +1 | +3/+2/= | +9 | +420 | +41858 | |
Marius Andra | ![]() |
3 | 8/6/1 | 16 | 118 | 18514 |
vs. last report | = | +1/=/+1 | -22 | -41 | +4398 | |
Sandy Spicer | ![]() |
3 | 6/5/0 | 28 | 112 | 11695 |
vs. last report | -4 | -2/+1/-2 | +1 | +44 | +10028 | |
Ben White | ![]() |
3 | 16/13/1 | 25 | 121 | 9498 |
vs. last report | -2 | +10/+11/-2 | -31 | +50 | -8035 | |
Thomas Obermüller | ![]() |
5 | 15/13/1 | 20 | 221 | 7542 |
vs. last report | +2 | +3/+5/+1 | -2 | +154 | +4912 | |
Paul D'Ambra | ![]() |
3 | 18/16/1 | 26 | 81 | 4988 |
vs. last report | = | +2/+2/+1 | +9 | +62 | +4324 | |
Tomás Farías Santana | ![]() |
3 | 4/2/0 | 18 | 39 | 2973 |
vs. last report | +1 | =/-2/= | +9 | +18 | +1911 | |
github-actions | ![]() |
23 | 0/0/0 | 186 | 104 | 2788 |
vs. last report | -6 | =/=/= | -12 | +1 | +1328 | |
Tom Owers | ![]() |
3 | 7/6/0 | 13 | 31 | 2681 |
vs. last report | +1 | -2/-2/-1 | +3 | -29 | -252 | |
Julian Bez | ![]() |
3 | 12/8/2 | 11 | 42 | 2412 |
vs. last report | = | +8/+4/+1 | +2 | -5 | +1122 | |
timgl | ![]() |
3 | 3/2/1 | 8 | 10 | 2199 |
vs. last report | +1 | -3/-3/+1 | = | -34 | -2605 | |
David Newell | ![]() |
3 | 13/10/1 | 16 | 146 | 1589 |
vs. last report | +1 | +7/+6/-1 | +6 | +82 | +28 | |
Robbie | ![]() |
2 | 7/6/1 | 10 | 32 | 1335 |
vs. last report | -1 | +5/+5/+1 | +4 | +18 | +1061 | |
Zach Waterfield | ![]() |
2 | 5/4/0 | 14 | 92 | 1118 |
vs. last report | = | -5/-6/= | -1 | +18 | -481 | |
Eric Duong | ![]() |
2 | 2/4/0 | 10 | 35 | 1094 |
vs. last report | -4 | -10/-4/-1 | -8 | -49 | -1263 | |
Phani Raj | ![]() |
1 | 0/0/0 | 1 | 23 | 1065 |
vs. last report | = | -1/-1/= | = | +18 | +1019 | |
Brett Hoerner | ![]() |
2 | 2/3/0 | 4 | 20 | 767 |
vs. last report | = | -1/+2/= | +1 | +6 | +182 | |
Bianca Yang | ![]() |
2 | 0/0/0 | 6 | 6 | 513 |
Bianca Yang | ![]() |
1 | 3/2/1 | 2 | 7 | 383 |
vs. last report | -2 | -4/-4/+1 | -9 | -2 | +19 | |
Michael Matloka | ![]() |
3 | 10/8/0 | 12 | 40 | 379 |
vs. last report | -1 | +2/+1/= | +1 | -20 | -2223 | |
Tiina Turban | ![]() |
2 | 5/5/0 | 6 | 11 | 371 |
vs. last report | -1 | -1/+2/-1 | = | -9 | -553 | |
Juraj Majerik | ![]() |
2 | 3/2/0 | 4 | 6 | 233 |
vs. last report | +1 | -1/-2/= | = | -9 | +120 | |
Raquel Smith | ![]() |
3 | 9/6/3 | 8 | 224 | 124 |
vs. last report | -1 | -1/-1/+3 | -6 | +173 | -694 | |
Dylan Martin (dmarticus) | 1 | 1/0/0 | 4 | 4 | 91 | |
vs. last report | -1 | -3/-3/= | = | -24 | -786 | |
Frank Hamand | ![]() |
2 | 1/2/0 | 3 | 6 | 84 |
vs. last report | = | -5/-3/= | -4 | -6 | -121 | |
PostHog Bot | ![]() |
2 | 5/4/0 | 5 | 3 | 74 |
vs. last report | -3 | -3/=/-4 | -3 | +1 | -22 | |
None (dependabot[bot]) | 6 | 6/0/0 | 6 | 2 | 59 | |
Marcus Hof | ![]() |
2 | 3/2/1 | 7 | 3 | 37 |
Joe Martin | ![]() |
1 | 1/1/0 | 1 | 1 | 8 |
ted kaemming | ![]() |
1 | 1/1/0 | 1 | 1 | 3 |
vs. last report | -1 | -1/=/= | -2 | -2 | -90 | |
Edward Hartwell Goose (edhgoose) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | = | =/=/= | = | = | = | |
Nikita Vorobev (nikitaevg) | 0 | 1/0/0 | 0 | 0 | 0 | |
vs. last report | -1 | =/=/= | -1 | -23 | -716 |
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.
posthog/cdp/validation.py
).frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown--light.png
).frontend/src/scenes/pipeline/hogfunctions/templates/hog-templates.tsx
).hogvm/python/debugger.py
, hogvm/python/test/test_execute.py
).hogql_parser/HogQLParser.cpp
, hogql_parser/HogQLParser.h
).posthog/tasks/tasks.py
, posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py
).posthog/models/cohort/util.py
, posthog/hogql_queries/insights/trends/trends_query_runner.py
).frontend/__snapshots__/components-property-key-info--property-key-info--dark.png
).frontend/__snapshots__/scenes-app-insights--trends-line-edit--dark.png
).ee/api/test/test_billing.py
, frontend/src/scenes/billing/PlanComparison.tsx
).frontend/__snapshots__/scenes-other-billing-v2--billing-v-2-with-discount--dark.png
, frontend/src/scenes/billing/BillingLimit.tsx
).frontend/src/scenes/dashboard/DashboardReloadAction.tsx
).cypress/e2e/actions.cy.ts
, frontend/src/scenes/actions/actionEditLogic.tsx
).frontend/src/scenes/insights/utils.tsx
).frontend/src/lib/components/Cards/InsightCard/InsightCard.tsx
)..storybook/test-runner.ts
, frontend/__snapshots__/scenes-app-insights--trends-line-edit--dark.png
)..storybook/test-runner.ts
, frontend/__snapshots__/scenes-app-insights--funnel-historical-trends--dark.png
).posthog/batch_exports/http.py
, posthog/temporal/tests/batch_exports/test_backfill_batch_export.py
).posthog/temporal/common/heartbeat.py
, posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py
).frontend/src/layout/navigation-3000/sidepanel/panels/activity/SidePanelActivity.tsx
).frontend/src/scenes/teamActivityDescriber.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 dynamic CNAME targets, improved query performance, and better handling of async queries. 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 7 days ago, there has been significant activity in the repository. Numerous new issues have been created, and several issues have been closed. This indicates ongoing development and maintenance efforts.
Issue #22989: refactor(insights): query based insight usage reporting
Issue #22988: feat: error tracking filtering
Issue #22987: fix: histogram breakdown label for the null and other values
Issue #22982: Breakdown format value problem invalid JSON
Issue #22978: Actors query do not take actions filter into account
Issue #22977: feat: Refactor Hog executor
Issue #22974: chore: cleanup css vars
Issue #22972: fix(properties): avoid adding empty property filters
Issue #22971: Let me edit an individual user's feature flag values, both via UI and API
Issue #22970: feat: new compare plans table - showing all products
Issue #22986: chore: remove log line
Issue #22985: feat: faster ingestion warnings
Issue #22984: chore(deps): Update posthog-js to 1.139.2
Issue #22983: fix: Fix breakdown_value not in list issue
Issue #22981: Cohort using action does not return users
Issue #22980: feat(hog): empty, not empty
Issue #22979: feat(insights): Move dashboard tile async load out of feature flag
Issue #22976: fix(hogvm): if without else, add base64 and url encoding/decoding
Issue #22975: fix: ignore replays with null first url*
10 . * * Issue # 22973 * * : fix : fix celery queue type error - * * Description * * : Fixed type error in celery queue configuration . - * * Significance * * : Ensures correct operation of celery queues .
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 7 days ago, there has been significant activity in the PostHog/posthog repository. Numerous pull requests (PRs) have been opened, with various enhancements, bug fixes, and new features being introduced. Below is a detailed report of the changes:
PR #22975: fix: ignore replays with null first url
PR #22974: chore: cleanup css vars
PR #22972: fix(properties): avoid adding empty property filters
PR #22970: feat: new compare plans table - showing all products
PR #22962: feat: Remove groups properties and created from each event
PR #22960: chore(deps): bump braces from 3.0.2 to 3.0.3 in /plugin-server
braces
package to address security vulnerabilities.PR #22957: feat: More Hog templates
PR #22955: feat: support AND / OR operands in replay filters
PR #22954: chore: Remove feature flags for WEB_ANALYICS, WEB_ANALYTICS_SAMPLING, DATANODE_CONCURRENCY_LIMIT, SESSION_TABLE_PROPERTY_FILTERS
Other notable open PRs include improvements to surveys branching UI (#22935), upgrading Python to version 3.11 (#22932), bringing SQL into the data warehouse scene (#22929), and refactoring insight logic (#22924).
There have been no notable closed pull requests since the last report.
Overall, the recent activity indicates an active development cycle aimed at both expanding capabilities and ensuring the reliability of the platform.
This PR addresses an issue in the PostHog project where session recordings with null first URLs were being listed. These recordings indicate incomplete sessions that cannot be played back, causing confusion for users. The PR aims to filter out these incomplete recordings from the list.
Code Changes:
first_url
is null._having_predicates
method in session_recording_list_from_filters.py
to add a predicate checking for non-null first_url
.HAVING
clauses in various SQL queries within session_recording_list_from_replay_summary.py
and other related files to include the condition s.first_url is not null
.Test Updates:
first_url
.first_url
are not included in the results.Code Readability:
Test Coverage:
Performance Considerations:
HAVING s.first_url is not null
) might have a minimal impact on query performance. However, given that it simplifies user experience by removing incomplete sessions, this trade-off seems justified.Best Practices:
Potential Issues:
The PR effectively improves user experience by filtering out incomplete session recordings with null first URLs. The code changes are well-implemented, maintaining readability and performance. Test coverage is comprehensive, ensuring robustness of the new functionality. Overall, this PR is a positive contribution to the PostHog project, addressing a user-facing issue in a clear and maintainable way.
frontend/src/scenes/pipeline/destinationsLogic.tsx
kea
, lib/api
, and various types from ~/types
.kea
library, which is a state management library for React.kea-loaders
to load plugins, plugin configurations, batch export configurations, and hog function templates.afterMount
to load initial data.frontend/src/scenes/pipeline/hogfunctions/HogFunctionInputs.scss
var(--radius)
) makes it easier to maintain consistent styling across the application.frontend/src/scenes/pipeline/hogfunctions/HogFunctionInputs.tsx
react
, kea
, and custom components.useAutocompleteOptions
: Custom hook to generate autocomplete options for the JSON editor.JsonConfigField
: Component for editing JSON configuration with autocomplete support.DictionaryField
: Component for editing dictionary-type inputs.HogFunctionInput
: Main component that renders different input fields based on the schema type.posthog/api/hog_function.py
HogFunctionMinimalSerializer
: Serializer for minimal representation of HogFunction.HogFunctionSerializer
: Serializer for detailed representation of HogFunction with validation methods.HogFunctionViewSet
: Defines a view set for managing HogFunctions with custom actions for icons.posthog/api/plugin.py
_update_plugin_attachments
, _fix_formdata_config_json
, etc.: Helper functions for handling plugin attachments and form data.PluginSerializer
: Serializer for Plugin model with custom methods for URL and organization name.PluginConfigSerializer
: Serializer for PluginConfig model with custom methods for config and error handling.PluginViewSet
: Defines a view set for managing Plugins with custom actions for repository, source, etc.PipelineTransformationsViewSet
, etc., inherit from PluginViewSet or PluginConfigViewSet.posthog/api/test/test_hog_function.py
frontend/src/scenes/cohorts/activityDescriptions.tsx
nameOrLinkToCohort
: Helper function to generate a link or display name for a cohort.cohortActivityDescriber
: Function to describe cohort activities based on log items.posthog/api/activity_log.py
ActivityLogSerializer
: Serializer for ActivityLog model with custom methods for unread status.ActivityLogPagination
: Custom pagination class for activity logs.ActivityLogViewSet
: Defines a view set for managing activity logs with custom actions like important_changes, bookmark_activity_notification, etc.ServerTimingsGathered
) to gather server timings.ServerTimingsGathered
) enhances performance monitoring capabilities by gathering server timings during API calls.posthog/api/cohort.py
The file defines serializers (CohortSerializer
), viewsets (CohortViewSet
), utility functions (e.g., insert_cohort_people_into_pg),
and other helper functions related to cohort management in PostHog's API.
The structure includes:
The quality can be assessed based on several factors:
Readability:
Maintainability:
Documentation/Comments: While there are some inline comments explaining specific parts; additional docstrings at class/function level would enhance understanding especially when dealing with complex logic,
4.Type Safety & Validation: Extensive use of DRF serializers ensures robust validation mechanisms before data gets processed/stored in database, Type hints provide additional safety during development time itself,
5.Performance Considerations: Efficient querying techniques like prefetch_related_objects help optimize database access patterns thereby improving overall performance,
posthog/models/activity_logging/activity_log.py
The file defines models (ActivityLog
), utility functions (e.g., changes_between),
and other helper functions related to activity logging in PostHog's backend system.
The structure includes:
1.Import statements from Django ORM; Python standard libraries; PostHog models/utilities/constants etc., 2.ActivityLog model class that represents an activity log entry within PostHog's database schema, 3.Various utility functions related to activity logging (e.g., changes_between), 4.Helper classes like ActivityDetailEncoder which extends JSONEncoder functionality,
The quality can be assessed based on several factors:
1.Readability: The file is relatively long (447 lines) but seems well-organized with clear separation between different sections (imports/models/utilities/helpers). Proper naming conventions make it easier to understand what each function or class does at first glance,
2.Maintainability: Modular design allows individual components (like models or utilities)to be modified without affecting others significantly, Extensive use of Django ORM features ensures consistency across different parts of the application, However; given its length; breaking down this file into smaller modules might improve maintainability further by reducing cognitive load on developers working on it,
3.Documentation/Comments: While there are some inline comments explaining specific parts; additional docstrings at class/function level would enhance understanding especially when dealing with complex logic,
4.Type Safety & Validation: Extensive use of Django ORM ensures robust validation mechanisms before data gets processed/stored in database, Type hints provide additional safety during development time itself,
5.Performance Considerations: Efficient querying techniques like select_related help optimize database access patterns thereby improving overall performance,
Overall these files demonstrate good coding practices such as modularity/readability/type-safety/validation/performance considerations etc., However; they could benefit further by adding more documentation/comments/breaking down larger files into smaller ones where possible etc.,
Severity: High (3/3)
Rationale The recent issues #22987 and #22982 highlight critical bugs affecting the usability of trends insights and data parsing, which are core functionalities of the PostHog platform. These issues can severely impact user experience and trust in the analytics provided by the platform.
Next Steps
Severity: Medium (2/3)
Rationale
There have been multiple rewrites of the same source code files within a short period, particularly in frontend/src/scenes/pipeline/hogfunctions/templates/hog-templates.tsx
and posthog/cdp/validation.py
. This could indicate underlying issues with code stability or design.
Next Steps
Severity: Medium (2/3)
Rationale There has been evidence of prolonged disagreement or argumentative engagement among team members, particularly in discussions related to PRs #22975 and #22972. This can slow down development progress and affect team morale.
Next Steps
Severity: Medium (2/3)
Rationale There are instances where high-priority issues or features lack clear specifications or direction, such as issue #22971 regarding editing individual user's feature flag values.
Next Steps