🐦 Twitter Post Details

Viewing enriched Twitter post

@_chenglou

# Big Post On The Oddities of Frame Scheduling The mouse across all OSes have special hardware & GPU paths dedicated to it. This ensures that even when everything freezes, your mouse moves stay smooth. It’s one of the last thing to ever lag on your display. When you see the red square lag behind the cursor, you’re seeing the (minimum!) usual webapps lag vs the ground truth hardware-accelerated cursor. But even the ground truth lags. macOS actually has a higher input latency (both iOS and macOS are triple buffered, as opposed to double for Windows/Linux) because it prioritizes smoothness “correctness” over raw latency (ask chatgpt). Triple buffered = 3 frames, which is a lot, but with 120fps refresh rate like ProMotion, it’s less noticeable. On the other hand, webapps are in theory infinite frames behind because many use a timeout for coordinating certain logics instead of using frames. So 50ms timeout means 4 frames on 60hz, 7 frames on 120hz, and your favorite helper library for e.g. virtualization or whatever probably has some timeout somewhere so anything you do will pathologically have at least that much latency. cc @andy_matuschak Regarding scroll: yes the black items are actually lagging, just that there’s no reference on screen for comparison. The browser scroll event is fired async; they're the "most" async on Safari (thus on every iPhone, since every browser on iPhone is actually just a UI around Safari). This is why you see some random mobile site with a floating button/menu that jitters vertically as you scroll; those read the stale scrollTop value from the async scroll event and calculate an offset that's unsynced vs the scrolling view behind the floater. If you want to prioritize smoothness over raw latency, you'd in theory hand-update both the floater and your scroll UI's position (e.g. read from an invisible view's scrollTop and update the real visible view's scrollTop. And since the floater UI also uses the same wrong scrollTop, at least everything's wrong at the same time). This is very complex; plus Safari still caps JavaScript updates to 60fps by default. Btw scrollTop value is also wrongly truncated across different browsers by spec. I have a bigger tangent on scrolling in this messy half-finished repo here: https://t.co/XjJUqGAlpi cc @jordwalke. People flee to CSS to use one-off fixes but those don't cooperate with any of the JS for the above reasons Also requestAnimationFrame likely will add drawing problems. Chrome skips repaints: https://t.co/3LD2OPR7Hv and rAF scheduling is weirder than you think: https://t.co/fPHv5MbqTd. More info at https://t.co/oD5EOml3T9 And then React itself adds complexities. Here's a thread I've barely found back. Feel free to read or ignore it but I myself forgot half of the nuances there already: https://t.co/ZWTM6Le9pt https://t.co/ScHUR55KDs And on top of this, folks throw around useEffects for data syncing and now we're an arbitrary number of frames behind Related, some posts by @trishume on keyboard latency: https://t.co/ctXbxhlSZa https://t.co/a1J7dDkvXX

Media 1
Media 2
Media 3

📊 Media Metadata

{
  "media": [
    {
      "url": "https://crmoxkoizveukayfjuyo.supabase.co/storage/v1/object/public/media/posts/1999944421589266830/media_0.jpg?",
      "media_url": "https://crmoxkoizveukayfjuyo.supabase.co/storage/v1/object/public/media/posts/1999944421589266830/media_0.jpg?",
      "type": "photo",
      "filename": "media_0.jpg"
    },
    {
      "url": "https://crmoxkoizveukayfjuyo.supabase.co/storage/v1/object/public/media/posts/1999944421589266830/media_1.jpg?",
      "media_url": "https://crmoxkoizveukayfjuyo.supabase.co/storage/v1/object/public/media/posts/1999944421589266830/media_1.jpg?",
      "type": "photo",
      "filename": "media_1.jpg"
    },
    {
      "url": "https://crmoxkoizveukayfjuyo.supabase.co/storage/v1/object/public/media/posts/1999944421589266830/media_2.jpg?",
      "media_url": "https://crmoxkoizveukayfjuyo.supabase.co/storage/v1/object/public/media/posts/1999944421589266830/media_2.jpg?",
      "type": "photo",
      "filename": "media_2.jpg"
    }
  ],
  "processed_at": "2025-12-13T22:29:07.018186",
  "pipeline_version": "2.0"
}

