Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

expo-gl

expo88.3kMIT15.1.5TypeScript support: included

Provides GLView that acts as OpenGL ES render target and gives GL context object implementing WebGL 2.0 specification.

react-native, expo, gl, glview, webgl

readme

Expo logo

Expo

Expo SDK version Chat or ask a question License: MIT Downloads

Try Expo in the Browser  •  Read the Documentation  •  Learn more on our blog  •  Request a feature

Follow us on

Expo on X   Expo on GitHub   Expo on Reddit   Expo on Bluesky   Expo on LinkedIn

Introduction

Expo is an open-source platform for making universal native apps that run on Android, iOS, and the web. It includes a universal runtime and libraries that let you build native apps by writing React and JavaScript.

This repository includes the Expo SDK, Modules API, Go app, CLI, Router, documentation, and various other supporting tools. Expo Application Services (EAS) is a platform of hosted services that are deeply integrated with Expo open source tools. EAS helps you build, ship, and iterate on your app as an individual or a team.

Read the Expo Community Guidelines before interacting in the repository. Thank you for helping keep the Expo community open and welcoming!

Table of contents

📚 Documentation

Learn about building and deploying universal apps in our official docs!

🗺 Project Layout

  • packages All the source code for Expo modules, if you want to edit a library or just see how it works this is where you'll find it.
  • apps This is where you can find Expo projects which are linked to the development modules. You'll do most of your testing in here.
  • apps/expo-go This is where you can find the source code for Expo Go.
  • apps/expo-go/ios/Exponent.xcworkspace is the Xcode workspace. When developing iOS, always open this instead of Exponent.xcodeproj because the workspace also loads the CocoaPods dependencies.
  • docs The source code for https://docs.expo.dev
  • templates The template projects you get when you run npx create-expo-app
  • react-native-lab This is our fork of react-native used to build Expo Go.
  • guides In-depth tutorials for advanced topics like contributing to the client.
  • tools contain build and configuration tools.
  • template-files contains templates for files that require private keys. They are populated using the keys in template-files/keys.json.
  • template-files/ios/dependencies.json specifies the CocoaPods dependencies of the app.

🏅 Badges

Let everyone know your app can be run instantly in the Expo Go app!

runs with Expo Go

runs with Expo Go

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-000.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-4630EB.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

👏 Contributing

If you like Expo and want to help make it better then check out our contributing guide! Check out the CLI package to work on the Expo CLI.

❓ FAQ

If you have questions about Expo and want answers, then check out our Frequently Asked Questions!

If you still have questions you can ask them on our Discord and Forums or X @expo.

💙 The Team

Curious about who makes Expo? Here are our team members!

License

The Expo source code is made available under the MIT license. Some of the dependencies are licensed differently, with the BSD license, for example.

Star the Expo repo on GitHub to support the project

changelog

Changelog

Unpublished

🛠 Breaking changes

🎉 New features

🐛 Bug fixes

💡 Others

15.1.5 — 2025-04-30

This version does not introduce any user-facing changes.

15.1.4 — 2025-04-25

This version does not introduce any user-facing changes.

15.1.3 — 2025-04-21

This version does not introduce any user-facing changes.

15.1.2 — 2025-04-14

This version does not introduce any user-facing changes.

15.1.1 — 2025-04-09

This version does not introduce any user-facing changes.

15.1.0 — 2025-04-04

🛠 Breaking changes

