ios

44 posts

toss

Toss’s Speed and Quality: Are Commercial Tools Enough? — Tossion (opens in new tab)

Toss’s QA Platform team built Tossion to replace a rigid commercial test case management system with a platform they could continuously adapt. It unifies test cases, manual and automated results, evidence, history, and release snapshots while preserving a clear record of what was tested at each point in time. The platform later expanded into AI-assisted PR analysis, test case generation, and real-device regression testing, enabling QA processes to evolve at Toss’s speed. ## Why Tossion Was Needed - Previous QA information was scattered across automation results, manual test results, test cases, and decision evidence. - Answering questions such as “How did this test perform last time?” required checking multiple systems. - The commercial TCM could not be modified quickly, and requests for new features often stalled. - Toss needed a platform that could be changed directly as new QA requirements emerged. ## Preserving Test History - Tossion organizes work as: - Project - Suite - Section - Test Case - Test cases continue to change as products evolve, but test runs must preserve historical reality. - When a test run is created, it copies the test case’s assignee, steps, and description instead of merely referencing the current test case. - Status changes create history entries showing who made the decision, when, and against which version. - Closed test runs store snapshots of test cases, comments, and automation results, so reports remain available even if the original test cases are later deleted. - Manually selected test cases override Type or Platform filters. ## Collaborative Test Execution - Test runs progress through `Active → Completed → Closed`. - Assignee-based charts show each person’s remaining work at a glance. - Fields such as Status, Type, Assignee, Version, Platform, RNR, and History are added or removed based on actual usage. - Multiple users can work in the same test run simultaneously: - Active viewers appear as avatars. - Editing locks prevent conflicts. - Locks are automatically released when users leave or disconnect. - Status changes are synchronized without requiring a refresh. - The main benefit is short feedback loops: requested improvements can be built and deployed immediately. ## AI-Assisted Release and PR Analysis - Toss planned to use AI for test case creation, PR analysis, regression automation, and execution. - Tossion analyzes every PR included in a release, separating those with QA labels from those marked as not requiring QA. - The goal is not merely to summarize changes, but to audit whether “no QA needed” classifications are correct. - An agent running on a QA server: - Registers with Tossion. - Polls for work. - Executes the AI already authenticated on the server. - Hundreds of PRs are divided into smaller batches and analyzed in parallel for deeper review. - Results are checked for vague or unusable content, such as: - Missing screens or conditions. - Repeated PR titles. - Raw function names. - Missing reproduction steps, expected results, failure symptoms, or reasoning. - Invalid analyses are retried, and the number of merged PRs is compared with the number of analyzed PRs to detect omissions. - Historical incident data increases risk when a new PR touches files associated with past outages. - Results are uploaded after each batch, allowing interrupted jobs to resume without repeating completed analysis. - The resulting “must-test” list defines the scope of the Sprint test run. ## AI-Generated Test Cases - AI generates test cases for new features, but Tossion controls their placement in the test case tree. - AI returns paths such as `Assets > Account Connection > Select Bank`; Tossion converts them into actual sections, reusing existing sections or creating missing ones. - Reliability is checked in three layers: - AI reviews its own output for missing branches, error cases, and boundary values. - Scripts validate naming, numbering, screen coverage, and requirements coverage. - A separate AI creates an independent test plan based on ISTQB and ISO/IEC 29119 practices. - The plan and generated cases are compared: - Planned but missing cases indicate omissions. - Cases outside the plan indicate unplanned scope. - This catches state-based scenarios that screen-oriented test generation might miss. - Generated cases are uploaded through a portable CLI rather than direct UI integration, reducing dependency on local packages, runtimes, and paths. - Stable cases can later become regression tests. ## Running Regression Tests on Real Devices - A Tossion execution modal specifies: - Device - Build - Test scope - Target test run - Runners connected to Android and iOS physical devices register themselves with Tossion but require administrator approval before receiving work. - Runners report device status every 30 seconds. - Tossion supplies the correct build for installation, ensuring results are tied to a known version. - Users can run the full regression suite or a selected section. - Progress is streamed as scenarios finish, including duration and failure messages. - Results are stored at the step level: - Status - Duration - Error message - Screenshot - Scenario-level video - Automation results can be attached directly to the relevant Sprint test run, making them part of the same record used for manual testing. ## Linking Automation Results to Test Cases - Aggregate reports such as “200 regression tests, 3 failures” do not identify which manual test case rows were covered. - Tossion aims to connect test cases and automation in both directions: - Generate automation code from test cases. - Write automation results back into individual test cases. - This removes the need for QA engineers to manually reconcile separate reports with test case lists. Tossion’s central value is not just test management, but ownership and adaptability. By combining immutable test history, collaborative execution, AI validation, and real-device automation in one extensible platform, Toss’s QA team can adjust its tools and processes as quickly as product requirements change.

discord

Discord Patch Notes: August 4, 2026 (opens in new tab)