🔧 Raw API Response

{
  "type": "tweet",
  "id": "1999944421589266830",
  "url": "https://x.com/_chenglou/status/1999944421589266830",
  "twitterUrl": "https://twitter.com/_chenglou/status/1999944421589266830",
  "text": "# Big Post On The Oddities of Frame Scheduling\n\nThe mouse across all OSes have special hardware & GPU paths dedicated to it. This ensures that even when everything freezes, your mouse moves stay smooth. It’s one of the last thing to ever lag on your display. When you see the red square lag behind the cursor, you’re seeing the (minimum!) usual webapps lag vs the ground truth hardware-accelerated cursor.\n\nBut even the ground truth lags. macOS actually has a higher input latency (both iOS and macOS are triple buffered, as opposed to double for Windows/Linux) because it prioritizes smoothness “correctness” over raw latency (ask chatgpt). Triple buffered = 3 frames, which is a lot, but with 120fps refresh rate like ProMotion, it’s less noticeable. On the other hand, webapps are in theory infinite frames behind because many use a timeout for coordinating certain logics instead of using frames. So 50ms timeout means 4 frames on 60hz, 7 frames on 120hz, and your favorite helper library for e.g. virtualization or whatever probably has some timeout somewhere so anything you do will pathologically have at least that much latency. cc @andy_matuschak\n\nRegarding scroll: yes the black items are actually lagging, just that there’s no reference on screen for comparison. The browser scroll event is fired async; they're the \"most\" async on Safari (thus on every iPhone, since every browser on iPhone is actually just a UI around Safari). This is why you see some random mobile site with a floating button/menu that jitters vertically as you scroll; those read the stale scrollTop value from the async scroll event and calculate an offset that's unsynced vs the scrolling view behind the floater. If you want to prioritize smoothness over raw latency, you'd in theory hand-update both the floater and your scroll UI's position (e.g. read from an invisible view's scrollTop and update the real visible view's scrollTop. And since the floater UI also uses the same wrong scrollTop, at least everything's wrong at the same time). This is very complex; plus Safari still caps JavaScript updates to 60fps by default. Btw scrollTop value is also wrongly truncated across different browsers by spec. I have a bigger tangent on scrolling in this messy half-finished repo here: https://t.co/XjJUqGAlpi cc @jordwalke. People flee to CSS to use one-off fixes but those don't cooperate with any of the JS for the above reasons\n\nAlso requestAnimationFrame likely will add drawing problems. Chrome skips repaints: https://t.co/3LD2OPR7Hv and rAF scheduling is weirder than you think: https://t.co/fPHv5MbqTd. More info at https://t.co/oD5EOml3T9\n\nAnd then React itself adds complexities. Here's a thread I've barely found back. Feel free to read or ignore it but I myself forgot half of the nuances there already: https://t.co/ZWTM6Le9pt https://t.co/ScHUR55KDs\nAnd on top of this, folks throw around useEffects for data syncing and now we're an arbitrary number of frames behind\n\nRelated, some posts by @trishume on keyboard latency: https://t.co/ctXbxhlSZa https://t.co/a1J7dDkvXX",
  "source": "Twitter for iPhone",
  "retweetCount": 7,
  "replyCount": 0,
  "likeCount": 49,
  "quoteCount": 0,
  "viewCount": 4281,
  "createdAt": "Sat Dec 13 20:48:01 +0000 2025",
  "lang": "en",
  "bookmarkCount": 36,
  "isReply": false,
  "inReplyToId": null,
  "conversationId": "1999944421589266830",
  "displayTextRange": [
    0,
    284
  ],
  "inReplyToUserId": null,
  "inReplyToUsername": null,
  "author": {
    "type": "user",
    "userName": "_chenglou",
    "url": "https://x.com/_chenglou",
    "twitterUrl": "https://twitter.com/_chenglou",
    "id": "2972744345",
    "name": "Cheng Lou",
    "isVerified": false,
    "isBlueVerified": true,
    "verifiedType": null,
    "profilePicture": "https://pbs.twimg.com/profile_images/1769736308866613249/ddCXmG6-_normal.jpg",
    "coverPicture": "https://pbs.twimg.com/profile_banners/2972744345/1711877093",
    "description": "",
    "location": "California, USA",
    "followers": 23610,
    "following": 365,
    "status": "",
    "canDm": true,
    "canMediaTag": true,
    "createdAt": "Sun Jan 11 08:48:11 +0000 2015",
    "entities": {
      "description": {
        "urls": []
      },
      "url": {}
    },
    "fastFollowersCount": 0,
    "favouritesCount": 3975,
    "hasCustomTimelines": true,
    "isTranslator": false,
    "mediaCount": 511,
    "statusesCount": 7593,
    "withheldInCountries": [],
    "affiliatesHighlightedLabel": {},
    "possiblySensitive": false,
    "pinnedTweetIds": [
      "1886858666202268100"
    ],
    "profile_bio": {
      "description": "Worked on: @reactjs, @messenger, @reasonml, @rescriptlang & @midjourney",
      "entities": {
        "description": {
          "user_mentions": [
            {
              "id_str": "0",
              "indices": [
                11,
                19
              ],
              "name": "",
              "screen_name": "reactjs"
            },
            {
              "id_str": "0",
              "indices": [
                21,
                31
              ],
              "name": "",
              "screen_name": "messenger"
            },
            {
              "id_str": "0",
              "indices": [
                33,
                42
              ],
              "name": "",
              "screen_name": "reasonml"
            },
            {
              "id_str": "0",
              "indices": [
                44,
                57
              ],
              "name": "",
              "screen_name": "rescriptlang"
            },
            {
              "id_str": "0",
              "indices": [
                60,
                71
              ],
              "name": "",
              "screen_name": "midjourney"
            }
          ]
        },
        "url": {
          "urls": [
            {
              "display_url": "chenglou.me",
              "expanded_url": "https://chenglou.me",
              "indices": [
                0,
                23
              ],
              "url": "https://t.co/ucKLlrYDDI"
            }
          ]
        }
      }
    },
    "isAutomated": false,
    "automatedBy": null
  },
  "extendedEntities": {},
  "card": {
    "binding_values": [
      {
        "key": "photo_image_full_size_large",
        "value": {
          "image_value": {
            "height": 419,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=800x419",
            "width": 800
          }
        }
      },
      {
        "key": "thumbnail_image",
        "value": {
          "image_value": {
            "height": 200,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=400x400",
            "width": 400
          }
        }
      },
      {
        "key": "description",
        "value": {
          "string_value": "tbd. Contribute to chenglou/martian-ui development by creating an account on GitHub."
        }
      },
      {
        "key": "domain",
        "value": {
          "string_value": "github.com"
        }
      },
      {
        "key": "thumbnail_image_large",
        "value": {
          "image_value": {
            "height": 300,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=600x600",
            "width": 600
          }
        }
      },
      {
        "key": "summary_photo_image_small",
        "value": {
          "image_value": {
            "height": 202,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=386x202",
            "width": 386
          }
        }
      },
      {
        "key": "thumbnail_image_original",
        "value": {
          "image_value": {
            "height": 600,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=orig",
            "width": 1200
          }
        }
      },
      {
        "key": "site",
        "value": {
          "scribe_key": "publisher_id",
          "user_value": {
            "id_str": "13334762"
          }
        }
      },
      {
        "key": "photo_image_full_size_small",
        "value": {
          "image_value": {
            "height": 202,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=386x202",
            "width": 386
          }
        }
      },
      {
        "key": "summary_photo_image_large",
        "value": {
          "image_value": {
            "height": 419,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=800x419",
            "width": 800
          }
        }
      },
      {
        "key": "thumbnail_image_small",
        "value": {
          "image_value": {
            "height": 72,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=144x144",
            "width": 144
          }
        }
      },
      {
        "key": "thumbnail_image_x_large",
        "value": {
          "image_value": {
            "height": 600,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=png&name=2048x2048_2_exp",
            "width": 1200
          }
        }
      },
      {
        "key": "photo_image_full_size_original",
        "value": {
          "image_value": {
            "height": 600,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=orig",
            "width": 1200
          }
        }
      },
      {
        "key": "photo_image_full_size_alt_text",
        "value": {
          "string_value": "tbd. Contribute to chenglou/martian-ui development by creating an account on GitHub."
        }
      },
      {
        "key": "vanity_url",
        "value": {
          "scribe_key": "vanity_url",
          "string_value": "github.com"
        }
      },
      {
        "key": "photo_image_full_size",
        "value": {
          "image_value": {
            "height": 314,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=600x314",
            "width": 600
          }
        }
      },
      {
        "key": "summary_photo_image_alt_text",
        "value": {
          "string_value": "tbd. Contribute to chenglou/martian-ui development by creating an account on GitHub."
        }
      },
      {
        "key": "thumbnail_image_color",
        "value": {
          "image_color_value": {
            "palette": [
              {
                "percentage": 88.43,
                "rgb": {
                  "blue": 255,
                  "green": 255,
                  "red": 255
                }
              },
              {
                "percentage": 3.25,
                "rgb": {
                  "blue": 198,
                  "green": 120,
                  "red": 49
                }
              },
              {
                "percentage": 2.71,
                "rgb": {
                  "blue": 47,
                  "green": 54,
                  "red": 60
                }
              },
              {
                "percentage": 1.7,
                "rgb": {
                  "blue": 76,
                  "green": 107,
                  "red": 143
                }
              },
              {
                "percentage": 0.93,
                "rgb": {
                  "blue": 90,
                  "green": 225,
                  "red": 241
                }
              }
            ]
          }
        }
      },
      {
        "key": "title",
        "value": {
          "string_value": "martian-ui/docs/Scrolling.md at main · chenglou/martian-ui"
        }
      },
      {
        "key": "summary_photo_image_color",
        "value": {
          "image_color_value": {
            "palette": [
              {
                "percentage": 88.43,
                "rgb": {
                  "blue": 255,
                  "green": 255,
                  "red": 255
                }
              },
              {
                "percentage": 3.25,
                "rgb": {
                  "blue": 198,
                  "green": 120,
                  "red": 49
                }
              },
              {
                "percentage": 2.71,
                "rgb": {
                  "blue": 47,
                  "green": 54,
                  "red": 60
                }
              },
              {
                "percentage": 1.7,
                "rgb": {
                  "blue": 76,
                  "green": 107,
                  "red": 143
                }
              },
              {
                "percentage": 0.93,
                "rgb": {
                  "blue": 90,
                  "green": 225,
                  "red": 241
                }
              }
            ]
          }
        }
      },
      {
        "key": "summary_photo_image_x_large",
        "value": {
          "image_value": {
            "height": 600,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=png&name=2048x2048_2_exp",
            "width": 1200
          }
        }
      },
      {
        "key": "summary_photo_image",
        "value": {
          "image_value": {
            "height": 314,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=600x314",
            "width": 600
          }
        }
      },
      {
        "key": "photo_image_full_size_color",
        "value": {
          "image_color_value": {
            "palette": [
              {
                "percentage": 88.43,
                "rgb": {
                  "blue": 255,
                  "green": 255,
                  "red": 255
                }
              },
              {
                "percentage": 3.25,
                "rgb": {
                  "blue": 198,
                  "green": 120,
                  "red": 49
                }
              },
              {
                "percentage": 2.71,
                "rgb": {
                  "blue": 47,
                  "green": 54,
                  "red": 60
                }
              },
              {
                "percentage": 1.7,
                "rgb": {
                  "blue": 76,
                  "green": 107,
                  "red": 143
                }
              },
              {
                "percentage": 0.93,
                "rgb": {
                  "blue": 90,
                  "green": 225,
                  "red": 241
                }
              }
            ]
          }
        }
      },
      {
        "key": "photo_image_full_size_x_large",
        "value": {
          "image_value": {
            "height": 600,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=png&name=2048x2048_2_exp",
            "width": 1200
          }
        }
      },
      {
        "key": "card_url",
        "value": {
          "scribe_key": "card_url",
          "string_value": "https://t.co/XjJUqGAlpi"
        }
      },
      {
        "key": "summary_photo_image_original",
        "value": {
          "image_value": {
            "height": 600,
            "url": "https://pbs.twimg.com/card_img/1999942978597699584/NevwDlNY?format=jpg&name=orig",
            "width": 1200
          }
        }
      }
    ],
    "card_platform": {
      "platform": {
        "audience": {
          "name": "production"
        },
        "device": {
          "name": "iPhone",
          "version": "13"
        }
      }
    },
    "name": "summary_large_image",
    "url": "https://t.co/XjJUqGAlpi",
    "user_refs_results": [
      {
        "rest_id": "13334762",
        "result": {
          "__typename": "User",
          "action_counts": {
            "favorites_count": 8457
          },
          "avatar": {
            "image_url": "https://pbs.twimg.com/profile_images/1633247750010830848/8zfRrYjA_normal.png"
          },
          "banner": {
            "image_url": "https://pbs.twimg.com/profile_banners/13334762/1765308302"
          },
          "core": {
            "created_at": "Mon Feb 11 04:41:50 +0000 2008",
            "name": "GitHub",
            "screen_name": "github"
          },
          "dm_permissions": {
            "can_dm": false
          },
          "exclusive_tweet_following": false,
          "identity_profile_labels_highlighted_label": {},
          "location": {
            "location": "San Francisco, CA"
          },
          "media_permissions": {
            "can_media_tag": true
          },
          "notifications_settings": {},
          "pinned_items": {},
          "privacy": {},
          "private_super_following": false,
          "profile_bio": {
            "description": "The AI-powered developer platform to build, scale, and deliver secure software.",
            "entities": {
              "description": {},
              "url": {
                "urls": [
                  {
                    "display_url": "github.com",
                    "expanded_url": "http://github.com",
                    "indices": [
                      0,
                      23
                    ],
                    "url": "https://t.co/bbJgfyzKzp"
                  }
                ]
              }
            }
          },
          "profile_image_shape": "Square",
          "profile_metadata": {
            "profile_interstitial_type": "",
            "profile_link_color": "981CEB"
          },
          "profile_translation": {
            "translator_type_enum": "None"
          },
          "properties": {
            "has_extended_profile": true
          },
          "relationship_counts": {
            "followers": 2593933,
            "following": 329
          },
          "relationship_perspectives": {},
          "rest_id": "13334762",
          "super_follow_eligible": false,
          "super_followed_by": false,
          "super_following": false,
          "tweet_counts": {
            "media_tweets": 2852,
            "tweets": 10192
          },
          "website": {
            "url": "https://t.co/bbJgfyzKzp"
          },
          "verification": {
            "is_blue_verified": true,
            "verified_type": "Business"
          }
        }
      }
    ]
  },
  "place": {},
  "entities": {
    "urls": [
      {
        "display_url": "github.com/chenglou/marti…",
        "expanded_url": "https://github.com/chenglou/martian-ui/blob/main/docs/Scrolling.md",
        "indices": [
          2271,
          2294
        ],
        "url": "https://t.co/XjJUqGAlpi"
      },
      {
        "display_url": "x.com/_chenglou/stat…",
        "expanded_url": "https://x.com/_chenglou/status/1853596411730030898",
        "indices": [
          2502,
          2525
        ],
        "url": "https://t.co/3LD2OPR7Hv"
      },
      {
        "display_url": "x.com/nomsternom/sta…",
        "expanded_url": "https://x.com/nomsternom/status/1854113765052064035",
        "indices": [
          2572,
          2595
        ],
        "url": "https://t.co/fPHv5MbqTd"
      },
      {
        "display_url": "github.com/chenglou/marti…",
        "expanded_url": "https://github.com/chenglou/martian-ui/blob/main/docs/FrameScheduling.md",
        "indices": [
          2610,
          2633
        ],
        "url": "https://t.co/oD5EOml3T9"
      },
      {
        "display_url": "x.com/_chenglou/stat…",
        "expanded_url": "https://x.com/_chenglou/status/1861910275278193140",
        "indices": [
          2802,
          2825
        ],
        "url": "https://t.co/ZWTM6Le9pt"
      },
      {
        "display_url": "github.com/facebook/react…",
        "expanded_url": "https://github.com/facebook/react/issues/31634",
        "indices": [
          2826,
          2849
        ],
        "url": "https://t.co/ScHUR55KDs"
      },
      {
        "display_url": "thume.ca/2017/12/29/fix…",
        "expanded_url": "https://thume.ca/2017/12/29/fixing-my-keyboards-latency/",
        "indices": [
          3023,
          3046
        ],
        "url": "https://t.co/ctXbxhlSZa"
      },
      {
        "display_url": "thume.ca/2020/05/20/mak…",
        "expanded_url": "https://thume.ca/2020/05/20/making-a-latency-tester/",
        "indices": [
          3047,
          3070
        ],
        "url": "https://t.co/a1J7dDkvXX"
      }
    ],
    "user_mentions": [
      {
        "id_str": "10724012",
        "indices": [
          1140,
          1155
        ],
        "name": "Andy Matuschak",
        "screen_name": "andy_matuschak"
      },
      {
        "id_str": "1463467434",
        "indices": [
          2298,
          2308
        ],
        "name": "jordwalke",
        "screen_name": "jordwalke"
      },
      {
        "id_str": "23242559",
        "indices": [
          2992,
          3001
        ],
        "name": "Tristan Hume",
        "screen_name": "trishume"
      }
    ]
  },
  "quoted_tweet": {
    "type": "tweet",
    "id": "1999758140435497376",
    "url": "https://x.com/steveruizok/status/1999758140435497376",
    "twitterUrl": "https://twitter.com/steveruizok/status/1999758140435497376",
    "text": "question @_chenglou:  when I drag something around on the screen the item lags behind the cursor. However, when I scroll using the trackpad, the item does not lag at all. Why? https://t.co/HpmhMSr0G8",
    "source": "Twitter for iPhone",
    "retweetCount": 0,
    "replyCount": 4,
    "likeCount": 29,
    "quoteCount": 0,
    "viewCount": 16196,
    "createdAt": "Sat Dec 13 08:27:49 +0000 2025",
    "lang": "en",
    "bookmarkCount": 7,
    "isReply": false,
    "inReplyToId": null,
    "conversationId": "1999758140435497376",
    "displayTextRange": [
      0,
      175
    ],
    "inReplyToUserId": null,
    "inReplyToUsername": null,
    "author": {
      "type": "user",
      "userName": "steveruizok",
      "url": "https://x.com/steveruizok",
      "twitterUrl": "https://twitter.com/steveruizok",
      "id": "122246321",
      "name": "Steve Ruiz",
      "isVerified": false,
      "isBlueVerified": true,
      "verifiedType": null,
      "profilePicture": "https://pbs.twimg.com/profile_images/1998689716229558272/GSFU7BiZ_normal.jpg",
      "coverPicture": "https://pbs.twimg.com/profile_banners/122246321/1589227715",
      "description": "",
      "location": "London",
      "followers": 42252,
      "following": 839,
      "status": "",
      "canDm": true,
      "canMediaTag": false,
      "createdAt": "Fri Mar 12 02:46:31 +0000 2010",
      "entities": {
        "description": {
          "urls": []
        },
        "url": {}
      },
      "fastFollowersCount": 0,
      "favouritesCount": 22332,
      "hasCustomTimelines": true,
      "isTranslator": false,
      "mediaCount": 4664,
      "statusesCount": 18734,
      "withheldInCountries": [],
      "affiliatesHighlightedLabel": {
        "label": {
          "badge": {
            "url": "https://pbs.twimg.com/profile_images/1998824870461796352/HFsywfLU_bigger.jpg"
          },
          "description": "tldraw",
          "url": {
            "url": "https://twitter.com/tldraw",
            "url_type": "DeepLink"
          },
          "user_label_type": "BusinessLabel",
          "user_label_display_type": "Badge"
        }
      },
      "possiblySensitive": false,
      "pinnedTweetIds": [
        "1727625036159234555"
      ],
      "profile_bio": {
        "description": "founder @tldraw",
        "entities": {
          "description": {
            "user_mentions": [
              {
                "id_str": "0",
                "indices": [
                  8,
                  15
                ],
                "name": "",
                "screen_name": "tldraw"
              }
            ]
          },
          "url": {
            "urls": [
              {
                "display_url": "steveruiz.me",
                "expanded_url": "https://steveruiz.me",
                "indices": [
                  0,
                  23
                ],
                "url": "https://t.co/U8wzOclQnz"
              }
            ]
          }
        }
      },
      "isAutomated": false,
      "automatedBy": null
    },
    "extendedEntities": {
      "media": [
        {
          "additional_media_info": {
            "monetizable": false
          },
          "allow_download_status": {
            "allow_download": true
          },
          "display_url": "pic.twitter.com/HpmhMSr0G8",
          "expanded_url": "https://twitter.com/steveruizok/status/1999758140435497376/video/1",
          "ext_media_availability": {
            "status": "Available"
          },
          "id_str": "1999757936705380354",
          "indices": [
            176,
            199
          ],
          "media_key": "13_1999757936705380354",
          "media_results": {
            "id": "QXBpTWVkaWFSZXN1bHRzOgwABAoAARvAkT+OF6ACAAA=",
            "result": {
              "__typename": "ApiMedia",
              "id": "QXBpTWVkaWE6DAAECgABG8CRP44XoAIAAA==",
              "media_key": "13_1999757936705380354"
            }
          },
          "media_url_https": "https://pbs.twimg.com/amplify_video_thumb/1999757936705380354/img/Sg6sXp-oIY6NlE6Z.jpg",
          "original_info": {
            "focus_rects": [],
            "height": 918,
            "width": 1632
          },
          "sizes": {
            "large": {
              "h": 918,
              "w": 1632
            }
          },
          "type": "video",
          "url": "https://t.co/HpmhMSr0G8",
          "video_info": {
            "aspect_ratio": [
              16,
              9
            ],
            "duration_millis": 12000,
            "variants": [
              {
                "content_type": "application/x-mpegURL",
                "url": "https://video.twimg.com/amplify_video/1999757936705380354/pl/wYDieJT8tx51F27C.m3u8?tag=21"
              },
              {
                "bitrate": 256000,
                "content_type": "video/mp4",
                "url": "https://video.twimg.com/amplify_video/1999757936705380354/vid/avc1/480x270/yaCl2Q61V36WPgb6.mp4?tag=21"
              },
              {
                "bitrate": 832000,
                "content_type": "video/mp4",
                "url": "https://video.twimg.com/amplify_video/1999757936705380354/vid/avc1/640x360/zV5dEUkT4N1GRu5f.mp4?tag=21"
              },
              {
                "bitrate": 2176000,
                "content_type": "video/mp4",
                "url": "https://video.twimg.com/amplify_video/1999757936705380354/vid/avc1/1280x720/toy-exF5jBkm2Xav.mp4?tag=21"
              },
              {
                "bitrate": 10368000,
                "content_type": "video/mp4",
                "url": "https://video.twimg.com/amplify_video/1999757936705380354/vid/avc1/1632x918/tJt8YPs1Fw-DiMlr.mp4?tag=21"
              }
            ]
          }
        }
      ]
    },
    "card": null,
    "place": {},
    "entities": {
      "user_mentions": [
        {
          "id_str": "2972744345",
          "indices": [
            9,
            19
          ],
          "name": "Cheng Lou",
          "screen_name": "_chenglou"
        }
      ]
    },
    "quoted_tweet": null,
    "retweeted_tweet": null,
    "isLimitedReply": false,
    "article": null
  },
  "retweeted_tweet": null,
  "isLimitedReply": false,
  "article": null
}