🐛 Bug fixes

  • stb_image PNG: Checks for invalid DEFLATE codes. (#35184 by @manoj23)

💡 Others

  • [Android] Started using expo modules gradle plugin. (#34176 by @lukmccall)
  • [apple] Migrate remaining expo-module.config.json to unified platform syntax. (#34445 by @reichhartd)

15.0.5 - 2025-04-01

🐛 Bug fixes

15.0.4 - 2025-01-19

This version does not introduce any user-facing changes.

15.0.3 - 2025-01-10

This version does not introduce any user-facing changes.

15.0.2 — 2024-11-14

This version does not introduce any user-facing changes.

15.0.1 — 2024-11-07

🐛 Bug fixes

  • Converted the native view from Objective-C to Swift to fix support for the New Architecture. (#32675 by @tsapeta)

15.0.0 — 2024-10-22

🛠 Breaking changes

🐛 Bug fixes

  • Add NULL check before releasing textureRef in EXGLCameraObject. (#29092 by @hakonk)
  • Add missing react and react-native peer dependencies for isolated modules. (#30468 by @byCedric)
  • Add missing react-native-web optional peer dependency for isolated modules. (#30689 by @byCedric)

💡 Others

⚠️ Notices

14.0.2 — 2024-04-24

🐛 Bug fixes

14.0.1 — 2024-04-23

This version does not introduce any user-facing changes.

14.0.0 — 2024-04-18

💡 Others

  • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)

13.6.0 — 2023-12-12

💡 Others

  • Bump C++ compiler setting to C++20. (#25548 by @kudo)

13.5.0 — 2023-11-14

🛠 Breaking changes

💡 Others

  • Use pointerEvent style instead of prop for components on web. (#24931 by @EvanBacon)
  • Remove deprecated REACT_NATIVE_OVERRIDE_VERSION for React Native nightly testing. (#25151 by @kudo)
  • Removed backward compatible code for deprecated SDKs. (#25154 by @kudo)

13.4.0 — 2023-10-17

🛠 Breaking changes

💡 Others

  • Ship untranspiled JSX to support custom handling of jsx and createElement. (#24889 by @EvanBacon)

13.3.0 — 2023-09-15

This version does not introduce any user-facing changes.

13.2.0 — 2023-09-04

🎉 New features

  • Added support for React Native 0.73. (#24018 by @kudo)

💡 Others

  • Migrated GLObjectManagerModule to use Expo Modules API. (#24017 by @lukmccall)

13.1.0 — 2023-07-28

This version does not introduce any user-facing changes.

13.0.0 — 2023-06-13

🛠 Breaking changes

  • Require explicit prop enableExperimentalWorkletSupport to use GLView from Reanimated worklet. (#22613 by @wkozyra95)

🐛 Bug fixes

  • Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
  • Fix deadlock when creating and destroying GLViews in a quick succession. (#22484 by @wkozyra95)
  • Move creating GL context for worklet to UI thread. (#22634 by @wkozyra95)

12.5.0 — 2023-05-08

🐛 Bug fixes

💡 Others

12.4.0 — 2023-02-14

🎉 New features

  • Add support for the GL_UNPACK_ALIGNMENT parameter in the pixelStorei method. (#21212 by @BanBart)

12.3.1 — 2023-02-09

This version does not introduce any user-facing changes.

12.3.0 — 2023-02-03

🎉 New features

  • Migrated the view manager to the new Expo modules API and thus added support for Fabric on Android. (#20749 by @lukmccall)

💡 Others

  • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)

12.2.0 — 2022-12-30

🐛 Bug fixes

12.1.0 — 2022-12-05

🎉 New features

  • Migrated the view manager to the new Expo modules API and thus added support for Fabric. (#19859 by @tsapeta)

🐛 Bug fixes

  • Fixed build errors when testing on React Native nightly builds. (#19805 by @kudo)
  • Fixed error for duplicated META-INF files when building on Android. (#20251 by @kudo)

12.0.0 — 2022-10-25

🛠 Breaking changes

  • Bumped iOS deployment target to 13.0 and deprecated support for iOS 12. (#18873 by @tsapeta)

🐛 Bug fixes

  • Use shared C++ runtime to reduce library size on Android. (#19372 by @kudo)

💡 Others

  • Merge GLViewProps and BaseGLViewProps into one type - GLViewProps. (#18322 by @Simek)
  • Rename Web-specific prop types from GLViewProps to GLViewWebProps. (#18322 by @Simek)
  • Merge expo-gl-cpp package into expo-gl. (#18875 by @wkozyra95)

⚠️ Notices

  • Added support for React Native 0.70.x. (#19261 by @kudo)

11.4.0 — 2022-07-07

🐛 Bug fixes

11.3.0 — 2022-04-27

🐛 Bug fixes

  • Fix crash on android 11 by packaging worklet jsi:Runtime* inside ArrayBuffer. (#17194 by @wkozyra95)

11.2.2 — 2022-04-21

🐛 Bug fixes

  • Fix import errors when option inlineRequires is enabled in metro.config.js. (#17141 by @wkozyra95)

11.2.1 — 2022-04-20

This version does not introduce any user-facing changes.

11.2.0 — 2022-04-18

🐛 Bug fixes

  • Fix support for React Native 0.68 by building expo-gl-cpp from source. (#17060 by @wkozyra95)

⚠️ Notices

  • On Android bump compileSdkVersion to 31, targetSdkVersion to 31 and Java version to 11. (#16941 by @bbarthec)

11.1.2 - 2022-02-01

🐛 Bug fixes

  • Fix segfault in iOS draw loop. (#15653 by @wkozyra95)
  • Fix Plugin with id 'maven' not found build error from Android Gradle 7. (#16080 by @kudo)

11.1.1 — 2021-12-08

This version does not introduce any user-facing changes.

11.1.0 — 2021-12-03

🎉 New features

11.0.1 — 2021-10-01

This version does not introduce any user-facing changes.

11.0.0 — 2021-09-28

🛠 Breaking changes

🐛 Bug fixes

  • Remove OES_vertex_array_object from list of supported extensions. (#14299 by @wkozyra95)
  • Fix building errors from use_frameworks! in Podfile. (#14523 by @kudo)

💡 Others

  • Migrated from @unimodules/core to expo-modules-core. (#13757 by @tsapeta)

10.4.0 — 2021-06-16

🐛 Bug fixes

💡 Others

  • Migrated from unimodules-camera-interface, unimodules-file-system-interface to expo-modules-core.
  • Build Android code using Java 8 to fix Android instrumented test build error. (#12939 by @kudo)

10.3.0 — 2021-04-20

🎉 New features

  • Implemented basic functionality of getSupportedExtensions and getExtension methods. However, some of the supported extensions are platform-specific so they may differ from what is described in WebGL extensions specification. (#12309 by @tsapeta)

10.2.0 — 2021-03-10

🎉 New features

  • Updated Android build configuration to target Android 11 (added support for Android SDK 30). (#11647 by @bbarthec)
  • Implemented support for getInternalformatParameter (#11614 by @zenios)

🐛 Bug fixes

  • Remove peerDependencies and unimodulePeerDependencies from Expo modules. (#11980 by @brentvatne)

10.1.0 — 2021-01-15

🐛 Bug fixes

10.0.0 — 2020-12-15

⚠️ Notices

🛠 Breaking changes

9.2.0 — 2020-11-17

🐛 Bug fixes

  • Fixed a bug causing an application crash when enabling remote debugging on Android. (#10381 by @sjchmiela)
  • Fixed support for offset in TypedArray. (#10692 by @wkozyra95)

9.1.1 — 2020-08-26

🎉 New features

9.1.0 — 2020-08-18

🐛 Bug fixes

  • Fix bug preventing GLView from rendering in SSR environments. (#9691 by @EvanBacon)

9.0.0 — 2020-08-11

🛠 Breaking changes

  • This version requires at least version 0.63.0 of React Native. It may crash when used with older versions. (#7948 by @wkozyra95)

🎉 New features

  • Full rewrite of expo-gl-cpp, migration to JSI. (#7948 by @wkozyra95)
  • Introduced compatibility with Hermes, however you should treat this feature as unstable so use it with Hermes at your own risk. (#7948 by @wkozyra95)

8.4.0 — 2020-07-17

🐛 Bug fixes

  • Delete prop-types in favor of TypeScript. (#8675 by @EvanBacon)
  • Fix crashes on iOS14 caused by different integer representation in the new JSC. (#9226 by @wkozyra95)

8.3.1 — 2020-05-29

This version does not introduce any user-facing changes.

8.3.0 — 2020-05-27

This version does not introduce any user-facing changes.

8.2.0

🎉 New features

  • Improved logging and added some more logging options. (#7550 by @tsapeta)
  • Add WebP format as an option when taking GL snapshots (Android only). (#7490 by @pacoelayudante)

🐛 Bug fixes