Discord’s August 4, 2026 patch focuses on usability, reliability, performance, and interface cleanup across desktop and mobile. The update introduces another phase of the User Settings redesign and upgrades the desktop client to Electron 42, producing modest CPU improvements. Most remaining changes are bug fixes for overlays, profiles, themes, input fields, responsive layouts, and mobile rendering. ## User Settings Redesign and Performance - “Activity” has been renamed **Games & Apps**. - “Content & Social” is now **Messaging Permissions**. - Related options, including Authorized Apps, Connections, operating-system settings, and keybinds, have been consolidated. - Wording and styling were updated across Data & Privacy and Activity Privacy settings. - Discord’s desktop client now runs on **Electron 42**, improving maintenance and slightly reducing CPU usage. ## Desktop Fixes - Fixed email changes failing after CAPTCHA completion. - Resolved black screens caused by the game overlay when certain games were tabbed out. - Stabilized profile popouts that resized or jittered when game data loaded. - Fixed theme previews permanently changing the default theme. - Restored the ability to reposition the overlay chat widget and prevented overlay actions from grabbing images or opening dialogs in the wrong window. - Corrected activity-status issues when activity detection was disabled. - Fixed custom theme switching after using the theme editor. - Improved server selectors and long dropdowns, preventing selections from reverting or scrolling back to the top. - Corrected invite validation after users left a server to make room under the server limit. - Restored access to main profiles when users also had private per-server profiles. - Fixed numerous layout and interaction issues involving coachmarks, modal positioning, focus rings, close buttons, profile cards, and resized windows. - Improved truncation for long server names, connection names, custom statuses, and other profile text. - Fixed visual defects involving badges, gradients, phone verification fields, wishlist cards, and game-shop modals. - On Linux, Stable and Canary clients now use distinct window classes so taskbars and window managers group them correctly. ## Mobile Fixes - Improved Android game-profile scrolling performance and reduced dropped frames. - Fixed clipped profile controls on iPad. - Resolved an Android gesture issue that could leave the You Bar on a blank screen. - Fixed server icons failing to render after returning from picture-in-picture mode. - Corrected iOS name-style effects such as “Toon” and “Pop” when status text was present. - Prevented multiline pastes from expanding single-line fields such as nicknames, server names, and role names. - Fixed clipped game titles in the Active Now card, especially on iPad and with larger text sizes. - Improved display of long connection links on Android and iOS profiles. - Corrected mismatched colors on Android’s Server Boosts page in Light theme. - The provided patch notes end during an additional Android fix concerning the last friend in a list. The changes are merged but may still be rolling out across individual platforms. Users experiencing remaining issues are directed to Discord’s community-run bimonthly bug megathread.

discord

General Availability of Mobile Platform Support Arrives in Discord Social SDK Version 1.10 (opens in new tab)

Discord Social SDK 1.10 makes mobile support generally available for iOS and Android, extending Discord’s social features into mobile games. The update focuses on reducing friction through improved Account Linking, richer Rich Presence options, and mobile commerce. Early partners including Tencent, Scopely, and Ninja Kiwi report stronger social engagement, easier squad formation, and increased community activity. ## Mobile Platform Support - The SDK supports: - Android 7.0 and later - iOS 15.1 and later - C++, Unreal Engine, and Unity projects - The goal is to bring desktop-like Discord social experiences to smaller screens and on-the-go play. - Discord says the SDK was refined with launch partners and tested against real mobile player behavior. ## Rich Presence on Android - Android games can now share live Rich Presence through multiple methods: - Account Linking - Remote Procedure Call (RPC) - These integrations improve game visibility and help players share what they are playing with their Discord communities. ## Faster Mobile Account Linking - Deeplink support simplifies the account-linking process. - Players can connect their Discord accounts directly and with fewer steps. - The reduced friction is intended to improve retention, engagement, onboarding, and campaign activation. ## Discord Social Commerce on Mobile - Discord is expanding Social Commerce to mobile games. - Developers can sell in-game items through Discord to existing players, friends, and potential new customers. - Early Marvel Rivals pilot results showed: - 41% of purchases were gifts. - 25% of gift buyers were lapsed or new players. - These results suggest Discord’s social graph can support both monetization and player acquisition. ## Tencent: Arena Breakout - Arena Breakout used the SDK to address fragmented cross-platform friend networks and slow squad formation. - Its integration included: - A Unified Friends List - Game Invites - Improved mobile Account Linking - Reported outcomes included faster squad formation, more cross-platform messaging, and increased activity in the game’s official Discord server. - Tencent plans to combine Discord social features with limited-time in-game events. ## Scopely: Marvel Strike Force - Scopely integrated Discord into its turn-based RPG to support: - Player communication - Alliance management - Community interaction - Customer support and moderation - The integration produced immediate account linking among new players and rapid creation of alliance channels. - Community feedback was strongly positive, with players mainly wishing the integration had arrived earlier. ## Tencent: Delta Force - Delta Force used Discord to connect in-game play with its broader player community. - The initial integration focused on Account Linking and the Unified Friends List. - Single-tap mobile linking replaced browser redirects and manual logins, improving onboarding and campaign activation. - The integration supported squad formation and community-created content, with future plans for Discord discoverability and Rich Presence invites. ## Ninja Kiwi: Bloons TD 6 - Bloons TD 6 began integrating the SDK with Account Linking and the Unified Friends List. - The provided article text ends before describing the full integration or its results. The update positions Discord’s Social SDK as a way for mobile developers to strengthen retention, social discovery, community participation, and monetization. Developers targeting mobile games should consider the SDK’s deeplink Account Linking, Android Rich Presence, Unified Friends List, invites, and emerging commerce capabilities.

toss

Building Toss’s Device Farm (opens in new tab)

Nebula is Toss’s centralized device farm, turning real-device testing into a simple API call instead of a team-specific infrastructure project. It grew from 15 devices and one developer into a 24/7 platform with more than 100 devices, shared across the company. The team replaced Appium with a faster, stateless custom driver and invested heavily in real-time streaming, reliability, security, and compliance. ## From Team-Owned Farms to a Central Platform - Before Nebula, teams managed their own small farms using MacBooks or Mac minis. - Each team repeatedly solved the same problems: - Appium setup and maintenance - Device detection and recovery - OS-version compatibility - USB and hardware failures - Security and compliance - Most teams could manage only five to ten devices, and resources remained isolated. - Nebula centralized device operations so product teams could focus on testing rather than infrastructure. ## One API for Real Devices Nebula’s core goal is to let anyone control a physical device from anywhere through a single API. - Clients reserve a device and invoke actions such as clicks or text input. - Users do not need to know which host owns the device or configure ADB, Xcode, cables, or test servers. - The same API supports frontend tools, SDKs, CLIs, direct API clients, and automated systems. ## Four-Layer Architecture - **Clients:** Web interfaces, SDKs, CLIs, and direct API calls. - **Server:** Orchestrates device discovery, allocation, and test execution. - Kafka distributes execution requests. - Multiple runners consume work horizontally as demand grows. - `occupy`, `assign`, and `release` provide distributed locking so tests cannot interfere with one another. - **Agents:** Run on Android/Linux and iOS/Mac hosts, discover local devices, and forward server requests. - **Devices:** Each device has a controller server and runner that execute actions on the physical phone. ## Why Nebula Replaced Appium ### Faster execution - Nebula’s click and input operations were more than ten times faster than Appium in common cases. - Much of Appium’s latency comes from `waitForIdle`, which waits for the screen to stabilize before acting. - Disabling that wait narrows the difference to roughly two or three times. - Appium prioritizes robustness against changing screens, while Nebula prioritizes immediate interaction for live remote control. ### Stateless operation - Appium requires sessions that can take 15–40 seconds to initialize. - Session startup becomes increasingly fragile and difficult to manage at scale. - Nebula keeps device controllers pre-warmed and accepts stateless HTTP requests, eliminating session setup and reducing failure points. ### Company-specific customization Because Nebula owns its driver specification, it can provide: - A custom IME that preserves Korean and emoji input. - Toss-specific signal triggers. - App Center integration for installing pre-release builds. - Built-in enforcement of internal security policies. The driver uses Android ADB and UiAutomation, and Swift/XCTest on iOS. Its OpenAPI specification generates Go and TypeScript interfaces. ## Real-Time Interaction and Screen Mirroring Nebula needed users to watch and control remote devices simultaneously, not merely replay predefined test steps. ### Android - Instead of using `scrcpy` directly, the team adapted its encoding approach. - Android’s `SurfaceControl` creates a virtual display. - `MediaCodec` encodes the output as H.264. - A broadcaster distributes the stream to multiple browser viewers. ### iOS - iOS screen capture is constrained by USB access and cannot expose the display as freely as Android. - Existing approaches such as QVH and Appium MJPEG did not support simultaneous viewing and interaction. - Nebula developed a capture path inspired by QuickTime’s iOS capture mechanism without exclusively claiming the USB connection. - Both platforms now use H.264 streaming and broadcasting, allowing the entire device farm to be viewed in a browser. ## Security and Compliance - Centralization made it possible to apply consistent security requirements across every device. - The team worked with Toss’s security organization to define mobile-device compliance standards. - Policies are enforced at the platform and driver levels rather than relying on individual developers. - Teams can therefore test on devices that already meet the company’s security requirements. ## Operating Hundreds of Devices Nebula must keep hardware and software running continuously. - **Hardware operations** - USB cables, hubs, and power delivery had to be tested and designed for large-scale use. - Physical failures still require human intervention. - Redundancy is being introduced to reduce service interruptions. - **Software operations** - Controllers and mirroring processes are orchestrated across Mac mini and Linux hosts. - Dead processes are automatically recovered. - Server, agent, controller, and mirroring deployments are performed without interrupting user tests. - Monitoring and observability cover devices, processes, and server performance. ## An Internal Ecosystem Built on the API Nebula has evolved from a device provider into shared testing infrastructure. - Web console for no-code interaction and test-step creation. - SDKs for writing E2E tests. - CLI support for terminals, CI/CD, and local AI agents. - Automated log verification during device interaction. - AI agents that plan and execute tests dynamically. - Direct API access for teams with specialized needs. Reported benefits include faster Appium migration, lower barriers to regression testing, and reducing manual verification from 30–40 minutes to under 10 minutes. Nebula’s main lesson is that a stable, simple API can become the foundation for a much broader testing ecosystem. Centralizing device infrastructure, replacing unsuitable abstractions, and treating real-time operation, compliance, and reliability as first-class requirements enabled Toss to scale physical-device testing across the company.

discord

Discord Patch Notes: July 7, 2026 (opens in new tab)

