Skip to content

bug(ui): AnimatedNumber renders multi-digit numbers reversed in RTL locales #43643

Closed

Description

@mo-dev-studio-eg

Description

Problem

When the UI language is set to an RTL locale (e.g. Arabic), multi-digit numbers
rendered by AnimatedNumber appear reversed: 16 displays as 61.

Visible in:

  • tool-count labels, e.g. "16 قراءة" (packages/session-ui/src/components/tool-count-label.tsx)
  • todo progress numbers (packages/app/src/pages/session/composer/session-todo-dock.tsx)

Root cause

AnimatedNumber reverses the digit array in DOM order and relies on
flex-direction: row-reverse to restore the visual order. But row-reverse
resolves against the inherited direction context, and
packages/app/src/context/language.tsx sets
document.documentElement.dir = "rtl" for RTL locales. In that context
row-reverse resolves to left-to-right, so the intentionally reversed digits
stay visually reversed.

Expected

Numbers must render in correct order regardless of document direction.

Plugins

No response

OpenCode version

No response

Steps to reproduce

No response

Screenshot and/or share link

No response

Operating System

No response

Terminal

No response

Activity

  1. added 3 commits that reference this issue on Oct 15, 2026
    4ee175c
    5c7b011
    0441cf2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions