Pains
2403 pains collected
Lack of generic const expressions feature
5Generic const expressions is the leading unimplemented/nightly-only feature blocking Rust development. 18.35% of developers say it would unblock their use case and 41.53% say it would improve their code.
GraphQL steep learning curve and debugging complexity
5GraphQL has a significant learning curve compared to REST APIs. Developers must learn schema definitions, resolvers, and query structures, and debugging is more complex. Studies show developers find GraphQL challenging and time-consuming to learn with limited knowledge-base resources.
React mindset mismatch for Svelte newcomers
5Developers migrating from React struggle with Svelte's different mental model. Features like top-level awaits and reactive blocks ($: syntax) feel 'loose' compared to React's function-first approach, creating learning friction and potential debugging issues from nested reactive declarations.
Additional build tool dependency and complexity
5Tailwind requires adding a build step to the development pipeline, preventing simple file-based deployment or client-side sandboxing without preprocessing. Integration with various build systems (e.g., SvelteKit) adds configuration complexity.
Steep learning curve for utility-first approach
5Beginners struggle to understand the large number of utility classes, their naming conventions, and how they compose together. The onboarding time is significant even with comprehensive documentation, as developers must memorize extensive class names.
Svelte may lack concurrent mode equivalent indefinitely
5Svelte may never be able to implement an equivalent of React's concurrent mode, which could be a significant limitation. While Rich Harris intends to implement Suspense equivalents, there's no guarantee Svelte can achieve React's concurrent capabilities.
Slow app store review process delays security fixes
5On macOS and Windows, app store review processes can take days, preventing developers from deploying critical bug fixes and security patches immediately when they're ready, unlike on Linux platforms.
Dependency on Chromium version coupling and control issues
5Developers must bundle Chromium to control stability, security, and reliability independently from OS WebViews that are tightly coupled to the operating system. However, this creates a tension between bundling bloat and maintaining control over platform stability.
Server/client data shape mismatches
5Data structures often differ between the database and GraphQL responses. For example, a database field like `authorId` might be transformed into a nested object in GraphQL responses, creating misalignment and complicating data mapping.
Steep learning curve and complexity for new developers
5While Electron promises to use familiar web technologies, developers unfamiliar with its specific nuances face a steep learning curve, particularly in debugging and managing application environments. Mismanaged expectations and need for continuous education can extend project timelines.
Docker incompatibility with certain Python frameworks
5Some 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.
GraphQL breaking change management without tooling support
5GraphQL discourages breaking changes but provides no built-in tools to manage them, forcing developers who control all their clients to find workarounds and add needless complexity.
Complex inter-process communication between Electron windows
5Each Electron window runs as a separate process with no easy way to share data between them. IPC implementation and broadcastChannel API have limitations like non-shared memory and inability to pass non-standard data types.
Misleading bundle size metrics and increased HTML payload
5While Tailwind markets tiny CSS bundles (<10kb), the actual HTML files grow 2-3x larger due to numerous utility classes per element. One project saw CSS shrink 45kb→8kb but HTML grow 120kb→340kb, resulting in a net 183kb increase, contrary to marketing claims.
Poor IDE and downstream integration of C# language features
5New C# language features (top-level statements, global includes) are sometimes delivered with incomplete IDE polish, integration issues, and downstream problems in ASP.NET Core. The implementation itself works, but the tooling and delivery experience suffers.
Antivirus software blocking Electron applications
5Windows Defender and third-party antivirus software frequently flag Electron apps as suspicious during development and production, requiring temporary disabling for testing or code signing certificates to avoid false positives.
Missing native CSS mixins and functions
5Developers still rely on preprocessors like Sass, Less, and PostCSS for mixins and advanced functionality, despite repeated requests for native CSS support. This perpetuates tool dependencies and learning curves.
Cloudflare configuration complexity and SSL certificate setup
5Users struggle with the complexity of Cloudflare's configuration, particularly with setting up SSL certificates correctly, requiring navigation of an extensive feature set.
CSS implicit logic is unpredictable compared to imperative programming
5CSS's declarative paradigm with implicit conditional logic (selectors, cascade, variables, media queries) produces unpredictable outcomes. Unlike JavaScript or C++, CSS control flow is invisible and relies on the browser resolving conflicting constraints.
Poor object layout and bucket organization leads to high query costs and governance issues
5Without standardized prefixes, partitioning, and clear bucket purposes, teams struggle with governance and incur unnecessary query costs. Working with very large buckets containing millions of objects becomes cumbersome without solid organization and lifecycle policies.
Disconnect between designer and developer CSS practices
5There is a 'canyon' between aesthetically-driven CSS written by designers and code-maintainable CSS written by developers, resulting in brute-force implementations that ignore CSS's strengths.
Excessive workflow complexity requiring explicit push operations
5Git requires developers to explicitly push commits to origin after local commits, creating a two-step workflow more complex than traditional VCS. Developers frequently forget to push, leading to confusion when colleagues pull and cannot see changes.
Using JavaScript instead of CSS for tasks now handled natively
5Developers continue to write JavaScript for functionality that modern CSS now handles natively, such as container queries, the `:has()` selector, scroll-linked animations, and view transitions. This creates unnecessary complexity and hurts performance.
New CSS features add complexity without resolving core issues
5New features like container queries and cascade layers add layers of complexity but don't fully resolve underlying declarative paradigm problems. Features like cascade layers don't eliminate unintended override risks in complex applications.