Discord’s July 7, 2026 patch focuses on performance improvements, cross-platform reliability, usability fixes, and bug cleanup. Notable changes include nearly 20% faster typical iOS startup times through React Native’s Fabric architecture, faster session connections, Linux looping-media fixes, silent message forwarding, and channel pinning for all servers. The remaining changes address a wide range of interface, profile, notification, search, and platform-specific issues. ## Performance and Reliability - iOS migration to React Native’s New Architecture, Fabric, produced nearly 20% improvements in typical app initialization times. - A session-start configuration change reduced p95 and p99 connection times by approximately 100 milliseconds. - Linux GIFs and videos now loop correctly after a deep media-stack fix. - Linux no longer gradually leaks X11 connections on NVIDIA systems, which could eventually prevent other applications from opening. - Windows startup now launches Discord quietly in the background instead of stealing focus from games. - Desktop clients no longer stop accepting mouse clicks after two rapid refreshes. ## Messaging and Server Features - Message forwarding now supports `@silent`, allowing users to forward messages without notifying recipients. - Channel Pinning is now available on all servers, rather than only Community-enabled servers. - Invites to servers a user already belongs to now open the server directly instead of incorrectly starting Server Tag Adoption. - Invalid search filters such as `has: hello` are no longer treated as valid filters on Android and iOS. ## Desktop Interface Fixes - Profile cards, custom-status hover bars, and other elements now have corrected corner shapes, positioning, and overflow behavior. - Long searches no longer cause “No results” text to overflow searchable dropdowns. - Small login windows no longer show an unexpected scrollbar or misaligned sign-in box. - Adding widgets while editing a profile no longer discards unsaved changes. - Badge links now close the profile modal before opening Nitro Home or the Shop. - The “24 hours” custom-status expiration now lasts a full 24 hours instead of clearing at midnight. - Spelling suggestions now appear when right-clicking misspelled text in fields such as display names, poll questions, and channel names. - Search filter dates no longer shift forward by a day when reopening the filters modal. - The Inbox keybind no longer locks the client when another modal is open. - Nitro items in a user’s own wishlist now open the subscription modal instead of offering an impossible self-gift. ## iOS Improvements - Channel-list scrolling is smoother and no longer jitters or jumps. - Notification settings correctly recognize already-enabled push notifications without requiring the page to be reopened. - Profile previews now reflect pending display-name style changes. - Scheduled event and Live channel location text truncates correctly within cards. - iPad browser invites now preserve the invite code and display the invite properly in Discord. - Profile-tab scrolling no longer causes content clipping. - Shop item previews no longer make profile text flash and disappear. - Nitro perk descriptions are easier to scroll when system text is enlarged. - Various visual issues were corrected, including theme-colored boxes, unclear channel-list banners, and invisible or overflowing elements. ## Android Improvements - Nitro carousel indicators are now visible across default themes. - Incomplete server-application alerts can be dismissed by tapping outside them or pressing Back. - Profile-picture editor labels and sliders for “Scale” and “Rotate” now appear correctly on affected themes. - Profile Call and Message buttons now render at consistent sizes after accepting a friend request. Overall, the update is primarily a broad maintenance release: users should see faster startup and connections, more consistent media and navigation behavior, and fewer platform-specific interface bugs.

discord

Discord Update: June 25, 2026 Changelog (opens in new tab)

Discord’s June 25, 2026 changelog focuses on making game discovery, mobile navigation, and social interactions more convenient. Highlights include a weekly Trending Games page, faster iOS uploads, improved mobile controls, easier friend invitations, and richer game information. Discord also adds organizational tools such as pinned DMs and channels. ## Trending Games - A new Trending Games page updates every Thursday. - It showcases popular single-player and multiplayer games across Discord. - The page is designed to help users find games to play or stream during game nights. ## Mobile Updates - **Tap to React** lets users double-tap a message to apply a preset emoji. - The shortcut emoji can be configured in **User Settings > Chat**. - A new **You Bar** gives mobile users quicker access to their identity and profile. - Mobile users must confirm before calling a DM or Group DM, reducing accidental calls. - iOS photo uploads are approximately **17% smaller** and have about **12% lower latency** after compression and performance improvements. - Wishlists are now available on mobile, including the ability to view other users’ wishlists. ## Chats, Channels, and Game Communication - Discord and Riot account linking is rolling out for **League of Legends** and **VALORANT**. - Players can view Discord friends in-game and invite them directly from the Riot game client. - DMs, Group DMs, and server channels can be pinned for easier access. - Voice invitations now indicate who is currently in the call, helping users avoid unexpected interruptions. - Desktop users are encouraged to send a wave after adding someone new, though they can send any message they choose. ## Expanded Game Profiles - Game Profile pages now include: - Screenshots - Supported platforms - Steam and OpenCritic reviews - Popularity on Discord - Links to the game’s official Discord server - Users can open these profiles by clicking a game’s name while someone is playing it. Discord’s updates primarily improve discovery and reduce friction across mobile, messaging, and gaming workflows. Users looking for additional changes can consult the latest monthly Patch Notes for bug fixes and other improvements.

toss

Why the Designer Built an App Instead of a Mockup (opens in new tab)

