Log inSign up
James Ide
2,822 posts
Image
user avatar
James Ide
@JI
Co-founder @Expo
California, USA
jameside.com
Joined July 2010
100
Following
5,941
Followers
  • Pinned
    user avatar
    James Ide
    @JI
    Apr 16
    Expo’s Series B lets us build + More developer success for our world-class customers + More products to unlock that success + More capacity to meet the demand for our products and services We are also excited to continue collaborating with other great companies, and for the
    user avatar
    Expo
    @expo
    Apr 16
    🙌 Expo is the best it's ever been, and it's about to get a lot better. We raised a Series B so we can go faster on the things that matter to you: faster builds, smoother native integrations, and the services to make end-to-end app development a delightful experience. There is
    Image
    00:00
    8K
  • user avatar
    James Ide
    @JI
    Jul 12, 2022
    With the newest version of Git 2.37.0, you can run just "git push" to push new branches. No more "--set-upstream origin". Enable with: git config --global --add --bool push.autoSetupRemote true
    Image
  • user avatar
    James Ide
    @JI
    Oct 28, 2016
    Almost never open the Mac App Store again with "mas" (brew install mas). You Won't Believe It Actually Works.
    Image
  • user avatar
    James Ide
    @JI
    Jun 22, 2019
    How to Unix ~ by 🐱
    Image
    00:00
  • user avatar
    James Ide
    @JI
    Mar 27, 2017
    I finally understand MVC
    Image
  • user avatar
    James Ide
    @JI
    Oct 24, 2025
    Wow Replit hired Jordan (the creator of React) and now he has a whole government
    user avatar
    Replit ⠕
    @Replit
    Oct 23, 2025
    Big news today: The Government of Jordan is rolling out an AI powered learning assistant Siraj built on Replit to 1.6 million students and 90,000 teachers across Jordan’s public schools. 🔥 Siraj is aimed at improving learning outcomes by providing accurate, curriculum-based
    106K
  • user avatar
    James Ide
    @JI
    Apr 13, 2022
    Note to iOS developers working on an app for awhile: two Apple certificates used to sign your provisioning profiles expired today. When you try to submit your app for review you'll get an ITMS-90165 error. Fix is to get a new provisioning profile.
  • user avatar
    James Ide
    @JI
    Apr 22, 2021
    use-unmount-signal is a React Hook for canceling promises like network requests when a component is unmounted. · Standards-friendly: works with any web or Node API that takes an AbortSignal · Tiny: 269b minified/167b Brotli · New: tell me if it's useful github.com/expo/use-unmou…
    Image
  • user avatar
    James Ide
    @JI
    Sep 12, 2025
    🔜
    Image
    00:00
    42K
  • user avatar
    James Ide
    @JI
    Nov 16, 2024
    Also the smallest binary (44 MB) out of the top 10 apps in the App Store. Average size of the next nine apps is 175 MB.
    Image
    Image
    user avatar
    Charlie Cheever
    @ccheever
    Nov 13, 2024
    The #1 app in the United States is an @expo app
    428K
  • user avatar
    James Ide
    @JI
    Jun 5, 2019
    Today, with much heavy lifting from @cnakazawa, we’ve replaced 100% of Haste in React Native with standard paths. Years in the making, this opens React Native up more to standards-compliant web tools and eliminates the whole class of Haste map errors.
  • user avatar
    James Ide
    @JI
    Sep 6, 2017
    If someone you know is starting a company and wondering about React's license, I wrote this for them to learn "why":
    Image
    The React license for founders and CTOs
    From medium.com
  • user avatar
    James Ide
    @JI
    Oct 24, 2024
    Measuring a view in @reactjs is now consistent across React DOM and React Native: useLayoutEffect(() => { ref.current.getBoundingClientRect() }) You can even re-adjust your UI during the initial frame before the view is displayed. Zero frame delays. Coming in @expo SDK 52.
    The way to measure a view's dimensions is to call getBoundingClientRect() (use unstable_getBoundingClientRect with React Native 0.76) on a component's ref within a useLayoutEffect Hook. This requires the New Architecture, which is enabled by default as of React Native 0.76.

The function passed to useLayoutEffect is invoked during React's "commit" phase, after the view's layout has been calculated and before it is visible. The call to getBoundingClientRect() is synchronous. Together, you can update your UI, such as with a call to setState, based on the view's dimensions before the view is displayed to the user.
    24K
  • user avatar
    James Ide
    @JI
    Jan 20, 2023
    expo-image is in beta and brings modern image formats to your universal apps ◆ AVIF, WebP, SVG, APNG, HEIC ◆ JPEG, PNG, GIF too ◆ Up to 91% smaller animations with AVIF: avif.io/blog/compariso… ◆ Universal: Android, iOS, web 👉 npm i expo-image && npx expo run:{android,ios}
    Image
    user avatar
    Tomasz Sapeta 𝝠
    @tsapeta
    Jan 19, 2023
    🎉 expo-image just transitioned from alpha to beta! 🎉 Thank you all who gave us feedback during the alpha period 🙏 Check out @expo docs for more details on what it can do: docs.expo.dev/versions/unver…
    60K

New to X?

Sign up now to get your own personalized timeline!

Create account

By signing up, you agree to the Terms of Service and Privacy Policy, including Cookie Use.

Terms·Privacy·Cookies·Accessibility·Ads Info·© 2026 X Corp.
Don't miss what's happening
People on X are the first to know.
Log inSign up