-
Notifications
You must be signed in to change notification settings - Fork 37
[v8] Add runtime analytics to User-Agent string #1293
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
nicknisi
wants to merge
11
commits into
version-8
Choose a base branch
from
nicknisi/runtime-info
base: version-8
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PR Summary
Enhanced User-Agent string analytics by adding runtime environment detection for improved debugging and analytics tracking across different JavaScript runtimes.
- Implemented new runtime detection utility in
src/common/utils/runtime-info.ts
with comprehensive environment support (Node.js, Deno, Bun, Edge) - Modified
createUserAgent()
insrc/workos.ts
to include runtime info likeworkos-node/8.0.0-beta.1 (node/v20.5.0)
- Added thorough test coverage in
src/common/utils/runtime-info.spec.ts
with 17 test cases - Implemented graceful fallbacks for version detection failures to ensure robustness
- Used cached detection mechanism from existing
env.ts
for minimal performance impact
4 files reviewed, 3 comments
Edit PR Review Bot Settings | Greptile
bd54a1a
to
eacd64d
Compare
4dbb78c
to
96089b3
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Add runtime and version detection to the WorkOS Node SDK User-Agent string to gather analytics about JavaScript runtime environments and versions being used by customers.
Changes
Core Implementation
src/common/utils/runtime-info.ts
- Detects runtime type and version across Node.js, Deno, Bun, Cloudflare Workers, and other environmentscreateUserAgent()
method insrc/workos.ts
to include runtime information in standard formatUser-Agent Format
Before:
workos-node/8.0.0-beta.1 MyApp: 1.0.0
After:
workos-node/8.0.0-beta.1 (node/v20.5.0) MyApp: 1.0.0
The new format follows standard User-Agent conventions with runtime information in parentheses, maintaining backward compatibility with existing analytics parsing.
Examples
workos-node/8.0.0-beta.1 (node/v20.5.0)
workos-node/8.0.0-beta.1 (node/v20.5.0) MyApp: 1.0.0
workos-node/8.0.0-beta.1 (deno/1.36.4)
workos-node/8.0.0-beta.1 (edge-light)
Testing
Unit Tests
getRuntimeInfo()
utility covering all runtime scenariosIntegration Tests
workos.spec.ts
with runtime info mockingBenefits
For WorkOS Analytics
For Customer Support
Technical Details
Runtime Detection
detectRuntime()
fromenv.ts
for performanceImplementation Approach
Risk Mitigation