Urgent.News

What's breaking now, across thousands of outlets.

Tech

GrowBook: my reminder app's one job was to remind you. It didn't.

My app has exactly one job it cannot get wrong: fire a reminder so you water your plant. It's a to-do notification. How hard could it be. It took me a week, and by the end I understood why so many reminder apps quietly don't work. Here's the thing nobody tells you: on modern Android, "schedule a notification for 9am tomorrow" is not one problem. It's at least three, and each one fails silently,…

GrowBook was just supposed to remind you to water your plant, but the app struggled to deliver its simple purpose. At first, firing the reminder seemed straightforward - a to-do notification. However, creating the app revealed a more complex challenge than anticipated. Modern Android systems don't execute scheduling a notification for 9am tomorrow as a single task; rather, it requires addressing at least three issues, each of which may fail silently.

These problems include obtaining the necessary permission to notify, ensuring the correct timing of the notification, and ensuring the reminder survives a phone reboot. The app had to guide users through a series of permission requests and battery-optimization settings to ensure the notifications would work as intended. After weeks of development and testing, the app ultimately became a series of complex permission requests and battery-optimization pleas, rather than the simple notification it was designed to be.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

React Context Is Not State Management: Stop Using It

The Architectural Trap: Why React Context Isn't a State Manager In the modern React ecosystem, "prop drilling" is often cited as the ultimate developer productivity killer.

  • React Context is a dependency injection mechanism, not a state management tool.
  • Misusing Context with objects causes unnecessary re-renders throughout the component tree.
  • Split providers and use external stores for frequently changing data to improve performance.

More from Wednesday 9 September →