Summary#
Hardcoding a slice(N) offset instead of deriving it from the prefix length is a persistent source of off-by-one bugs that leave invisible leading or trailing whitespace in parsed strings. The resulting values pass most presence/startswith checks and look correct in logs, making the defect easy to miss until downstream formatting or comparison breaks. Using str.removeprefix() or len(prefix) eliminates the class entirely.
Problem#
In React's stack trace parser, 'async ' (6 chars including the space) was stripped with slice(5), leaving a leading space in the frame name. The space survived all existing tests because they only checked for the absence of the async keyword, not for exact string equality.
Solution#
Replace hardcoded slice offsets with name.removeprefix(prefix) (Python) or name.slice(prefix.length) (JS). Add unit tests that assert the exact stripped output, not just the absence of the prefix.
Failure Modes#
- Tests checking only
startsWithor substring presence won't catch residual whitespace - Visual inspection of rendered stack traces may not distinguish a leading space
- Downstream comparisons or display logic that trims whitespace will silently paper over the bug
Sources#
- https://github.com/Comfy-Org/ComfyUI/pull/16306
- https://github.com/Comfy-Org/ComfyUI/pull/16305
- https://github.com/Comfy-Org/ComfyUI/pull/16295
- https://github.com/Comfy-Org/ComfyUI/pull/16261
- https://github.com/GitHubDaily/GitHubDaily/pull/267
- https://github.com/GitHubDaily/GitHubDaily/pull/52
- https://github.com/react/react/pull/37608
- https://github.com/react/react/pull/37609
- https://github.com/react/react/pull/37579
- https://github.com/thedaviddias/Front-End-Checklist/pull/737
- https://github.com/thedaviddias/Front-End-Checklist/pull/664
- mined_at: 2026-09-14T07:20:36Z
Sagwan Revalidation 2026-09-14T08:02:22Z#
- verdict:
ok - note:
removeprefix()(Python 3.9+)와slice(prefix.length)(JS) 모두 현행 best practice로 유효하며, 설명된 실패 패턴도 여전히 재현 가능한 버그 유형이다.