AI is changing design by letting designers create working prototypes rather than only static mockups. While building Toss’s “underlay” component, the author used SwiftUI, AI, and Metal shaders to design interactions directly on an iPhone. The experience reduced the translation gap between design and development and showed that a functional code prototype can become a more accurate specification than a traditional design document. ## Turning End Screens into New Starting Points - Toss identified screens that appear after users finish tasks, such as completing a transfer or payment. - These “dead ends” usually signal the end of an experience and encourage users to leave the app. - The project aimed to turn them into starting points for new experiences through a reusable component that could work throughout the app. ## The Idea Behind Underlay - Existing notification patterns—bottom sheets, toasts, push notifications, and overlays—attract attention but can interrupt what users are doing. - The author found inspiration in removing a shipping label from a moving box and revealing text that had already existed underneath. - This led to the concept of an **underlay**: instead of placing new information on top of the current screen, the component reveals something beneath it. - The component needed to be recognizable as a feature, preserve the existing experience, and remain reusable across the app. ## Designing Interaction with AI and Code - Figma prototypes showed that underlay’s movement mattered more than its static appearance. - Without experience in Protopie or Framer, the author built an iOS playground in SwiftUI using Xcode and AI. - The designer’s role was to: - Describe the intended experience - Select the best options proposed by AI - Evaluate the result on a real device - The process became a cycle of designing, choosing, testing, and refining. ## Building and Refining the Prototype - The author first created a personal playground for quickly experimenting with layouts, buttons, and text. - Each change was tested through actual device interaction rather than static previews. - The prototype was revised hundreds of times because imagined motion often felt different once implemented. - A scanning-light interaction was created to suggest that AI was reading the screen and finding relevant information. - The visual effect used a Metal shader to control pixel-level properties such as: - Light diffusion - Tint and width - Movement speed - Background darkening - The author gradually began adjusting shader values directly, despite having no prior shader or interaction-tool experience. ## Replacing Interaction Guidelines with a Repository - Instead of preparing a detailed document specifying timing, easing curves, and delays, the author gave developers the working prototype repository. - The developers reproduced the core structure almost immediately because they could inspect and run the implementation directly. - During refinement, the designer adjusted values and interactions directly on the developer’s laptop with AI. - A working reference made communication more precise than phrases such as “the motion feels wrong.” - Both the AI and developers could respond to the same concrete behavior rather than interpreting abstract descriptions. ## Designing the Implementation Structure - The production iOS code ended up closely resembling the prototype’s structure. - This happened because the author had built the prototype for rapid user testing and iteration, not specifically for production. - A well-structured prototype allowed design changes to be communicated through code and reused during implementation. - The article argues that a good design is not only visually convincing; its underlying construction should also be viable. - When a prototype is built in a development-ready way, it can function as the specification rather than disposable code. ## Applying the Approach - Start with the best possible experience instead of limiting ideas to what a familiar design tool can express. - Use AI and code to create a working artifact, since real devices reveal details and textures static tools may hide. - When handing off complex interactions, provide executable code or a repository instead of relying solely on written guidelines. - As AI handles more of the “how,” designers increasingly differentiate themselves through what they choose to imagine and build.

grammarly

Say It, Then Send It with Speech to Text (opens in new tab)

Writing on a phone remains difficult because typing is slow and native dictation produces messy transcripts. Grammarly Keyboard’s speech-to-text feature aims to solve this by converting natural speech into polished, send-ready text directly within any iOS app. It removes filler words, verbal corrections, and grammar errors while preserving the speaker’s tone and intent. ## Polished Dictation Anywhere - Speech-to-text is built into the Grammarly Keyboard. - Users tap the microphone, speak naturally, and receive cleaned-up text in the active app. - The feature supports multiple languages, accents, and speaking styles. - Users can switch between dictation and typing or further edit text with Grammarly’s keyboard. - Grammarly’s AI assistant is also available within the same keyboard. ## Designed for Mobile Writing - The feature targets frequent mobile writers, including professionals, students, and people capturing ideas while away from a desk. - Noise reduction helps improve recording quality. - Recording starts only when the user taps the microphone. - An on-keyboard indicator and iOS’s orange status light show when the microphone is active. - Audio is deleted after transcription and is not stored, linked to the user’s account, or used for model training. ## How to Get Started - Download Grammarly for iOS from the App Store. - Add Grammarly under **Settings → General → Keyboard → Keyboards → Add New Keyboard**. - Enable full access so the keyboard can operate across apps. - Open any text field, tap the Grammarly microphone, and begin speaking. Grammarly’s speech-to-text is presented as a practical alternative to raw phone dictation, especially for users who want fast, polished mobile messages without manual cleanup.

discord

Discord Patch Notes: June 4, 2026 (opens in new tab)

Discord’s June 4, 2026 patch focuses on usability, performance, accessibility, and bug fixes across desktop, Android, and iOS. Major updates include a mobile call-confirmation prompt, an 8% improvement in median desktop startup time, a redesigned Account settings page, and a clearer voice-invite embed. The release also addresses numerous layout, navigation, accessibility, and platform-specific issues. ## New Features and Improvements - **Mobile call confirmation** - Adds a confirmation step after tapping call buttons in direct messages. - Helps prevent accidental calls. - **Faster desktop startup** - Improved median startup times by approximately 8%, or around 650 milliseconds. - Additional performance work is planned. - **Redesigned Account settings** - Updates visuals and wording to match the broader User Settings redesign. - Moves Devices, Family Center, Account Standing, and Multi-Factor Authentication into nested Account pages. - **Improved voice-invite embeds** - Displays the relevant server and channel. - Shows the number of users currently in the voice channel. - Adds animated avatars and hover details for usernames. ## General Bug Fixes - Fixed Android custom status text crowding the clear button. - Corrected iOS event behavior involving external Markdown links, mentions, sharing, QR login, themes, notifications, and profile images. - Fixed guest server invites getting stuck in onboarding or application flows. - Improved handling of long nicknames, wrapped time indicators, event descriptions, community announcements, and high zoom levels on desktop. - Corrected inaccurate Android search results when combining `has:forward` with Media, Links, or Files filters. - Fixed mobile navigation issues, including the Set Status back button. - Prevented empty Bluesky handle submissions from bypassing form validation. - Removed incorrect or unreachable keyboard shortcut hints and scrollbars. - Improved tab navigation and focus behavior for accessibility. - Fixed visual inconsistencies involving rounded corners, themes, font scaling, gradients, cursors, borders, and tinting. - Corrected invite, server discovery, event, and profile interactions that opened the wrong view or failed silently. - Improved behavior at high zoom levels and in smaller windows, including Shop filters and Event Details modals. The patch is intended to make Discord more reliable and polished across platforms. Users may not receive every fix immediately because the changes are still rolling out individually.

