Skip to content
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

Develop docs content #10330

Merged
merged 914 commits into from
Jun 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
914 commits
Select commit Hold shift + click to select a range
76f0dab
fix(apidocs): update note about full path (#963)
JoshFerge Jun 8, 2023
6e177b0
Update ports.mdx (#967)
untitaker Jun 12, 2023
4a49fd5
refactor(dynamic-sampling): rename uniform bias (#966)
obostjancic Jun 12, 2023
2b23f82
Update location of sentry frontend (#935)
spalmurray Jun 12, 2023
5540f6e
ref: replace freight with gocd (#968)
joshuarli Jun 12, 2023
3e7f7cd
docs(api): Update api instructions (#969)
schew2381 Jun 14, 2023
be613d3
fix: Update link to Dockerfile in index.mdx (#972)
kamilogorek Jun 22, 2023
5e70a7d
Mention default value for op can be usesd in SDKs as well (#975)
adinauer Jun 22, 2023
b4ae9f2
docs(api): Change to right serializer (#974)
schew2381 Jun 22, 2023
d3fe810
Document GraphQL client errors (#973)
marandaneto Jun 23, 2023
8051fd1
Update link to cookie-sync on the chrome store. (#978)
ryan953 Jun 25, 2023
adb3654
docs(sdk): Add insufficient_data reason for client discard (#981)
Zylphrex Jun 26, 2023
6107d53
feat(crons): Add trace_id and config to check-in payload (#982)
rjo100 Jun 26, 2023
f07cfa3
feat(env): Add debug info for getsentry startup issue (#984)
leedongwei Jun 26, 2023
4c6402c
Fragments are URI only - Browser SDKs (#979)
marandaneto Jun 27, 2023
1a5ab69
fix(trace-origin): Should rarely change (#988)
philipphofmann Jun 29, 2023
3ad46d9
RTL updates are done (#989)
ryan953 Jun 29, 2023
52591d2
Trace Origin: Clarify integration part (#987)
philipphofmann Jun 30, 2023
707696a
feat: Make SQL logging snippet better (#990)
markstory Jul 4, 2023
e5c98d5
fix(python): Add information about `getsentry/pypi` to docs on Python…
lobsterkatie Jul 7, 2023
0c41bf6
Update span-data-conventions.mdx (#970)
brustolin Jul 10, 2023
cd5572f
updated ttid/ttfd docs for app start timestamp (#992)
stefanosiano Jul 10, 2023
69939dc
Fix typo: Removed an extra 'the' in index.mdx file
sanjayprashadhkr Jul 10, 2023
04e6fa0
Update check-ins.mdx (#993)
tonyo Jul 10, 2023
c3e6a3a
docs(issue-platform): Add docs for writing a detector (#964)
wedamija Jul 12, 2023
a96d62a
Fix sentence in performance/opentelemetry (#996)
sentrivana Jul 13, 2023
429cb8f
docs(api): Add other example (#976)
schew2381 Jul 17, 2023
e03019f
fix(frontend): Better code example and explanation for network reques…
malwilley Jul 18, 2023
4a5d53f
doc(env): More details for metrics dev env (#999)
jjbayer Jul 20, 2023
6c671fe
docs(api): Improve documentation instructions (#1002)
schew2381 Jul 25, 2023
afe20a2
Update issue-platform.mdx (#1004)
wedamija Jul 26, 2023
111e005
Update issue-platform.mdx (#1005)
wedamija Jul 26, 2023
e806c6a
GraphQL performance spec (#1001)
marandaneto Jul 27, 2023
272ae5d
Mention request/response bodies for GraphQL should be guarded by a fl…
adinauer Jul 27, 2023
e429694
Add hard stop for 23.6.2 due to django upgrade (#1006)
hubertdeng123 Jul 31, 2023
5d842a5
feat(docs): Add getting Started docs guide (#1009)
priscilawebdev Aug 2, 2023
a61fc9e
Update span-operations.mdx (#861)
cleptric Aug 4, 2023
53249a3
devenv: remove Docker.app (#1011)
joshuarli Aug 4, 2023
811767c
Fix typo in testing.mdx (#1012)
michellewzhang Aug 7, 2023
581a8c9
add a "kafka consumers in sentry" doc (#1014)
untitaker Aug 8, 2023
938969b
Add new database span data (#1016)
AbhiPrasad Aug 9, 2023
aeaf046
fix: add line breaks in self-hosted overview (#1015)
RafDevX Aug 11, 2023
bc5c853
Update github.mdx: Adopt permissions table to actual GitHub's wording…
josefglatz Aug 11, 2023
89875a7
devenv: update createuser stuff (#1017)
joshuarli Aug 14, 2023
9264c3c
docs(api): Overhaul instructions with step-by-step guide (#1007)
schew2381 Aug 16, 2023
a0d315d
Add Discord integration docs (#1018)
spalmurray Aug 17, 2023
3ce43a7
(dev-doc-detector-threshold-configs): Updated issue platform detector…
Abdkhan14 Aug 17, 2023
6342100
Added response context (#1028)
antonpirker Aug 29, 2023
cec7c9d
docs(apis): Adding API basics (#1027)
sentaur-athena Aug 29, 2023
b18243b
fix: 1MB limit is after decompression (#1025)
jredmond-sentry Aug 29, 2023
0df26da
feat: Add Guidelines for SDK Setup Wizards (#1030)
Lms24 Sep 8, 2023
f1dacad
docs(api): Add notes on designing new APIs (#1032)
sentaur-athena Sep 12, 2023
4292284
docs(api): Update publishing docs (#1033)
sentaur-athena Sep 12, 2023
e8f306b
ref(discord): Add OAuth2 redirect URI (#1035)
ceorourke Sep 14, 2023
731da45
docs: Document how to setup hook tests that rely on useApiQuery (#1036)
ryan953 Sep 15, 2023
e6ed746
docs(dev-ui): Update paragraph about dev-ui, domains and cookies (#1037)
ryan953 Sep 19, 2023
e845416
docs(dev env): Add note about `.zshrc` to `make setup-pyenv` section …
lobsterkatie Sep 21, 2023
26b1834
chore(docs): Update instructions with body param info (#1039)
schew2381 Sep 25, 2023
c7fcbb3
chore(docs): Clarify private fields on response schema (#1041)
schew2381 Sep 28, 2023
ed53c73
include unique name bug (#1044)
schew2381 Oct 3, 2023
19d62c5
update migration instructions w/ github action to generate sql (#1043)
schew2381 Oct 3, 2023
8db51b0
remove some obsolete sections from testing.mdx (#1045)
asottile-sentry Oct 4, 2023
30318c6
Update transaction clustering docs (#1047)
jjbayer Oct 6, 2023
c0958e2
feat: Add example for adding a column to a large table (#1046)
markstory Oct 6, 2023
4402aad
Add more GraphQL span ops (#1049)
sentrivana Oct 10, 2023
0659886
Update span-data-conventions.mdx (#1050)
DominikB2014 Oct 11, 2023
83b34fe
Update backend typing section (#1052)
armenzg Oct 16, 2023
f61184a
feat: Simpler column add migration guide (#1051)
markstory Oct 16, 2023
0957940
Add missing slash, to do like other examples (#980)
williamdes Oct 16, 2023
9b580cb
docs: Add note about adding celery arguments (#1055)
scttcper Oct 17, 2023
a2e7da2
ref(docs): correct decoded body size name in docs (#1059)
DominikB2014 Oct 18, 2023
ad5e3bb
chore(docs): Add model serializer ordering and nested + inline serial…
schew2381 Oct 18, 2023
7614c4a
spans: add thread label and id to span data conventions (#1056)
JonasBa Oct 18, 2023
b9b80b2
Add notes for smtp server removal (#1060)
markstory Oct 19, 2023
5f451d3
Fix typo in kafka-consumer-groups command in self-hosted troubleshoot…
bonyuta0204 Oct 19, 2023
8d40a5e
docs: Add note to restart snuba after enabling relay (#1058)
Dav1dde Oct 23, 2023
623d8fa
Add metric alert feature flag to discord doc (#1062)
Oct 23, 2023
eed1761
Link /event-payloads is dead, changing to /sdk/event-payloads (#1064)
Oct 26, 2023
eef90cc
feat: Replace docker-compose with "docker compose" (#1061)
GeekCornerGH Oct 31, 2023
e27886c
release-bot can have "elevated bot" instead of admin (#1068)
asottile-sentry Oct 31, 2023
284ee29
fix(docs): Move alert next to options it references (#1067)
mrduncan Oct 31, 2023
d6ae97b
fix: Be more explicit about system.url-prefix requirements (#1071)
markstory Nov 3, 2023
ad622b2
feat: Add DDM documentation
matejminar Nov 3, 2023
7a41ed8
backlink from internal metrics to ddm
matejminar Nov 3, 2023
5925194
update sdk version
matejminar Nov 3, 2023
b60f50c
recommend sdks
matejminar Nov 3, 2023
ed135a8
enable metrics experiment
matejminar Nov 3, 2023
87af321
feat: devenv (#1069)
joshuarli Nov 3, 2023
486870a
SDKs: Distributed Tracing (#1074)
antonpirker Nov 6, 2023
e6c51cd
ref(mail): Add mail preview docs (#1072)
ceorourke Nov 6, 2023
ab3cbb8
feat(features): Document trial plan tiers (#1075)
gggritso Nov 6, 2023
5201f50
ref(discord): Remove mentions of feature flags for Discord (#1077)
Nov 7, 2023
61014ba
Fix SQL command quotes (#1073)
williamdes Nov 7, 2023
9176c1e
Update sending-metrics-sdk.mdx (#1078)
mitsuhiko Nov 8, 2023
cbba443
docs(issue-platform): Update docs from issue platform support additio…
Nov 9, 2023
7739599
remove mention of staging in workflow docs (#1080)
asottile-sentry Nov 11, 2023
c99ee16
Remove `user.segment` (#1082)
cleptric Nov 13, 2023
f504f76
Fixing referenced make command (#1083)
IanWoodard Nov 13, 2023
ef85ead
docs(crons): Document check-in envelope size limit (#1086)
rjo100 Nov 16, 2023
0201381
Update HTTP Client Integration (#1084)
cleptric Nov 17, 2023
d2a5610
Add timer to sending-metrics-sdk (#1089)
ale-cota Nov 21, 2023
ac41a55
Cleaned up some outdated documentation (#1093)
antonpirker Nov 24, 2023
0d80667
fix: Update MS Teams installation instructions (#1094)
dashed Nov 24, 2023
96062a3
ref(devserver): Recommend dev.getsentry.net for devserver (#1095)
evanpurkhiser Nov 28, 2023
515f124
feat(https): Add HTTPS setup for devserver (#1096)
evanpurkhiser Nov 28, 2023
13f98b1
doc(backup): Update relocation docs (#1097)
azaslavsky Dec 1, 2023
fa4b22b
feat: Add frames to span data conventions (#1099)
philipphofmann Dec 6, 2023
5de9691
feat(ddm): Document ddm alerts and dashboards + sample rate
matejminar Dec 6, 2023
4c71922
fix: Update URL to pagerduty integration setup (#1100)
markstory Dec 6, 2023
7bd2f00
Added metrics development docs (#1098)
mitsuhiko Dec 7, 2023
6799d04
feat(ddm): Employee org opt-in
matejminar Dec 11, 2023
489f3cf
fix: fix typo on issue platform (#1106)
Dec 11, 2023
e8cd67c
Add `backpressure` client report reason (#1107)
adinauer Dec 12, 2023
9da8ff6
feat(crons): Add issue thresholds to MonitorConfig (#1108)
rjo100 Dec 13, 2023
2873297
Fix typo (#1109)
cdelst Dec 14, 2023
9c6daaf
docs(crons): Add thresholds to config example (#1111)
rjo100 Dec 18, 2023
a81585a
Rename DDM to Sentry Developer Metrics (#1112)
ale-cota Dec 19, 2023
363f8ce
Add code span data attributes (#1113)
AbhiPrasad Dec 19, 2023
ec21ac0
feat: Rename delightful developer metrics to sentry developer metrics
matejminar Dec 19, 2023
84e924d
docs(stories): Add some initial docs for the /stories/ Component Libr…
ryan953 Dec 21, 2023
9e2d9ac
docs(stories): Add a note about using storyBook() with hooks and HoC …
ryan953 Dec 22, 2023
b6c1e49
ref: remove outdated instructions about uwsgi (#1119)
asottile-sentry Jan 2, 2024
8d7ad0e
js-tests: Update some docs related to JS tests (#1121)
ryan953 Jan 8, 2024
95c7066
Port "Frontend PR Previews" doc from notion (#1120)
ryan953 Jan 8, 2024
8682608
docs(ui-lib): Write a blurb about the <ThemeToggle> UI Component Libr…
ryan953 Jan 8, 2024
cdf73ed
Update metrics.mdx (#1123)
cleptric Jan 9, 2024
54c03c7
Update fidelity-and-biases.mdx (#1085)
TBS1996 Jan 10, 2024
b737be0
docs(issue-platform): Clarify documentation for StatusChangeMessage p…
snigdhas Jan 11, 2024
63dca89
Add Android emulator localhost troubleshooting (#1129)
philipphofmann Jan 16, 2024
2255f5d
Update backup/restore docs to allow parameterization for scripts (#1130)
hubertdeng123 Jan 17, 2024
a9cb4fa
Add new/missing context fields (#1131)
romtsn Jan 17, 2024
e2b986a
Add new thresholds to monitor config payload (#1132)
AbhiPrasad Jan 17, 2024
a03f3a4
Indicate that user segment is deprecated (#1133)
AbhiPrasad Jan 17, 2024
f9823e1
Revert "Add new thresholds to monitor config payload" (#1134)
AbhiPrasad Jan 17, 2024
b9a5747
docs(csp): remove if condition for CSP middleware (#1137)
oioki Jan 22, 2024
907600d
remove prop types (#1138)
JonasBa Jan 23, 2024
84de1ad
fix: Fix feature flag local development file path (#1135)
jennmueng Jan 24, 2024
86beefb
docs(self-hosted): revamp self hosted related documentation (#1117)
aldy505 Jan 24, 2024
8e6d58d
Update feature flags and screenshot (#1143)
ale-cota Jan 30, 2024
cdf5413
nit(api): Change yarn start to yarn dev in instructions (#1147)
schew2381 Feb 9, 2024
cb4666b
docs(self-hosted): Document `PyMemcachedCache` breaking change (#1146)
azaslavsky Feb 9, 2024
addae12
docs(backup): Describe encryption (#1145)
azaslavsky Feb 9, 2024
f8b902b
docs(grouping): Fix a few typos in grouping docs (#1151)
mrduncan Feb 12, 2024
8b13299
Update case naming (#1155)
markstory Feb 13, 2024
09f0d83
Documentation of Hub&Scope refactoring (#1158)
antonpirker Feb 14, 2024
c167c34
docs: resolve typo in Breaking Changes part of self-hosted docs (#1149)
pataar Feb 14, 2024
4f447fd
nit(api): fix small typos on API page (#1159)
isabellaenriquez Feb 15, 2024
6976794
feat(contexts): Describe additional fields which can be set by SDKs i…
olksdr Feb 15, 2024
6f91a95
Add frames delay (#1153)
philipphofmann Feb 15, 2024
bc5b798
Update github.mdx (#1142)
crayx Feb 15, 2024
975ccce
Document envelope item size limits (#1164)
jjbayer Feb 21, 2024
8705b6c
feat: Document new multi craft config feature (#1166)
Lms24 Feb 21, 2024
7c5c711
docs(self-hosted): enabling preview features section (#1148)
aldy505 Feb 23, 2024
6daec5b
Removed obsolete warning (#1168)
antonpirker Feb 26, 2024
a6aa3aa
Update metrics.mdx (#1171)
cleptric Feb 28, 2024
8687523
Update metrics tag key regex (#1172)
markushi Feb 28, 2024
676f79d
Update metrics.mdx (#1174)
cleptric Feb 29, 2024
bf61fd2
Add pagination section for apis (#1173)
ykamo001 Feb 29, 2024
34dbbed
Worked on the description of the hubs and scopes refactoring (#1177)
antonpirker Mar 1, 2024
2c201f5
chore(metrics): Clarify SDK implementation details (#1178)
markushi Mar 5, 2024
dcf9fb3
docs(environment): Add devservices script to setup (#1179)
s1gr1d Mar 5, 2024
373b5d2
fix(ddm): Fix docs for metrics (#1181)
iambriccardo Mar 7, 2024
175bb52
Reference Frontend Development Instructions (#1165)
smeubank Mar 7, 2024
4b14b81
Hubs and Scopes changes reasoning (#1182)
adinauer Mar 8, 2024
0071870
chore(metrics): Clarify metrics span seeking/creating mode (#1185)
markushi Mar 8, 2024
ad9c16f
WIP hubs/scopes clarifications (#1184)
adinauer Mar 11, 2024
e78a98f
Update span-data-conventions.mdx (#1183)
colin-sentry Mar 11, 2024
2beea72
docs(self-hosted): csrf troubleshooting (#1191)
aldy505 Mar 13, 2024
859562c
chore: Expand DSN docs to cover subdomain semantics. (#1190)
markstory Mar 13, 2024
a66e684
Update index.mdx (#1187)
smeubank Mar 14, 2024
5a5e2c0
Unified API Disclaimer (#1193)
smeubank Mar 15, 2024
e5d9b53
Document POTEL learnings from Java research (#1189)
adinauer Mar 19, 2024
a82f3f3
Rectify import of Feature component (#1200)
armenzg Mar 21, 2024
1e1aab8
feat(feature): Describe permanent vs temporary features (#1201)
evanpurkhiser Mar 21, 2024
7d3d06d
chore(otel): Update links to semantic conventions for Otel #1196
leeandher Mar 25, 2024
5526a07
add disclaimer that full backups are not officially supported (#1195)
hubertdeng123 Mar 25, 2024
7e508de
Add view hierarchy to attachment types (#1199)
krystofwoldrich Mar 25, 2024
fe5da51
feat: Add migration deployment documentation (#1203)
markstory Mar 26, 2024
07af8c2
feat(sdk): Add name spaces for metrics rate limits (#1205)
jan-auer Mar 28, 2024
163bdce
Add a mapping from old to new hub API (#1202)
sentrivana Apr 3, 2024
f1ef628
Update rate-limiting.mdx (#1212)
cleptric Apr 4, 2024
75fb659
Meric Normalization (#1213)
cleptric Apr 4, 2024
93e52f5
Update metrics.mdx (#1214)
cleptric Apr 4, 2024
be575d4
feat(metrics): Mobile aggregator memory footprint (#1209)
philipphofmann Apr 5, 2024
9215e7f
Correct attribute name for namespaces (#1217)
s1gr1d Apr 8, 2024
4ec6c34
fix links to data category (#1220)
s1gr1d Apr 9, 2024
1005699
W3C traceparent (#1136)
cleptric Apr 9, 2024
f4514bb
Metric Normalization note on w (#1219)
philipphofmann Apr 10, 2024
1cc3de1
fixed typo (#1216)
markiemm Apr 10, 2024
d77cdb5
fix(ddm): Remove discouraging of gauges (#1224)
iambriccardo Apr 15, 2024
dd8f7ba
Add expected User-Agent format to SDK docs (#1222)
kahest Apr 18, 2024
e25a987
Add link to live workshop about migrating to SaaS (#1231)
lizokm Apr 18, 2024
45bbbee
Add docs for options based feature flags (#1233)
wedamija Apr 19, 2024
3929a69
Clarify feature docs a little more (#1237)
wedamija Apr 22, 2024
a8ec54b
docs(frontend): Update "Using Hooks" docs to reflect the latest state…
ryan953 Apr 22, 2024
b69c8e6
docs(frontend): Remove DefaultProps page (#1239)
ryan953 Apr 22, 2024
6982d06
docs(frontend): Remove stale content from Frontend main docs page (#1…
ryan953 Apr 22, 2024
ada44ea
chore(lockreason): Update Lock Reason docs (#1236)
kahest Apr 23, 2024
8579f1e
Cache Integration (#1223)
cleptric Apr 23, 2024
a7f6e81
Add SDK features to event payload (#1244)
philipphofmann Apr 24, 2024
1102279
Clarify `cache.success` (#1246)
cleptric Apr 24, 2024
1bbebf1
feat: Add `app.app_arch` context (#1247)
timfish Apr 24, 2024
7708eda
feat(crons): Add owner to check-ins sdk docs (#1249)
evanpurkhiser Apr 24, 2024
6c9f366
feat: add Linux distributions to the os context (#1227)
supervacuus Apr 25, 2024
5446776
fix(handbook): add type decl section (#953)
JonasBa Apr 25, 2024
5dd111d
docs(frontend): Add a page for Using Styled Components (#1242)
ryan953 Apr 25, 2024
17c1b1e
feat(sdk): Add backpressure page (#1225)
sl0thentr0py Apr 29, 2024
625ab69
feat: add NGINX as a reverse proxy example (#1257)
oioki Apr 29, 2024
b0c0373
docs(self-hosted): avoid version confusion by specifying that we assu…
aldy505 Apr 29, 2024
2d4c142
Update index.mdx grammar (#1228)
geoffg-sentry May 1, 2024
bc533bf
Add ttid/ttfd contribution flags to span data convention (#1250)
markushi May 3, 2024
c89d88e
Queue Integration (#1248)
cleptric May 6, 2024
7479205
Made empty pages for all performance modules. To be filled in separat…
antonpirker May 7, 2024
ce8367a
chore(feature-flags): Remove references to flagr (#1260)
wedamija May 7, 2024
2788253
feat(perf): Add documentation for Requests instrumentation (#1261)
gggritso May 8, 2024
c837598
feat: Add multiregion overview docs (#1266)
markstory May 13, 2024
958e41d
feat: Add silo mode local development server and migration docs (#1271)
markstory May 13, 2024
1268700
feat: Add documentation for several control silo subsystems (#1272)
markstory May 13, 2024
62dc3b2
docs(self-hosted): recommend users to rerun install.sh for restart (#…
aldy505 May 13, 2024
c8f9008
ref(sdk): Update examples with canonical name for logentry (#1275)
jan-auer May 14, 2024
b58c9e3
feat: Add docs for cross-region RPC (#1273)
markstory May 14, 2024
9f8c2fa
feat(hybrid-cloud): Adds Outbox documentation (#1274)
GabeVillalobos May 14, 2024
c824bff
feat(hybridcloud) Add documentation for testing helpers (#1276)
markstory May 14, 2024
87436f8
feat(hybridcloud) Expand architecture docs (#1277)
markstory May 14, 2024
d8b6b54
docs(trace-view): Updating docs referencing the trace view. (#1270)
Abdkhan14 May 15, 2024
65afc3b
feat: Add docs for foreign keys, tombstones and replicated models (#1…
markstory May 16, 2024
247e3f9
Add missing slash in caddy path_regexp (#1279)
lukasbableck May 20, 2024
80b29ca
Add queries module documentation (#1282)
gggritso May 21, 2024
c0d0fc9
Adds some dev docs around webvital transaction and span conventions (…
edwardgou-sentry May 21, 2024
2ba6a9a
Performance Modules are now called Insights Modules (#1287)
antonpirker May 21, 2024
87f3b22
feat(llm-monitoring): Docs for LLM monitoring (#1285)
colin-sentry May 21, 2024
d89bd22
feat(frontend): Publish 'Design Tenets' doc (#1258)
ryan953 May 21, 2024
ab1b438
feat(metrics): Add maximum length for metric components (#1286)
iambriccardo May 22, 2024
91a89a0
docs(screenloads): Document span conditions for screen loads metrics …
narsaynorath May 22, 2024
9f83b77
test(ui): Add examples of overriding default contexts (#1288)
scttcper May 22, 2024
6c1b2b2
Update caches.mdx (#1289)
cleptric May 23, 2024
9717389
Fix typo (#1265)
andrii-st May 24, 2024
f60c2b4
Update ui.mdx
matejminar May 27, 2024
3614004
Made "dynamic sampling page" more readable (#1290)
antonpirker May 28, 2024
ddbcd04
docs(queues): Clarify where to set span data (#1294)
szokeasaurusrex May 28, 2024
01240aa
Strengthen the docs (#1291)
gggritso May 28, 2024
893fb0c
docs(app-starts): Add SDK requirements (#1293)
narsaynorath May 30, 2024
fa3113d
debug (#1296)
roggenkemper May 30, 2024
77dfd7b
feat(flagpole): Adds core flagpole documentation (#1297)
GabeVillalobos May 31, 2024
21706e8
Added missing categories (#1302)
antonpirker Jun 6, 2024
068ba6b
feat(docs): Clarify rate limiting and trace completeness (#1301)
iambriccardo Jun 6, 2024
2ea055e
fix(caches): Update JS redisInstrumentation snippet (#1303)
s1gr1d Jun 6, 2024
2289f8a
fix(github): troubleshooting guide for invalid application name (#1268)
aldy505 Jun 6, 2024
903ff92
fix(caches): Update JS redisInstrumentation snippet (2) (#1304)
s1gr1d Jun 7, 2024
d668a47
Merge remote-tracking branch 'source/master' into develop-docs-content
a-hariti Jun 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 127 additions & 0 deletions develop-docs/ab-testing/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# A/B Tests with Amplitude

## Why AB testing?

1. It's a direct, easy-to-understand way to validate your hypothesis or product change
2. Even when you know your change is an improvement, it allows you to quantify the impact

[Learn more](https://www.optimizely.com/optimization-glossary/ab-testing/)

## Example

- Adding a "signup with github” button to the sign up page
- Hypothesis: signup rate will increase because there's an easier way to sign up

We showed half the visitors the new signup page, and the other half the old page. Turns out there was no effect on the signup rate, i.e. people do use GitHub to sign up, but if it isn't available they will use the regular form instead.

## Details

Our A/B testing framework is built on [Facebook's planout library](https://github.com/facebookarchive/planout).

Let's say you want to optimize the clickthrough rate for Sentry links and decide to test whether to show Plugins in the Integration Directory.

For any experiment, there are 2 events of interest:

- Exposure: when the user is subjected to the experiment. In this case it is when a link is shown.
- Action: the behavior we're trying to observe, which should always be tied to a metric. In this case the action is a click and the metric is the clickthrough rate.

## Adding an A/B Test

To launch the A/B test you will need to do the following:

1. Set up an A/B test in Getsentry to place users/organizations into different test groups.
2. Adding the experiment to the list of experiments in Sentry for Typescript definitions
3. Add the logic where you have to control the in-app behavior

### Changes to `getsentry/getsentry`

In **getsentry/getsentry**, locate the `getsentry/experiments/config.py` file. In this file, you will define an experiment class that inherits from either `OrgExperiment` or `UserExperiment`. Choose one depending on whether you want to assign the experiment across each user or each organization.

For this example, we will use the `OrgExperiment` , this way everyone in the organization will be given the same experiment assignment.

```python
# In getsentry/experiments/config.py

from __future__ import absolute_import

from django.conf import settings

from .base import OrgExperiment
from planout.ops.random import WeightedChoice

WEIGHT_VARIANT = 0.5

class ShowPluginsExperiment(OrgExperiment):
def default_value(self):
return "0"

def assign(self, params, org, actor):
if settings.IS_TEST or org.slug == "sentry":
params.variant = "1"
else:
params.variant = WeightedChoice(
choices=["0", "1"], weights=[1 - WEIGHT_VARIANT, WEIGHT_VARIANT], unit=org.id
)
```


- You can set the assignment value to whatever is necessary for your experiment.
- Assignment logic: The `assign` function on the experiment class determines which group an entity falls into. In the most simple case, you have just two groups: a control and test group. If that's the case, you can use `BernoulliTrial` to generate the test value. If you have three or more groups, you can use `UniformChoice`. You can also insert whatever custom logic you want, such as enabling an experiment if a particular feature flag is set.
- You can use other random assignment operators.

We are setting the values to "0" or "1" and giving a 50% chance an organization sees the plugins in the Integration Directory

Initialize the experiment in `getsentry/web/apps.py` :

If you add your experiment to `getsentry/experiments/config.py` ACTIVE_EXPERIMENTS then it will be automatically initialized because of this piece of code. So no need to make any edits.
```python
class Config(AppConfig):
for experiment in ACTIVE_EXPERIMENTS:
expt_manager.add(experiment, experiment.param_name)
```

### Changes to **`getsentry/sentry`**

In `static/app/data/experimentConfig.tsx` :

```tsx
export const experimentList = [
{
key: 'ShowPluginsExperiment',
type: ExperimentType.Organization,
parameter: 'exposed',
assignments: [0, 1],
},
] as const;
```

Now the experiment is available to you in the `organization` props. You can access it with:

`organization?.experiments?.ShowPluginsExperiment`.

Now you can build conditional logic to show whichever view you want, depending on if they are part of the experiment or the control group.

### Adding Logic

To use the experiment to drive in-app logic on the front-end you should use the `withExperiment` HoC. Here's an [example](https://github.com/getsentry/sentry/blob/76acba78e8bbd730873bb46e04f7930bb748d371/src/sentry/static/sentry/app/views/organizationIntegrations/integrationListDirectory.tsx#L491-L495) of it. It will add a prop called `experimentAssignment` which you can use to determine which experience to show.

### Logging the Experiment

In order to measure the result of the experiment, we need to log the experiment. This generates a `Triggered Experiment (Deduped)` event in Amplitude which you can use as the first step in your funnel (example [here](https://analytics.amplitude.com/sentry/chart/u5gt3z8)). If you use `withExperiment`, it will log the experiment automatically when the component mounts. If you want to only log the experiment under certain conditions (ex: org shouldn't qualify for the experiment). If you set `injectLogExperiment` to `true`, the child of the HoC is responsible for calling `logExperiment`.

### Backend A/B Testing

It is possible to run backend-only A/B testing where the experiment values have to be read in a different way than the FE. To do this, you need to do the following:

```python
from sentry.experiments import manager as expt_manager

# gets the value of assigned for ExampleMultiChoiceExperiment
exposed = expt_manager.get("ExampleMultiChoiceExperiment", org=org, actor=user)
```

You can then add checks on the value of `exposed` to drive your in-app logic.

### Logging the Experiment on the Backend

Logging the experiment on the backend can be tricky because it creates an analytics event each time it's triggered. That might be too many events depending on how often it's called. Refer to the implementation of the [log experiment endpoint](https://github.com/getsentry/getsentry/blob/master/getsentry/web/experiment.py) to see how to log the experiment on the backend.
Loading
Loading