SShortSingh.
Back to feed

Why Riverpod Was Built and Why Modern Flutter May No Longer Need It

0
·21 views

Riverpod was created by Rémi Rousselet as a direct response to a fundamental limitation in Flutter's InheritedWidget system, which offers no mechanism to unsubscribe a widget from a dependency once it has been registered. This flaw meant widgets could continue rebuilding on every ancestor state change even after the condition triggering their dependency turned false, causing unnecessary overhead in larger apps. Rousselet attempted to fix this at the framework level in a 2019 pull request, but Flutter's then-tech lead Ian Hickson closed it, citing concerns about added complexity in Flutter's core build loop. Unable to patch InheritedWidget itself, Rousselet built Riverpod entirely outside the widget tree to work around the constraint. A newer approach called BlocSignal is now presented as a potential successor, aiming to restore InheritedWidget to its original role as a scoped injector while handling state propagation through reactive signals instead.

Read the full story at DEV Community

This is an AI-generated summary. ShortSingh links to the original source for the complete article.

Discussion (0)

Log in to join the discussion and vote.

Log in

Related stories

0
ProgrammingDEV Community ·

WireGuard por tu cuenta o Tailscale en un homelab: qué plano de control operar

The article compares running raw WireGuard with using Tailscale for a home lab, focusing on who manages the control plane. Raw WireGuard requires manual handling of key distribution, endpoints and peer configuration, which suits setups with few nodes and a public IP. Tailscale automates coordination and traverses NAT without opening ports, at the cost of relying on its coordination service. The piece explains connection types (direct UDP, DERP relay, Peer Relay) and notes that traffic stays encrypted even through relays. It also outlines Tailscale's free Personal plan limits for non-commercial use.

0
ProgrammingDEV Community ·

Java Virtual Threads and Kotlin Coroutines Differ in How They Suspend, Shifting the Bottleneck

A DEV Community article compares Java virtual threads with Kotlin coroutines, focusing on how their suspension models affect code structure and runtime behavior. Traditional thread-per-request servers are limited by thread count, even though many threads sit idle waiting on databases or external APIs. Both technologies release the underlying OS thread during waits and resume at the suspension point, but virtual threads save and restore the full stack while coroutines rely on compiler-transformed, stackless functions. The author argues that virtual threads hide suspension points from the source code, whereas coroutines mark them explicitly. The article also notes that these approaches reduce the cost of waiting without adding total resources, so the bottleneck moves elsewhere, often out of sight in the virtual thread model.

0
ProgrammingDEV Community ·

Why old WooCommerce checkout snippets fail on the Checkout block and how to add fields

Stores using the WooCommerce Checkout block, the default for new installs since version 8.3, do not run most classic checkout hooks, so older custom field snippets fail silently. The recommended approach is the Additional Checkout Fields API, stable since version 8.9, which is best placed in a small plugin so it persists across theme changes. The article's example registers a namespaced purchase order field with sanitization and validation callbacks. Developers must also watch for namespacing requirements, storage location options, and a hook name discrepancy between the documentation and the source code. Once registered, the field appears in admin, thank-you pages and emails, and the CheckoutFields helper can retrieve it in code.

0
ProgrammingDEV Community ·

Guidance on Retrying Failed Email API Calls Under 2026 Seller Compliance Practices

A developer guide outlines how to retry failed email API calls only when errors appear transient, using capped exponential backoff with jitter. It recommends writing an immutable attempt record before each retry, capturing the order, notification, policy decision, response class, and timestamps. Rate-limit and server errors may justify retries, while malformed requests, authentication failures, and permanent recipient rejections should be routed to review or a dead-letter path. The guide stresses that API acceptance and downstream delivery or bounce events are separate facts that should be recorded distinctly. It also warns that retry limits and timing values are starting points to be validated against measured queue behavior and dependency performance.