List Connectivity Antipatterns - G33-Moviles-2026-1/Wiki GitHub Wiki
Based on the Book's chapter 10, these are the antipatterns used to describe connectivity scenarios:
1. Blocked Application
The app becomes unresponsive due to a connectivity problem. The UI locks up, ignoring user commands, and either forces a restart or requires a long wait.
- 1.1 Completely Blocked: The app crashes or requires a hard restart to function again.
- 1.2 Partially Blocked: The app freezes temporarily but eventually recovers and resumes normal function.
2. Stuck Progress Notification
A loading spinner or progress bar gets locked on the screen because the app cannot establish the connection needed to complete or fail the underlying task.
3. Non-informative message
The app encounters a network error but shows generic, technical, or confusing text instead of actionable advice.
- 3.1 Generic Message: Vague alerts like "An error occurred" that don't explain the lack of connectivity or how to fix it.
- 3.2 Message with Exception Trace: Showing raw code exceptions (e.g., UnknownHostException) to the end-user.
- 3.3 Inconsistent Message: The app reports that an unrelated action occurred, or claims content is "empty" when it simply couldn't be loaded.
4. Lost Content
The app fails to load content due to lack of connection, but does not notify the user, leaving them with broken UI elements.
- 4.1 Blank Map: A map view that shows absolutely nothing.
- 4.2 Blurred Map: A map that loads a blurry cache but fails to load zoomed-in tiles without notifying the user.
- 4.3 Lost Functionality: Buttons or dialogs simply don't appear if there's no internet.
- 4.4 Blank Image: Empty grids or squares where external images should be.
- 4.5 Lost Text: Empty text sections where remote text (like descriptions) should be fetched.
- 4.6 User Content: Messages or user-generated data that disappear into the void when sent offline instead of being saved/queued.
5. Non-existent Result Notification
The app performs an action (or fails to) but stays completely silent, leaving the user guessing about the outcome.
- 5.1 No progress notification: Downloads happen silently with no status indicator.
- 5.2 No failure notification: A download or fetch fails, but the user isn't told.
- 5.3 No success notification: A message or payload goes through, but no confirmation is shown.
- 5.4 No problem notification: An action fails because of the network, but the app just shows an empty screen instead of an error.
- 5.5 No retry notification: The user needs to manually try again later, but the app doesn't tell them to do so.
6. Redirection without connectivity check
The app attempts to hand the user off to another service without checking if the device actually has the internet required to complete the handoff.
- 6.1 Web Page: Opening the device browser to a URL, resulting in a browser-level "No Internet" screen.
- 6.2 Different App: Using Intents to open another app (like WhatsApp) that also requires internet, improperly passing the burden of error handling to the second app.
7. Unavailable Functionality after Connection Recovery
A specific bug where an action fails as expected while offline, but permanently breaks or becomes locked out even after the user reconnects to the internet.
8. Unclear Behavior
The app behaves inconsistently or randomly under identical offline scenarios.
- 8.1 Random Actions: Doing the same thing twice offline yields different results (e.g., sometimes throwing an error, sometimes queueing the action).
- 8.2 Unclear Events Sequence: The UI changes its error response based on how many times the user taps a button while offline.
9. Unexpected Result from Background process
When an offline user clicks a button multiple times (thinking it's broken), the app silently queues every single click. When the internet returns, the app fires all queued actions at once, draining resources and confusing the user.
10. Browser Embedded Incorrectly
A WebView or local map is used to render content, but it fails to handle network errors gracefully.
- 10.1 Local Webpage: A locally stored HTML file is loaded, but its remote image tags fail, leaving empty boxes with no error message.
- 10.2 External Webpage: The WebView tries to load a remote URL and shows the ugly, raw net::ERR_INTERNET_DISCONNECTED system text.
- 10.3 Map File: A local map tries to fetch remote tiles, failing silently and displaying a blank white canvas.