AI coding guides & resources
Engineering decisions, tutorials, and video guides from the OTF team.

How to resume a signed-in browser task safely across agent turns
Design resumable browser tasks with Cloudflare Agents SDK, persist progress in your app, and recover safely when Browser Run restarts.
7 min read
Clerk M2M Tokens Are GA: How to Budget and Scope Service Credentials
A practical migration plan for Clerk M2M GA: separate machine identities, set token lifetimes, and estimate usage before billing starts.
7 min read
How to add script-directed dialogue with a multi-speaker text-to-speech API
Test whether one script can produce distinct, directed voices before adding multi-speaker text-to-speech to your app. Drama 3 is in preview.
8 min read
Should Gemini 4 Argon stay in your SaaS after November 30, 2026?
Compare one real Gemini 4 Argon task at its introductory token rates and the standard rates after November 30.
8 min read
How to choose a Cloudflare Queues jurisdiction before production
Set a Cloudflare Queues jurisdiction at creation, understand its scope, and plan a safe migration.
6 min read
Add an image generation API without using your final model for every draft
Use Flash for prompt iterations and Image 2.6 for reviewed finals. Measure the full workflow before choosing a default.
8 min read
Prisma 8 Postgres connection pools: replace connection_limit with pg.Pool
Prisma ORM 8 changes how PostgreSQL connections are capped. Learn when poolOptions is enough, when to supply pg.Pool, and how to budget replicas.
7 min read
Route Cloudflare Worker issue alerts to an agent without polling
Cloudflare can send Workers Issues as signed MCP Events. Route those alerts to a webhook, then fetch only the bounded evidence your agent needs.
7 min read
Let SaaS users hide table columns and keep their preferred layout
Give users control over dense tables with TanStack Table column visibility, then persist a safe, versioned preference per user.
6 min read
How to recover Cloudflare Worker streams and WebSockets after runtime updates
Use durable session events, acknowledged cursors, and safe retries to resume agent streams when a Cloudflare Workers runtime update interrupts a connection.
6 min read
Name Cloudflare Cron Triggers in Sentry
Give Cloudflare Cron Triggers clear Sentry monitor names. Map each schedule to its job, keep dispatch aligned, and scope billed checks.
7 min read
Test malformed AI tool calls before they break a production agent
Use controlled model faults to test invalid tool arguments, safe execution, bounded retries, and recoverable agent history.
7 min read
Add bulk actions to a SaaS dashboard table without acting on the wrong rows
Use stable database IDs for table selection across pages, then validate every requested record on the server before a bulk action runs.
6 min read
Run Google ADK in your TypeScript SaaS app without a Python service
Run a typed Google ADK agent behind your existing TypeScript API route, with Zod tool inputs and tenant-scoped access.
6 min read
Add a Muse Wonder screenshot and PDF assistant to a SaaS app
Add a screenshot and PDF assistant through Vercel AI Gateway with Muse Wonder, while keeping the gateway key on your server.
6 min read
How to run OpenCode 2.0 on Cloudflare and recover after Durable Object eviction
Use Cloudflare’s experimental OpenCodeHarness to persist agent sessions in SQLite and resume interrupted work after Durable Object eviction.
7 min readHow to keep profile avatars useful when user photos fail to load
Keep profile rows useful when photos fail. Use shadcn AvatarImage and an explicit AvatarFallback, with steady sizing and accessible identity cues.
6 min read
A year of an AI app builder costs $192 to $2,400. Here is the $99 route.
Compare 12-month AI builder prices with a $99 kit, free models, Claude Pro, credit allowances, and separate hosting costs.
7 min read
Android 16 ignores portrait locks on tablets: test your app on large screens
Android 16 targeting API 36 ignores orientation and aspect-ratio locks on large screens. Test responsive layouts before your next release.
6 min read
Supabase Data API exposure changes on 30 October: grant tables explicitly
From 30 October 2026, Supabase stops exposing new public tables to the Data API by default. Here is what to grant, and how to check it.
6 min read
Precise location in Android apps: the location button comes first
Android's location button is the recommended minimum for precise location from 27 January 2027. Here is the audit.
6 min read
Android developer verification: four countries first, global in 2027
Android developer verification starts in four countries, then goes global in 2027. Who registers and what stays.
6 min read
Your OpenAI model IDs stop on 23 October, so map each one before then
Which OpenAI model IDs stop on 23 October 2026, and the replacement OpenAI lists for each.
6 min read
shadcn's switch toggles one setting, so give each switch a label readers see
shadcn's switch is a settings toggle, and its label does most of the work. Labels, save rules and tests.
6 min read