← All Posts
Update

June 2026 Update: iOS App Launch, Battle Mode, and More

June 2026  ·  5 min read

June was a big month. The iOS app launched on the App Store, Battle Mode went live on both platforms, and somewhere in the middle of all that we fixed a genuinely embarrassing bug where the music kept playing after you locked your phone. Here's everything that changed.

New: iOS App

New Fluctra is now a native iOS app. Built in Swift/SwiftUI, it covers everything the web version does - all four game modes, the daily challenge with global leaderboard, gem purchases through Apple's payment system, and the same cloud-sync account backend.

A few things work better on native than on mobile web:

New: Battle Mode

New Real-time multiplayer. Create a room, share the 5-character code with up to three people, and start when everyone's ready. All players are on the same puzzle from the same seed - same board, same sequence - so whoever scores highest wins on equal footing. No board interference between players; your score is entirely yours.

Three wrong submissions costs a life. Lose all three and you're eliminated. Last player standing, or highest score when all rounds finish, wins. Battle Mode is on both web and iOS, and cross-platform rooms work out of the box.

Improvements

Daily Challenge seed consistency

Improvement The daily puzzle seed was slightly inconsistent between web and iOS near timezone boundaries - if you were close to midnight, you might've seen a different puzzle on each platform. It now derives consistently from UTC date on both. Every player sees the same board regardless of platform or local time.

iOS leaderboard now shows Free Play scores

Improvement Free Play scores from iOS weren't appearing on the global leaderboard - the request was returning an error on that platform. Fixed. iOS Free Play scores now show alongside web scores correctly.

Bug Fixes

Lightning meter not responding to taps

Fix Several players reported the lightning power-up meter wouldn't register taps even when fully charged. A CSS pointer-events rule was blocking tap events on the charged state. Fixed across desktop and mobile web.

Music showing as a media player on mobile

Fix Mobile browsers were registering Fluctra's ambient music with the OS media session, which caused a now-playing notification on the lock screen - like you were streaming a song. We switched the audio from an HTML element to Web Audio API, which doesn't trigger OS media session registration. The lock screen notification is gone.

Music continuing after screen lock

Fix Related to the above: audio was continuing when the screen locked. On iOS, the engine now pauses when the app goes to the background and resumes when it returns. On web, the Page Visibility API handles it immediately instead of relying on a background timer that Safari would throttle.

Desktop drag selecting text instead of cells

Fix Clicking and dragging across the grid on desktop was sometimes triggering the browser's native text selection - cells would highlight as selected text rather than game selections. Fixed by blocking default mouse selection on the grid container.

Score submission failing after device restore (iOS)

Fix A specific auth edge case on iOS - device restore with partial local storage - could cause score submissions to silently fail. Local user identity was present but authentication tokens had been cleared. The auth flow now detects this state and re-establishes a valid session before attempting any submission.

Battle room edge cases

Fix Two issues addressed: rooms where all players were eliminated weren't always transitioning to finished status, due to a type conversion error in the all-eliminated check. This could leave rooms open indefinitely. Also, two players joining simultaneously could both pass the player count check in a race condition - this is now handled atomically via Firebase transactions.

In-app purchase reliability (iOS)

Fix A sequencing issue in the StoreKit transaction handler could cause gems not to be granted if the app crashed at a specific point during purchase processing. The grant order is now crash-safe at every point - either the gems go through or you get a clean retry on next launch, never a permanent loss.

What's Next

July is focused on three things: a shareable results card after your Daily Challenge (post your score without spoiling the puzzle for others), more Free Play levels past the current 105, and performance improvements on older iPhone models.

If you've got requests or bugs, send them to hello@fluctra.com. We actually read them.