The team has not been responsive in the Slack and commits are grinding to a halt. The framework is lagging behind in the lightning-fast speed of AI development. I feel sorry for the people who spent several thousand dollars to attend the agent sessions at Kotlin conf. I'm using Koog minimally in one of my projects and will begin ripping it out.
Hey r/Kotlin, I posted kiit-codes a while back (original post). The feedback was useful and included a bug report that went out as a fix, so thanks.
Overview
A quick recap: Think HTTP style status codes, but not tied to HTTP. Status β Group β Code, where the first two are fixed and Code is open for your own domain. Use them in any layer of your app (services, background jobs, workers) and convert to HTTP or gRPC at the boundary. See the original post or the docs for the benefits. Itβs implemented in Kotlin Multiplatform, with a native TypeScript port in beta, so TypeScript gets idiomatic, exhaustive matching.
What's new
RFC 9457 Problem Details for HTTP APIs output. I had designed kiit-codes with consideration for this RFC 9457 early on, but it wasn't really complete or formalized until a comment on the Kotlin Slack and a couple of other discussions pushed me to tighten this up. See examples below
kiit-codes overview
RFC 9457
Here is an example of a validation error with a custom code:
val OUT_OF_STOCK = Rejected(
name = "OUT_OF_STOCK",
title = "Item out of stock",
origin = "shop.example.com",
scope = "orders.items",
)
val errors = Err.ErrorList(
listOf(Err.on("quantity", "only 2 in stock")),
"Your order could not be completed",
)
val problem = ProblemConverter().convert(OUT_OF_STOCK, errors)
JSON: Converted to JSON for an API response, it looks like this :
{
"type": "https://shop.example.com/docs/codes/orders/items/Failed/Rejected/OUT_OF_STOCK",
"title": "Item out of stock",
"detail": "Your order could not be completed",
"code": "shop.example.com:orders.items:Failed:Rejected:OUT_OF_STOCK",
"status": 409,
"errors": [
{ "field": "quantity", "message": "only 2 in stock" }
]
}
My Android git sync client kept failing silently, so I built a home screen widget that shows when my notes last synced. No git binary needed, everything is plain text in `.git`:
- `logs/HEAD`: last commit/pull and its time
- `FETCH_HEAD` mtime: last time the client reached the remote
- `refs/remotes/origin/<branch>` vs local tip: unpushed commits
- `MERGE_HEAD`, `rebase-merge/`: a stuck merge or rebase
Gotcha: SAF only grants a subtree, so I search every granted folder for `.git`. And check `packed-refs`, branch files vanish after `git gc`.
Cross-platform frameworks have improved significantly, especially regarding UI rendering speed and bridge efficiency. For 80% of business applications, e.g., e-commerce, booking platforms, CRM dashboards, they save significant time and budget.
However, when an app requires heavy background processing, deep Bluetooth/IoT hardware integration, or real-time camera/AR rendering, native code often becomes necessary to avoid performance bottlenecks.
For mobile developers and product managers:
- What hardware or framework limitation forced you to rewrite a cross-platform app natively?
- How do you manage long-term framework maintenance and dependency updates for clients?