🐧 Linux TippsDebian 11 Long Term Support reaches end-of-life(31.08.2026 um 02:00 Uhr)
🐧 Linux TippsUpdated Debian 13: 13.7 released(12.09.2026 um 02:00 Uhr)
🕵️ SicherheitslückenUSN-8741-1: Flatpak vulnerabilities(10.09.2026 um 10:44 Uhr)
🕵️ SicherheitslückenUSN-8742-1: Netty vulnerability(10.09.2026 um 11:01 Uhr)
🕵️ SicherheitslückenUSN-8737-2: GNU C Library vulnerabilities(10.09.2026 um 13:25 Uhr)
🕵️ SicherheitslückenUSN-8743-1: PHP vulnerabilities(10.09.2026 um 13:48 Uhr)
🕵️ SicherheitslückenUSN-8744-1: Python vulnerabilities(10.09.2026 um 15:53 Uhr)
🐧 Linux TippsUSN-8748-1: Linux kernel (NVIDIA) vulnerabilities(10.09.2026 um 17:32 Uhr)
🕵️ SicherheitslückenUSN-8745-1: KissFFT vulnerabilities(10.09.2026 um 17:36 Uhr)
🕵️ SicherheitslückenUSN-8746-1: libEBML vulnerability(10.09.2026 um 17:48 Uhr)
🐧 Linux TippsDebian 11 Long Term Support reaches end-of-life(31.08.2026 um 02:00 Uhr)
🐧 Linux TippsUpdated Debian 13: 13.7 released(12.09.2026 um 02:00 Uhr)
🕵️ SicherheitslückenUSN-8741-1: Flatpak vulnerabilities(10.09.2026 um 10:44 Uhr)
🕵️ SicherheitslückenUSN-8742-1: Netty vulnerability(10.09.2026 um 11:01 Uhr)
🕵️ SicherheitslückenUSN-8737-2: GNU C Library vulnerabilities(10.09.2026 um 13:25 Uhr)
🕵️ SicherheitslückenUSN-8743-1: PHP vulnerabilities(10.09.2026 um 13:48 Uhr)
🕵️ SicherheitslückenUSN-8744-1: Python vulnerabilities(10.09.2026 um 15:53 Uhr)
🐧 Linux TippsUSN-8748-1: Linux kernel (NVIDIA) vulnerabilities(10.09.2026 um 17:32 Uhr)
🕵️ SicherheitslückenUSN-8745-1: KissFFT vulnerabilities(10.09.2026 um 17:36 Uhr)
🕵️ SicherheitslückenUSN-8746-1: libEBML vulnerability(10.09.2026 um 17:48 Uhr)

🔧 Programmierung 🕛 vor 2 Monaten 3 Min Lesezeit
0

AI Features Need Product Edges, Not Just Better Prompts

↗ Quelle (dev.to)
🗣️ Stimme:
📑 Inhaltsübersicht

Most AI features don't fail because the model is bad.



They fail because everything around the model is treated like a demo.



This week I was tightening an iOS workout app that uses Claude through Supabase Edge Functions. The model part is straightforward: send training context, get a structured exercise or plan back, validate it, write it into SwiftData.



The less glamorous work was the part that makes it feel like an actual product:




  • monthly AI credit balance

  • offline handling

  • auth token storage

  • disabled states while generation is running

  • different rules for “add exercise” vs “swap this exercise”

  • tests for the boring edge cases



That is where most AI app quality lives.






One button, several states



The UI has a small “fill with AI” affordance on the exercise editor. Underneath it, the button is not just “call endpoint”. It has to know whether suggestion is currently allowed:




CODE
var canSuggest: Bool {
guard !isLoadingAI,
NetworkMonitor.shared.isOnline,
(creditsRemaining ?? 1) > 0
else { return false }

// Swap mode can use the original exercise as context.
// Add mode needs the typed name as a hint.
return isSwapMode || !name.trimmingCharacters(in: .whitespaces).isEmpty
}






That little predicate is doing a lot of product work.



If the user is offline, don't let them tap into a doomed network request.

If a generation is already running, don't double-spend.

If they have zero credits, don't pretend the feature is available.

If they are swapping an existing exercise, don't force them to type a name because the old exercise is already useful context.



The model does not care about any of this. The user does.





Credits should be part of the response



The suggestion response includes the updated credit count:




CODE
struct SuggestedExercise: Decodable {
let name: String
let briefDescription: String
let muscleGroup: String
let sets: Int
let repTargetLow: Int
let repTargetHigh: Int
let restSeconds: Int
let isDualDumbbell: Bool
let creditsRemaining: Int
}






Then the view model updates local state immediately after a successful fill:




CODE
creditsRemaining = result.creditsRemaining
aiFilledFields = true






That avoids the classic AI-product weirdness where the backend knows the user has spent a credit but the UI keeps showing stale allowance until the next refresh.



It is also easier to test. In the app tests, the credit transition is explicit:




CODE
func testAIDisabledWhenCreditsReachZero() {
let vm = ExerciseEditViewModel(mode: .add(makeDay()), context: container.mainContext)
vm.name = "Row"
vm.creditsRemaining = 1
XCTAssertTrue(vm.canSuggest)

vm.creditsRemaining = 0
XCTAssertFalse(vm.canSuggest)
}






There are 13 tests just around the exercise edit view model, plus separate coverage for offline error mapping. Not because this is academically interesting, but because this is the stuff that breaks in front of real users.






Offline is not a server error



Another small detail: connectivity failures are mapped separately from backend failures.




CODE
static let connectivityCodes: Set<URLError.Code> = [
.notConnectedToInternet,
.networkConnectionLost,
.timedOut,
.cannotConnectToHost,
.dataNotAllowed,
]






The resulting message is intentionally plain:




CODE
"You're offline. Reconnect to use AI features."






No “unexpected server response”. No fake intelligence. Just tell the user what happened.






The actual lesson



Shipping AI features is mostly normal software engineering with a probabilistic dependency in the middle.



The model call matters, but the surrounding contract matters more:




  • Can the user invoke it right now?

  • What happens if the network dies?

  • Is usage counted consistently?

  • Does the UI reflect server state immediately?

  • Are the edge cases testable without calling the model?



Once those pieces are in place, the AI feature stops feeling like a prompt wired to a button and starts feeling like part of the app.



That is the bar I keep coming back to: not “does the model answer?” but “does this survive normal product reality?”

Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
1 Quelle
Debian 11 Long Term Support reaches end-of-life
1 Quelle
Updated Debian 13: 13.7 released
1 Quelle
USN-8741-1: Flatpak vulnerabilities
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten AI Features Need Product Edges, Not Just Better Prompts

Thematisch verwandte Begriffe: Features, Need, Product, Edges · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...