Skip to main content

πŸ”΄ Release v2.291.0

⭐⭐⭐ Complexity β€’ 16 commits β€’ 409 files β€’ 35,273 additions β€’ 6,491 deletions
Biggest release of the year. Adds interactive 3D basketball game, webhook-based reward distribution, and a complete overhaul of how community managers configure visibility and engagement features. Widget performance jumped from Lighthouse 42 β†’ 92+. Both end users and admins get major quality-of-life improvements.

What’s New

  • πŸ€ Basketball Game – Add a playable 3D basketball mini-game to your community with configurable difficulty levels, physics-based scoring, and leaderboard integration
  • πŸ”— Reward Distribution Webhook – Olly partners can now programmatically distribute rewards via API instead of manual uploads
  • πŸ‘οΈ Community-Level Visibility Controls – Tab visibility (Challenges, Achievements, Rewards, Games, Leaderboards) now set per-community, not globally, giving you control for each audience
  • ✨ Unified Create Workflows – All ”+ New” buttons (Challenges, Achievements, Posts, Rewards) now follow the same creation pattern for consistency
  • ⚑ Widget Performance – Loyalty widget now scores 92+ on Lighthouse (up from 42) β€” twice as fast, better mobile experience
  • 🎨 Shopify Ways to Earn – Completely redesigned the Shopify β€œHow to Earn” section with consistent theming, pagination, and modern layout

Apps Updated

User App

βœ“ Updated - 8 changes

API

βœ“ Updated - 3 changes

Admin

βœ“ Updated - 6 changes

MCP Server

βœ“ Updated - 1 change

Games

βœ“ Updated - 2 changes

Shopify

βœ“ Updated - 1 change

For Community Managers & Admins

πŸ€ Basketball Game Configuration
  • Add a playable 3D basketball game to challenges with full admin config panel
  • Set difficulty levels (Easy/Medium/Hard), ball speed, hoop height, and scoring sensitivity
  • Upload custom team logos, court images, ball styles, and stadium backgrounds
  • Configure sounds for scoring, misses, and achievements
  • View real-time leaderboards as users compete
πŸ‘οΈ Tab Visibility Moves to Community Settings
  • Migration complete: Tab visibility is now community-level, not org-wide
  • Set which tabs (Challenges, Achievements, Rewards, Games, Leaderboards, Posts) appear for each community
  • Perfect for running different engagement strategies per audience
  • Database migration handles all existing settings automatically
✨ Unified Create Wizard
  • All ”+ New” buttons now follow the same pattern: template selection β†’ form fill β†’ preview β†’ publish
  • Create Challenges, Achievements, Posts, and Rewards with consistent UI
  • Faster workflows, less confusion for new admins
πŸ”— Olly Reward Distribution
  • Partners can now integrate reward distribution via webhook API
  • Programmatically send rewards to users instead of manual CSV uploads
  • Full audit trail and error handling built-in
🎨 Shopify Ways to Earn Page
  • Complete redesign of the β€œHow to Earn” partner page
  • Consistent theming with your Nudj community design
  • Pagination for large lists of challenges and achievements
  • Better mobile layout and category navigation
πŸ› Admin Stability Fixes
  • Fixed organization switcher regression (cookie refresh in auth)
  • Fixed circular JSON in overlay modals
  • Improved back button navigation
  • Graceful handling of missing platform configuration

For End Users

⚑ Widget Performance Boost
  • Loyalty widget now loads 2x faster on mobile (Lighthouse 42 β†’ 92+)
  • Better performance on slow connections
  • Improved first-time render and interaction responsiveness
πŸ€ Basketball Game
  • New playable basketball mini-game in challenge library
  • Flick the ball into the hoop with realistic physics
  • Earn points based on accuracy and difficulty
  • Leaderboard shows top scorers across your community
πŸ› οΈ Better Error Handling
  • Platform now gracefully handles missing configuration
  • No more cryptic error pages β€” helpful fallback UI instead

Architecture & Performance

Widget Optimization (Lighthouse 42 β†’ 92+)

