Qiro 0.2 Is Here: Analytics, API Keys, and a Redesign
It’s been six weeks since our initial launch and we’ve shipped a lot. Qiro 0.2 is the release that turns Qiro from a promising tool into one you can build real workflows on top of.
What’s new
Completely rebuilt analytics dashboard
The old analytics page was functional but basic. The new dashboard gives you a full picture of your QR code performance:
- Scan trends — hourly, daily, weekly, and monthly breakdowns with sparklines
- Geographic heatmap — see where in the world your scans are coming from
- Device breakdown — iOS, Android, and desktop splits
- Top performers — instantly see which codes are driving the most scans
All of this is powered by Elixir’s native data processing — no external analytics service, no data leaving your server.
First-class REST API
Integrate Qiro into any workflow with the new REST API:
POST /api/v1/qr_codes
Authorization: Bearer qiro_live_abc123
Content-Type: application/json
{
"name": "Product Launch Campaign",
"destination_url": "https://example.com/launch",
"style": "dots"
}
Every API endpoint supports full CRUD operations on your QR codes. API keys are workspace-scoped with rate limiting baked in.
Generate a key from Settings → API Keys. Rate limits are shown in every response header.
UI redesign
We redesigned the entire UI from scratch with a focus on information density and keyboard accessibility. Some notable improvements:
- Sidebar navigation with workspace context at a glance
-
Command palette (
⌘K) for jumping to any QR code or page - Keyboard shortcuts throughout the dashboard
- Improved dark mode with better contrast ratios
Performance improvements
The scan redirect path — the single most performance-critical thing Qiro does — is now measurably faster:
| Metric | 0.1 | 0.2 |
|---|---|---|
| P50 redirect latency | 8ms | 3ms |
| P99 redirect latency | 45ms | 12ms |
| Concurrent scans (single node) | 5,000 | 15,000 |
We achieved this by preloading all active QR code short codes into an ETS table on startup, eliminating the database round-trip for every redirect.
Upgrading
If you’re running Qiro 0.1, upgrade is a single command:
docker pull ghcr.io/qiro/qiro:0.2
docker stop qiro && docker run ... ghcr.io/qiro/qiro:0.2
Run mix ecto.migrate after upgrading — there are two new migration files.
What’s coming in 0.3
We’re focused on three things for the next release:
- Scheduled destinations — time-based redirect rules (e.g. “redirect to X on weekdays, Y on weekends”)
- Webhooks — fire events to your own endpoints on every scan
- Team roles — fine-grained permissions for workspace members
Follow us on GitHub for daily updates. As always, PRs welcome!