Pains

204 pains collected

Severity:

RSC introduces client confusion, development complexity, and latency concerns

6

React Server Components (RSC) create confusion about client-server boundaries, increase development complexity, and introduce latency. Simple applications feel overengineered due to RSC requirements, creating a steep learning curve and performance concerns with cold starts on serverless platforms.

architectureNext.jsReact

Third-Party Font CDNs Introduce Request Chain Latency

5

Web fonts from third-party CDNs require multiple round-trip requests (DNS lookup, CSS request, font file request), adding significant latency even on fast networks and degrading FCP.

performanceNext.js

Kubernetes hasn't improved cost, security, and architectural refactoring

5

More than 25% of developers report Kubernetes has made cost management worse, 13% cite worsened security posture, and 15% report hindered architectural refactoring. Kubernetes provides scalability and HA benefits but creates new problems in these critical domains.

performanceKubernetes

Forgetting to narrow union types leads to type errors

5

Developers frequently forget to implement type guards or narrowing for union types, resulting in runtime errors when accessing type-specific properties or methods. This requires checking the actual type before using type-specific operations.

dxTypeScript

Opaque cost metrics and unpredictable platform expenses

5

Vercel's usage dashboard shows metrics like 'Fluid Active CPU' and 'ISR Writes' without clear documentation on how they impact costs or how to optimize them. Developers pay subscription fees but lack visibility into what drives spending, making budgeting impossible.

monitoringNext.jsVercel

Unexpected Cookie Behavior in Next.js Server Components

5

The cookies() API allows type-checked usage like cookies().set() anywhere, but fails at runtime in certain contexts. This unexpected behavior differs from traditional request object access and creates developer footguns.

compatibilityNext.jsReact

GitHub Actions lacks early validation of workflow syntax and job dependencies

5

Workflow syntax errors and broken `needs` clauses are only discovered after pushing code. Linters exist but are imperfect. Developers cannot validate workflows locally before commit, forcing a push-and-wait debugging cycle.

dxGitHub Actions

Most developers stuck on older Python versions despite major performance gains

5

83% of developers run Python versions 1+ years old despite containerization making upgrades trivial. Missing out on 11-42% performance improvements (3.11→3.13/3.10→3.13) and 10-30% memory reductions without code changes.

dxPythonDocker

Project complexity balloons quickly with scripting-style codebases

5

Python scripts written without discipline grow unwieldy and difficult to maintain. Historic cross-implementation compatibility breaks regularly, causing pain. Refactoring becomes risky without strong static analysis.

architecturePython

Memory leaks and inefficient memory management

5

Despite Python's automatic memory management, developers encounter memory leaks and inefficient memory usage patterns. The lack of explicit control over memory allocation/deallocation makes it difficult to identify and fix memory-related performance issues without specialized profiling tools.

performancePython

Python 2 to Python 3 compatibility issues persist

5

Despite Python 2's end-of-life, many libraries and frameworks still don't fully support Python 3, creating compatibility issues when trying to migrate legacy codebases or integrate multiple dependencies with different version requirements.

compatibilityPython

Docker incompatibility with certain Python frameworks

5

Some Python libraries and frameworks (notably PySpark) cannot be easily used with Docker, forcing developers to choose between containerization approaches or framework selection, limiting deployment flexibility.

deployPythonDockerPySpark

Overwhelming library choices and ecosystem overload

5

The Python ecosystem has so many libraries and modules that developers struggle to determine which library best fits their project. Evaluation requires considering documentation, community support, maturity, and stability across numerous options.

ecosystemPython

Unpleasant code editor environment crushing productivity

5

Working with code editors or tools that developers don't enjoy significantly crushes productivity, zapping energy levels and motivation. The editor is the most important daily tool for developers, and poor editor experience has outsized impact.

dxcode editors

Debugging complexity in large and dynamic codebases

5

Python's dynamic nature makes debugging difficult and time-consuming, especially in large codebases. Cryptic error messages and the need to trace through dynamically-typed code makes it hard to identify root causes of bugs without strong debugging tools.

testingPython

Heavy dependency on C for computationally intensive tasks

5

Python has a significant dependency on C implementations for heavy computational tasks, creating a gap between Python's ease-of-use and the complexity of leveraging performance-critical operations.

performancePythonC

Difficult workflow re-run and testing experience

5

GitHub Actions provides no simple way to re-run workflows against the tip of a branch, making it difficult to handle transient failures and test workflow changes. Developers must work around this limitation by adding additional triggers, which is unintuitive and slows development velocity.

dxGitHub Actions

Confusing Docker syntax and layer management complexity

5

Docker, docker-compose, and Dockerfile syntax is confusing with numerous edge cases. Image sizes grow to problematic sizes unless carefully constructed, and Docker enforces restrictions on multi-line RUN commands that lack clear documentation on resolution.

dxDockerdocker-compose

Lack of Docker experts in developer community

5

There is a substantial lack of Docker experts in the Stack Overflow community and broader developer ecosystem compared to other areas such as web development, making it difficult for developers to find help and solutions.

ecosystemDocker

TypeScript does not support importing .ts file extensions

5

TypeScript does not allow developers to import modules with explicit .ts extensions, unlike standard ECMAScript/JavaScript practices. This forces module resolution traversal which is particularly slow over networks, and contradicts TypeScript's own design where the team knows .ts files must be transpiled to .js anyway.

compatibilityTypeScriptECMAScript

Error handling complexity with thrown exceptions as control flow

5

Using thrown errors as stand-ins for expected error handling makes types non-exhaustive and unclear about what can go wrong. Try-catch blocks are scattered throughout implementations and not all thrown errors are caught correctly, leading to hard-to-follow error management patterns.

dxTypeScript

Developer skill gaps and longer hiring cycles for TypeScript expertise

5

Not all JavaScript developers are comfortable with static typing, causing companies to face longer and more expensive hiring cycles when seeking developers proficient in both Node.js and TypeScript. This skill gap increases recruitment friction during team growth.

ecosystemTypeScriptNode.js

Low GitHub issue resolution rate masks framework debt

5

Only 29% of Next.js GitHub issues get resolved; 52% of discussed issues remain unresolved. Many developers solve problems independently without creating tickets, making it impossible to measure framework debt accumulation. This visibility gap prevents data-driven planning and cost estimation.

monitoringNext.js

GitHub Actions steep learning curve and complexity for new users

5

GitHub Actions feels overwhelming for new users due to the range of features, options, and complexity of setting up workflows. The platform's learning curve is especially steep for those new to version control or CI/CD concepts.

onboardingGitHub Actions