htmx
htmx Best Practices & Go/Templ Integration
Apply correct htmx patterns when building hypermedia-driven web applications, especially with Go and templ.
Core Principles
- Return HTML fragments, not JSON — htmx is designed for hypermedia; the server returns rendered HTML
- Use HTML attributes, not JavaScript — prefer
hx-*attributes overhtmx.ajax()orfetch()calls - Server controls behavior — use response headers (
HX-Retarget,HX-Reswap,HX-Redirect) for control flow - Check
HX-Requestheader — return fragments for htmx requests, full pages for normal requests - Don't mix paradigms — avoid using
fetch()alongside htmx in the same page; pick one approach
Reference Files
Read the relevant file for detailed patterns, code examples, and best practices:
templ-integration.md — Templ + htmx
- CRITICAL: Templ interpolation rules (dynamic attributes,
{ }vs quoted strings) - Dynamic JSON in
hx-vals— usejson.Marshal, notfmt.Sprintf - URL construction patterns (fmt.Sprintf, concatenation, templ.URL)
- Templ component patterns (spread attributes, conditional attributes, full page vs partial)
- JavaScript and
hx-onevents in templ (JSFuncCall, OnceHandle, event name syntax) - Embedding Go data in script tags
- Alpine.js listening to htmx events from templ
go-handlers.md — Go Server Patterns
- Fragment vs full page response (
isHTMXRequesthelper) - Separate routes for partials vs full pages
- Multi-target OOB responses (writing multiple components)
- htmx-aware redirects (
HX-Redirectinstead of HTTP 302) - Event-driven list reloads with
HX-Triggerheader - Delete with empty response
- Validation error re-rendering with error state
attributes-reference.md — Swap, Triggers & Headers
- Swap strategies table (innerHTML, outerHTML, delete, morph, etc.) and modifiers
- Trigger patterns (events, special triggers, modifiers, filters, multiple triggers)
- Self-terminating polling pattern
- Request headers (sent automatically) and response headers (server control)
- Out-of-Band (OOB) swap patterns and gotchas
patterns-and-extensions.md — Advanced Patterns
- Error handling (4xx/5xx don't swap by default — 4 solutions)
- Filter state preservation with
hx-includeandhx-push-url - Forms and file uploads (auto-submit, progress, external values, radio/checkbox)
- Inline editing pattern (read-only row ↔ edit form)
- Alpine.js + htmx integration (separation of concerns, event listening,
htmx.process()) - Loading indicators and disabled elements
- Sync strategies (
hx-sync: replace, abort, queue) - Target selectors (this, closest, next, previous, find)
- Extensions (json-enc, SSE, WebSockets, head-support, preload)
- JavaScript event patterns (delegation, afterSwap vs afterSettle,
htmx.onLoad) - Common anti-patterns table
- CSRF protection pattern
- Configuration via meta tag
- Useful Go libraries (htmx-go, go-htmx, typed-htmx-go)
More from gopherguides/gopher-ai
go-best-practices
|
39templui
templUI component library for Go templ apps. Use for templUI components, Script() setup, Go variable interpolation in JS, HTML-to-templ conversion, HTMX/Alpine integration.
36tailwind-best-practices
Tailwind CSS guidance: utility-first patterns, theme/color config, dark mode, responsive design, v4 syntax, content/source paths. Trigger for any Tailwind-related styling question.
31gopher-guides
Authoritative Gopher Guides Go training materials. Trigger when reviewing Go code, asking 'what's idiomatic?', 'how do professionals do this?', or learning Go conventions.
28second-opinion
Get a second LLM opinion on complex architectural decisions, design trade-offs, library/framework choices, or security-sensitive code. Trigger when uncertain or facing 'should I' calls.
27address-review
|
3