The embedded loyalty widget received a comprehensive performance overhaul:
  • Code splitting & lazy loading – Only load what’s visible
  • Database query optimization – Batch streaks queries, eliminate N+1 queries
  • Asset optimization – Tree-shaking, minification, efficient CSS
  • Metrics: Page load time down 50%, Lighthouse performance up 100%, CLS fixed
Benchmarks included in test suite for regression detection.

CI/CD Pipeline DX Overhaul

  • Incremental deploys – Only rebuild apps that changed (no unnecessary rebuilds)
  • Vercel prebuilt artifacts – Local builds with turbo β†’ prebuilt β†’ instant deploy
  • Turbo remote cache – Build cache shared across the team (30% faster warm builds)
  • Result: Full PR pipeline for docs-only changes drops from 8 min β†’ 30s

API Endpoint Optimization

Optimized remaining integration API endpoints for faster response times and lower database load. Complements the earlier v2.290 API optimization work.

Detailed Changes

  • Widget performance optimization – Lighthouse 42β†’92+ via code splitting, lazy loading, and query batching
  • Page load benchmark suite – Added db-query, lighthouse, and page-load benchmarks with baseline/comparison reports
  • Better platform config handling – Use notFound() instead of throwing on missing configuration
  • Streak query optimization – New batch helper eliminates N+1 queries
  • Olly reward distribution webhook – New POST /api/admin/olly/distribute-reward endpoint with full test coverage
  • XpGained event emission – Now correctly emits XpGained event for score-conversion XP in game sessions (was missing before)
  • Participation status backfill – Backfilled missing _ids in participation status entries
  • Integration endpoint optimization – Performance improvements across remaining integration API endpoints
  • Basketball game form – Full config UI with difficulty, physics, assets, and sound controls
  • Tab visibility migration – Moved from feature flags to community-level theme (community_theme.tabVisibility)
  • Community features tab – New unified tab for managing feature visibility per community
  • Create wizard unification – Standardized ”+ New” button and creation flow across Challenges, Achievements, Posts, Rewards
  • Org switcher fixes – Fixed regression where cookie wasn’t refreshed in JWT callback
  • Admin stability bundle – Fixed org switcher edge cases, circular JSON overlays, back button navigation
  • Ways to Earn page revamp – Complete redesign with consistent community theming
  • Category navigation – Better organization of challenges and achievements
  • Pagination – Handle large lists of engagement items efficiently
  • Mobile layout – Improved responsive design for smaller screens
  • Basketball game engine – Full 3D canvas-based basketball game with physics
  • Game config 404 handling – Stop retrying when game config returns 404 (prevents error loops)
  • Theme null handling – Fixed migration to handle theme: null in tab/feature visibility settings
  • API Client – Updated for new reward distribution endpoints
  • Design System – New components for basketball config UI and unified wizards
  • Models – Basketball game config types, tab visibility schema updates

Migration Guide

Tab Visibility: Feature Flags β†’ Community Theme

If you used feature flags to control tab visibility, no action needed β€” the database migration runs automatically:
Before (v2.286.4):
- Org-wide setting: Show/hide tabs globally across all communities
- Feature flag: enableChallengesTab, enableRewardsTab, etc.

After (v2.291.0):
- Per-community setting: community_theme.tabVisibility
- Migrated data automatically in database
- Each community can now have different visibility rules
If you’re querying the API directly, update your integration to use the new community theme endpoint instead of feature flags.

Breaking Changes

None. All changes are backward compatible. Tab visibility migration is automatic.

Contributor Highlights

Derek Counihan@erek_d@me.com5 commits β€’ +17,172 lines

ZuhayrK00@ZuhayrK003 commits β€’ +7,855 lines

dchnudj@dchnudj2 commits β€’ +7,868 lines

Jen@jestella082 commits β€’ +862 lines

James Cockayne@jamescockayne2 commits β€’ +298 lines

Saad@SaadK941 commit β€’ +903 lines

Release Stats

MetricValue
Total Commits16
Lines Added+35,273
Lines Removed-6,491
Files Changed409
Release SizeπŸ”΄ Massive
Complexity⭐⭐⭐ Complex

v2.291.0 deployed on April 16, 2026