Products · Product
Swift
Raised as a usability problem by 183 people on Hacker News over 13 years (2014–2026), in 170 threads.
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Every issue, all time, most people first
Compiler error messages are sometimes confusingUnreviewed
20142026- Vague compiler errors giving no hint of which file or line caused them2026-02-01
- Compiler errors are non-descriptive and unsearchable, making failures hard to diagnose2026-01-27
- Compiler gives vague type errors, so fixing them means trial and error2025-10-25
Compiler is slow and rejects even simple SwiftUI codeUnreviewed
20142026- The Swift compiler is very slow when building code2026-10-30
- Swift 6 defaults flood single-threaded UI code with many warnings and errors2026-01-23
- SwiftUI previews are unreliable and Swift concurrency is hard to use correctly2025-11-13
Hard to tell the right way of doing things in SwiftUnreviewed
20142026- Hard to tell what the right way of doing things is in Swift2026-03-27
- Syntax has too many ways to do simple things like loops2026-02-01
- Same line of code can be written many ways, hard to read and understand2024-03-06
Compiler times out on inferred types, forcing explicit annotations everywhereUnreviewed
20142026- Compiler enforces return type annotations, frustrating the author who wants to ignore them2025-12-30
- Simple numeric expression takes seconds to type check, failing in older versions2025-09-06
- Type checker produces overly complex, hard-to-follow errors2025-02-01
Omitted type names and cryptic syntax make code hard to readUnreviewed
20142026- Omitted type names and cryptic syntax make code hard to read and understand2026-03-26
- Obscure generic types are hard to understand and write, with poor documentation2025-05-08
- Seemingly cryptic code with unfamiliar constructs keeps being hard to parse2022-12-31
Autocompletion breaks, syntax highlighting flickers, and compiles are slowUnreviewed
20142026- Autocompletion breaks and syntax highlighting flickers, plus long compile times2019-09-26
- Autocomplete often fails to work and SourceKit burns CPU time2017-10-07
- Users try length first and autocomplete shows several confusing alternatives, making the right one hard to find2015-11-12
C library interop with Swift pointer types is hard to use in practiceUnreviewed
20142026- C library interop with Swift's pointer types is hard to use in practice2026-04-08
- Integrating Swift into C++ projects needs hacks and produces confusing errors2026-03-26
- Swift pointer types are so unusable that interfacing with C libraries is impractical2024-10-29
Documentation is useless for the Swift way, which often means wrapping CocoaUnreviewed
20142026- Modern concurrency and Swift Package Manager are too undocumented to learn2025-04-25
- Documentation was useless; the 'swift way' often meant wrapping Cocoa or Objective-C2020-09-25
- Package managers confusing: CocoaPods, SwiftPM versions, Xcode vs command line all clash2018-10-22
Compiler refuses to compile code and offers no fix suggestionsUnreviewed
20142026- Compiler refuses to compile code and offers no fix suggestions2024-06-22
- Struggling for days to get the compiler to accept code with overrides and generics2018-11-10
- Strict compiler rejects anything tried, so code is hard to write without compiler help2017-02-12
Enums with associated values are confusing without knowing the implementationUnreviewed
20142026- Enums are so hard to use that developers fall back to messy optionals for view state2025-12-31
- Couldn't extract a field from an enum; syntax errors gave no useful hints2020-09-27
- Enums with associated values are confusing; understanding them requires knowing the implementation under the hood2020-04-11
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 50 complaints
- The Swift compiler is very slow when building code2026-10-30
- Language feels impenetrable, with features that jump at you unexpectedly2026-08-03
- C library interop with Swift's pointer types is hard to use in practice2026-04-08
- Hard to tell what the right way of doing things is in Swift2026-03-27
- Language has many special cases, causing complexity in semantics, bugs, and workarounds2026-03-26
- Hidden generated fields and many decorator annotations make the code hard to follow2026-03-26
- Too many optional features make it hard to choose the best approach2026-03-26
- Omitted type names and cryptic syntax make code hard to read and understand2026-03-26
- Hidden behavior at call sites makes code error-prone and hard to reason about2026-03-26
- Integrating Swift into C++ projects needs hacks and produces confusing errors2026-03-26
- Optional system is half-baked and forces verbose nil checks, adding friction2026-03-02
- Too many keywords, and the compiler rejects even trivial code2026-02-02
- Docs don't say what works on Linux, forcing guesswork and trial and error2026-02-01
- Vague compiler errors giving no hint of which file or line caused them2026-02-01
- Editing Swift in VS Code on WSL was a terrible experience2026-02-01
- Cannot easily use vcpkg packages or CMake, making non-Apple platforms hard to use2026-02-01
- Syntax has too many ways to do simple things like loops2026-02-01
- Compiling the backend Docker container takes 10-20 minutes, slowing every deployment2026-02-01
- Constant small breaking changes and paper cuts make it hard to keep using2026-01-31
- Debugger doesn't work on Linux and lldb stops working unpredictably on non-trivial projects2026-01-27
- Compiler errors are non-descriptive and unsearchable, making failures hard to diagnose2026-01-27
- Initialization has 16 rules and 14 pages of complexity, hard for developers to learn2026-01-23
- Works in demos but hits sharp cliffs off the happy path2026-01-23
- Swift 6 defaults flood single-threaded UI code with many warnings and errors2026-01-23
- Too many similar pointer types; hard to know which one a C API returns2026-01-23
- Xcode project files are impossible to edit outside Xcode, and Xcode often has issues requiring manual build folder clearing2026-01-23
- Swift language server experience in Neovim is pretty bad2026-01-23
- Swift silently runs misconfigured async code and doesn't warn about unawaited calls, so nothing visible happens2026-01-14
- Expressing a simple union type requires much boilerplate, with unchecked casts and forwarding code, unlike TypeScript2025-12-31
- Enums are so hard to use that developers fall back to messy optionals for view state2025-12-31
- Overloaded keywords whose meaning changes with compiler flags, so code is hard to understand2025-12-30
- Compiler enforces return type annotations, frustrating the author who wants to ignore them2025-12-30
- String indexing is verbose and awkward, needing extra ceremony for simple numeric indexing2025-12-15
- SwiftUI previews are unreliable and Swift concurrency is hard to use correctly2025-11-13
- Compiler is slow and rejects even simple SwiftUI code, frustrating developers2025-11-07
- Takes a minute each time to work out what the if let code does2025-11-02
- Force unwrap syntax looks convenient, so it's easy to misuse and crashes on failure2025-10-26
- Must hand-write static JNI package and class names on the Swift side2025-10-25
- Compiler gives vague type errors, so fixing them means trial and error2025-10-25
- Pointers are awkward to use, making C library interop painful compared to C++2025-10-20
- Compiler reports an error without any line number, so the problem is hard to locate2025-10-04
- Certification requires many hoops, poor documentation, and a test environment with no logs or clear errors2025-09-15
- Simple numeric expression takes seconds to type check, failing in older versions2025-09-06
- Xcode crashes when adding or removing dependencies; error messages are unclear and cut off2025-09-01
- Code behavior depends on hidden build flags, so its effect can't be known2025-07-25
- Cryptic error codes like "Error: -2" give no useful diagnostic information2025-07-16
- Ternary operators make compilation time balloon unexpectedly2025-07-13
- Observation fires only once, so developers must re-arm it in every onChange closure2025-05-12
- Migrating a 150-file project to Swift 6 became much harder to do2025-05-10
- Concurrency adds unexpected, hard-to-grok behaviour that is hard to reason about2025-05-10