keen-io/keen-io-bundle
Symfony bundle for integrating Keen IO analytics into your application. Configure project credentials and access Keen IO event tracking and querying services through the container, simplifying analytics instrumentation in Symfony apps.
HttpKernel base extension in favor of the DependencyInjection Extension base class) is a compatibility chore, not a feature — it tells you the package can still be loaded by newer Symfony container versions, but it does not make the bundle pattern Flex-native, and it does not change the maintenance picture. If the org is on Symfony 2.x/3.x, this remains a concrete marker of technical debt: end-of-life framework, pre-Flex bundle packaging, and a lightly maintained upstream client (17 stars, zero dependents, single-maintainer risk). Its presence in the dependency graph is a datapoint for a "migrate off legacy Symfony" roadmap item, not a reason to stay.Consider it only when all of the following hold:
Look elsewhere when:
To executives: This is plumbing, not a platform bet. It's a small Symfony add-on that lets our existing application send server-side events to Keen IO with a few lines of configuration. It saves roughly a day of engineering and creates no strategic lock-in — but it also creates no strategic advantage, and it remains effectively unmaintained upstream. The latest release (v1.8.0) is a single maintenance fix — dropping a deprecated Symfony base class — with no new features, no behavior change, and no impact on our decision. Recommendation: use it only as a stopgap if we are still a Keen customer on a legacy Symfony version; pair the decision with a dated exit plan — either migrate the application to a supported Symfony version and replace this wrapper with a first-party client, or migrate the analytics pipeline to a warehouse-first approach. The real question for this quarter is not "which bundle" but "is Keen still our analytics vendor."
To engineering: It's a DI wrapper: config tree plus a client factory around KeenClient-PHP. No retries, no batching guarantees, no schema, no observability beyond whatever the underlying client does. v1.8.0 only swaps the deprecated HttpKernel extension base class for the DependencyInjection one — budget zero migration effort, but also read nothing into it as a sign of active stewardship. Isolate it behind our own EventTracker interface so emission is swappable and mockable in tests, ensure it fails soft so analytics errors never surface to customers, and document that new services should not depend on the bundle directly. Assume we own this code even though we didn't write it — no upstream support path exists.
How can I help you explore Laravel packages today?