meta

Reel Friends: Building Social Discovery that Scales to Billions (opens in new tab)

Friend Bubbles may look like a simple Reels feature, but building it required substantial engineering work. The feature surfaces Reels that friends have watched or reacted to, relying on an evolving machine-learning model and platform-specific behavior. Meta engineers explain that a key, unexpected discovery ultimately helped make the experience work. ### What Friend Bubbles Does - Highlights Reels that a user’s friends have watched or reacted to. - Connects social activity with Reels recommendations in a more visible way. ### Engineering Challenges - The team had to evolve the machine-learning model powering the feature. - iOS and Android users exhibited different behaviors, requiring the team to account for platform-specific usage patterns. - The feature’s apparent simplicity concealed complex recommendation and product-engineering challenges. ### Podcast Discussion - Meta Tech Podcast host Pascal Hartig speaks with Facebook Reels engineers Subasree and Joseph. - They discuss the model’s development, differences between mobile platforms, and the surprising insight that helped the feature succeed. - The episode is available through Meta’s podcast channels and services including Spotify, Apple Podcasts, and Pocket Casts. The episode illustrates why seemingly straightforward social features can demand deep experimentation, modeling, and cross-platform engineering.

discord

Discord Patch Notes: May 4, 2026 (opens in new tab)

Discord’s May 4, 2026 patch focuses on reliability, performance, usability, and server administration. Major improvements include nearly 5% faster Android video startup, reorganized desktop settings, faster Soundboard access, and self-updating Linux support. The release also fixes numerous bugs across account profiles, search, payments, moderation, notifications, and mobile platforms. ## Performance and Platform Improvements - Android video startup improved by 4.89%, bringing average feed startup time below 600 milliseconds. - Soundboard data now loads when users join a voice channel rather than when they first open the Soundboard, reducing initial access time. - Linux now uses Discord’s Rust-based automatic updater, eliminating the need for manual update installation. - Linux installation now supports `.rpm` and `.pkg.tar.zst` packages. ## Server Administration and Moderation - Discord fixed several issues affecting server administrators and moderators. - Fixes covered permissions, user states, and interactions with account-safety systems. - Discord encouraged administrators to report remaining problems through its community bug megathread. ## Desktop Settings and Organization - Desktop settings were consolidated into three pages: - Appearance - Accessibility - Developer - The former Appearance, Accessibility, Chat, Streamer Mode, and Advanced sections were reorganized. - Several settings received clearer wording and improved layouts. - Fixed problems involving theme synchronization, profile editing, unsaved-change warnings, currency labels, and server administration prompts. ## General User Interface Fixes - “GODLIKE!!” and “BEYOND GODLIKE!!” copy-username messages now have opaque backgrounds. - The Quick Switcher can now accept invite links, join the associated server, and navigate to it. - Fixed display problems involving long nicknames, search filters, avatar controls, profile links, status indicators, and Nitro badges. - French users can now search for “sondage” without the search term being incorrectly split. - Android search filters now correctly display their active blue state. - Fixed several modal, button-spacing, and navigation issues across desktop and mobile. ## Profiles, Avatars, and Customization - Per-server avatar links now copy correctly instead of copying the main profile avatar link. - Clearing per-server pronouns no longer repopulates them from the main profile; the main pronouns appear only as a placeholder. - iOS no longer switches unexpectedly to a per-server profile after copying a username. - Recent-avatar delete controls now appear correctly. - Custom Status editing opens above the full profile instead of replacing it. - Fixed an issue where clicking outside profile editing discarded changes without warning. ## Notifications, Search, and Media - Desktop Inbox no longer crashes when many notifications are cleared rapidly. - Mobile search tabs for Media, Pins, Files, and Links no longer spam errors or retry repeatedly after a connection loss. - Expired public image links in the Inbox preview now behave more reliably. - Fixed an issue where long mobile search-result nicknames obscured timestamps. ## Payments and Server Boosting - Server Boost marketing audio now stops when users enter the purchase flow. - Pressing Escape during payment no longer closes the underlying Server Boost page instead of the payment window. - Nitro trial recipient checkboxes now select friends correctly. - Fixed overlapping controls in Profile Settings and spacing issues on the domain-connection page. - GBP subscription settings now show the currency’s full name. Discord’s changes combine small interface corrections with measurable performance and platform improvements. Users should receive the fixes progressively, since deployment may still be rolling out across platforms.

discord

Discord Patch Notes: April 6, 2026 (opens in new tab)

