Commit 9574dcc
authored
build: implement SDK breaking change detection (#538)
## 🎟️ Tracking
https://bitwarden.atlassian.net/browse/PM-22218
bitwarden/clients#17314
bitwarden/clients#17075
## 📔 Objective
Implement automated SDK breaking change detection that provides
immediate feedback when SDK PRs introduce TypeScript compilation issues
for client applications. This system catches breaking changes at SDK
development time rather than during client integration.
Previously, breaking changes in the SDK weren't discovered until someone
tried to update the SDK version in client repositories, making fixes
difficult and disruptive.
This PR implements a cross-repository workflow system that:
1. Triggers when SDK PRs have successful WASM artifacts built
2. Downloads and tests the new SDK artifacts against the typechecker in
`clients`
3. Provides immediate feedback via PR comments and labels
This was designed to be modular: hopefully we can just "slot in" mobile
with any appropriate available job in those repos.
## Screenshots
An example failure comment. It links to [this
run](https://github.com/bitwarden/clients/actions/runs/19080851865). I
created a breaking change on purpose and then reverted it.
<img width="1970" height="882" alt="Screenshot 2025-11-04 at 3 03 36 PM"
src="https://github.com/user-attachments/assets/b3653da7-7325-4939-a1ca-d2107686a431"
/>
The comment when no breaking changes are detected.
<img width="1996" height="880" alt="Screenshot 2025-11-04 at 4 22 17 PM"
src="https://github.com/user-attachments/assets/562c78d9-ad5f-448a-be94-f69ba82ca978"
/>
## ⏰ Reminders before review
- [x] Contributor guidelines followed
- [x] All formatters and local linters executed and passed
- [x] Written new unit and / or integration tests where applicable
- [x] Protected functional changes with optionality (feature flags)
- [x] Used internationalization (i18n) for all UI strings
- [x] CI builds passed
- [x] Communicated to DevOps any deployment requirements
- [x] Updated any necessary documentation (Confluence, contributing
docs) or informed the documentation team
## 🦮 Reviewer guidelines
<!-- Suggested interactions but feel free to use (or not) as you desire!
-->
- 👍 (`:+1:`) or similar for great changes
- 📝 (`:memo:`) or ℹ️ (`:information_source:`) for notes or general info
- ❓ (`:question:`) for questions
- 🤔 (`:thinking:`) or 💭 (`:thought_balloon:`) for more open inquiry
that's not quite a confirmed
issue and could potentially benefit from discussion
- 🎨 (`:art:`) for suggestions / improvements
- ❌ (`:x:`) or 1 parent 1586bd8 commit 9574dcc
File tree
3 files changed
+409
-6
lines changed- .github
- workflows
3 files changed
+409
-6
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
9 | 23 | | |
10 | 24 | | |
11 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
| 46 | + | |
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| |||
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
122 | | - | |
123 | | - | |
| 122 | + | |
| 123 | + | |
124 | 124 | | |
125 | 125 | | |
126 | | - | |
127 | | - | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
128 | 138 | | |
129 | 139 | | |
130 | 140 | | |
131 | 141 | | |
132 | 142 | | |
133 | 143 | | |
134 | 144 | | |
135 | | - | |
| 145 | + | |
136 | 146 | | |
137 | 147 | | |
138 | 148 | | |
139 | 149 | | |
140 | 150 | | |
141 | 151 | | |
142 | 152 | | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
0 commit comments