Discord’s April 6, 2026 patch focuses on performance, accessibility, media sharing, and a broad set of usability fixes across desktop, iOS, Android, and Linux. The most notable improvements reduce desktop voice-channel deadlocks by about 30% and reduce iOS image-upload sizes by 17% and latency by 12%. Discord also continues a major accessibility audit while addressing numerous navigation, layout, search, and platform-specific bugs. ## Performance and Media Sharing - Desktop changes reduced deadlocked Voice threads by approximately 30%, making users less likely to remain stuck on “Connecting.” - iOS image uploads now use files roughly 17% smaller and complete about 12% faster. - Mobile landscape mode was improved by calculating padding on a screen-by-screen basis rather than relying on global padding rules. - Android server reordering now scrolls more smoothly. ## Accessibility Improvements - Discord is continuing a large accessibility audit across its clients. - Fixes addressed keyboard focus rings, button alignment, text overflow, and controls becoming inaccessible in longer languages. - Desktop profile buttons, settings controls, and the Server Invite modal received layout and focus improvements. - Discord encourages users to report remaining accessibility problems through its bug-reporting channels. ## Search, Navigation, and Account Behavior - Search negation now works correctly with filters such as `has:-image`. - The desktop `CMD/CTRL+F` shortcut no longer opens server search while a modal is active. - Browser-style back and forward navigation now behaves correctly after switching accounts. - Opening a Discord link from a browser no longer replaces the current channel without preserving a usable way to return. - Fixed several Settings and modal-navigation problems, including unexpected jumps to the bottom of the page. ## Desktop and Settings Fixes - Corrected keybind-button alignment and keyboard focus positioning. - Fixed profile buttons extending beyond the visible area in languages with longer text. - Shop item modals can now be closed by clicking outside them at minimum window height. - Profile bio changes are properly cleared by the Reset button. - Removed a persistent “NEW” badge from the `@time` command. - Corrected outdated role designs in Server Template previews. - Fixed visual issues involving nameplates, profile banners, Nitro perk badges, and Shop error-message spacing. - The Desktop update indicator no longer appears clickable while an update is still downloading. ## Mobile and Platform-Specific Fixes - Wayland now properly detects when Linux users become active or go AFK. - Android now provides visual confirmation after sending a friend request through a QR code. - Android theme changes update the entire Settings interface immediately. - Android QR-code login buttons now appear active when usable. - Android’s In-App Browser setting correctly opens links inside Discord. - iOS users can now switch out of Invisible status reliably. - iOS server lists no longer jump when switching servers. - iOS Server Guide progress bars and welcome messages now display and dismiss correctly. - Fixed an iOS crash that could occur when canceling a Nitro Classic subscription. - iOS search results now display images in bot-message containers at the correct size. ## Messaging, Profiles, and Social Features - Removed duplicate friend suggestions for users who had already received a request. - Fixed incorrect profile connection icons for external links. - Corrected duplicate usernames shown in pending friend-request tooltips. - Channel-name inputs no longer incorrectly offer custom emoji, which channel names do not support. - Student Hub join-method filtering now works properly. - Server Tags and badges received alignment fixes on Android. - The Nitro gift emoji picker’s “Add Emoji” button now functions correctly. Discord recommends updating as fixes reach each platform, with additional early testing available through the iOS TestFlight release.

discord

Discord Patch Notes: March 6, 2026 (opens in new tab)

Discord’s March 6, 2026 patch focuses on safer mentions, faster desktop startup, accessibility, and a broad collection of platform-specific bug fixes. Escaped `@everyone` and `@here` mentions are now correctly ignored by the backend, preventing accidental mass notifications. Discord also reports an 11.8% median improvement in desktop time-to-interactive after changing API payload ordering. ## Safer Mention Handling - Escaped mentions such as `\@everyone` previously appeared harmless in the client but could still notify roles when sent. - Backend handling now respects escape characters for `@everyone` and `@here`, ensuring these messages do not trigger mentions. - The change addresses cases where users received no warning before unintentionally notifying large server populations. ## Desktop Performance - Discord changed the order of API payloads sent to desktop clients. - The update reduced median launch time, or p50 time-to-interactive, by 11.8%. - The improvement builds on navigation performance work released the previous week. ## Accessibility Improvements - Discord completed a broad accessibility pass covering Quest, Events, Profiles, Activities, and Nitro surfaces. - The changes are intended to improve screen-reader navigation and usability across these areas. ## General and Platform Fixes - Non-Nitro users can once again forward messages containing large attachments from Nitro users. - iOS startup times after a full device restart were fixed; an asset request had been competing with the busy boot-time background queue. - Mobile animations no longer remain stuck mid-transition. - League of Legends game invites and Overlay “Join” invites were repaired. - Android fixes include the Forest theme gradient, duplicate server-invite information, modal layering, role colors, and server-onboarding alignment. - Search-result keyboard selection no longer remains stuck on the first item. - Desktop fixes address private-channel role setup, oversized hyperlinks, broken embeds, Quick Switcher shortcuts, tooltip links, and copying webhook URLs without confirmation. - Server administration fixes include role sorting, role-selector scrolling, onboarding dropdown positioning, audit-log deletion reasons, permission-panel alignment, and non-removable role controls. - iOS fixes restore back-swipe navigation, correct switch styling, reduce overly aggressive settings scrolling, and prevent the device from being kept awake unnecessarily. - Browser and mobile layout issues were corrected across server lists, profiles, Nitro Home, boost flows, and message controls. Discord recommends trying the iOS TestFlight build for early features and reporting remaining bugs through the community bug megathread. Fixes had been merged but could still be rolling out gradually across platforms.

daangn

Improving the iOS WebView Input Experience for (opens in new tab)

iOS WebViews can shift the entire page upward when an input receives focus, disrupting users as the virtual keyboard appears. The post describes four progressively refined approaches, ultimately using a single input whose opacity is temporarily set to zero before focus. This avoids iOS’s automatic scroll behavior, though it remains a fragile, version-dependent workaround best reserved for input-critical screens. ## Understanding the iOS WebView Problem - iOS uses two viewport concepts: - **Layout Viewport:** The CSS layout area, which does not shrink when the keyboard opens. - **Visual Viewport:** The area visible to the user, which becomes smaller. - Because the focused input must remain visible above the keyboard, iOS shifts the page upward. - The resulting movement can push important content off-screen, and WebView code cannot fully control this behavior. ## Attempt 1: Restore the Scroll Position - The first approach listened for `visualViewport` `resize` and `scroll` events. - It reduced the wrapper’s height by the keyboard height and called `window.scrollTo(0, 0)`. - This failed because iOS moved the page before the event handler could restore it. - Users saw flickering and shaking as multiple resize events triggered repeated corrections. ## Attempt 2: Follow `offsetTop` - Instead of undoing the movement, the implementation followed it. - `visualViewport.offsetTop` was used to adjust a fixed wrapper’s `top` position. - A short delay was required because iOS updates `offsetTop` asynchronously. - This reduced the visible jump but still caused subtle shaking while the keyboard animated. - Rapidly switching inputs or opening and closing the keyboard made the instability more noticeable. ## Attempt 3: Fake and Real Input Swap - This approach prevented iOS from scrolling to the focused input by focusing a real input positioned off-screen. - A visible, read-only “fake” input received the user’s tap, then focused the hidden real input. - Once the keyboard appeared, the two inputs were swapped so the real input became visible. - The page no longer experienced major upward movement. - However, two inputs required synchronization of values, selection, placeholders, textarea sizing, mentions, and emojis. - Swap timing, keyboard detection, and native bridge dependencies made the implementation increasingly complex. ## Attempt 4: Temporarily Hide the Input with Opacity - The final approach kept only one input. - On `touchstart`, the input’s `opacity` was set to `0` before calling `focus()`. - iOS appeared not to perform its automatic scroll-into-view behavior for an invisible input. - After detecting that the keyboard had opened—using the visual viewport and a keyboard-height threshold—the input’s opacity was restored to `1`. - This preserved the input’s state and avoided synchronization problems. - The technique is still a hack: behavior may change across iOS versions, and it can cause minor timing issues. The recommended compromise is to apply the opacity workaround selectively on pages where writing is central to the experience, rather than across the entire WebView application. It prioritizes uninterrupted user interaction despite the lack of a clean, standard iOS API.

discord

Discord Patch Notes: February 4, 2026 (opens in new tab)

Discord’s February 4, 2026 patch focuses on performance, streaming, permissions, mobile consistency, and bug fixes across desktop, iOS, and Android. The largest improvements include faster desktop rendering, zoomable screenshares, a new Slowmode bypass permission, and continued migration of Discord’s audio/video backend to Rust. The update also adds usability refinements and resolves numerous interface, profile, notification, and stability issues. ## Performance and Infrastructure - Desktop navigation and interaction are significantly faster, especially on systems with limited processing capacity. - The improvements were primarily achieved by replacing slow CSS selectors rather than optimizing APIs or components. - More than 80% of Discord’s audio/video traffic now runs through the Rust-based backend. - Stream previews load substantially faster during the start-stream process. ## Screensharing and Media - Users can zoom and pan screenshares and game streams with a mouse wheel or laptop trackpad. - Android now correctly plays videos containing multiple audio tracks, such as microphone and game audio. - Currently playing voice messages stop correctly when users log out. - Android Group DM notifications now show the group name instead of the sender’s name, matching iOS behavior. ## Server Permissions and Time Formatting - A new **Bypass Slowmode** permission lets server administrators trust selected members to bypass slowmode restrictions. - The permission can be integrated into existing roles through Role Settings until February 23. - Desktop now includes an `@time` command for generating localized Linux timestamps that automatically adapt to each viewer’s time zone. ## General Usability Improvements - Vibing Wumpus has been updated to version 2.0 and can be summoned with: - `Ctrl+Alt+Shift+W` on Windows/Linux - `Cmd+Option+Shift+W` on macOS - Pressing Escape while editing a desktop profile no longer closes the entire profile modal. - Copying with nothing selected no longer clears the clipboard. - Browse Channels on mobile has officially left beta. - Clicking role mentions now shows users assigned to that role for all stable users. - Invite Friends to Server supports both usernames and display names. - Ignoring a friend request correctly changes the action from “Accept Friend Request” to “Add Friend.” ## Profile, Themes, and Server Interface Fixes - Fixed cursor-jumping while editing the About Me section. - Avatar Decorations now render correctly in per-server profile editing. - Profile Theme gradients fill their modal correctly. - Server tags now appear accurately in desktop profile previews. - Fixed alignment and styling issues in Members, Emoji, Connections, and Display Name Styles interfaces. - iOS Client Themes no longer scroll at extremely high speed. - Channel categories on iOS no longer resemble unread channels. - Android no longer displays an extra bottom bar that blocks interaction. ## Stability and Bug Fixes - Fixed crashes involving related stickers in servers without text channels. - Prevented duplicate Checkpoint and gift-reception modals. - Emoji editing no longer creates duplicates when Finish is clicked twice quickly. - Desktop Inbox filtering works correctly again. - Fixed a desktop lockup that could occur after adding a game to a profile without saving. - Mobile Community setup now renders properly. - The Shop displays multiple columns correctly on affected Android devices. - Keybinds involving keys above F10 now persist correctly. - Event previews properly render Markdown. - On iOS, GIF avatars selected through the GIF picker remain animated instead of becoming static images. - Additional fixes address onboarding overlays, dangerous-download modal spacing, role selection transparency, event buttons, server uploads, and localized status text. Discord’s update is primarily a quality and performance release. Users should see the greatest immediate benefits from faster desktop interactions, improved streaming controls, better mobile behavior, and more precise server administration tools, although individual fixes may continue rolling out by platform.