Known Issues

Known limitations and issues in the current version of Pyodios, along with workarounds where available.

Don’t see your issue here? Open a new issue on GitHub.

WarningPyodide fails to initialize on some older devices

We are aware of an issue where Pyodide fails to initialize on some older iPhone and iPad models, even when running iOS 17 or later. The app may hang on the loading screen or fail to start a Python session. We are actively investigating and working to find a good solution.

If you experience this, you can help us diagnose the problem:

  1. Go to Settings > Support and enable Detailed Logging
  2. Restart the app to reproduce the issue
  3. Go back to Settings > Support and check the Startup Log and Error Log for details
  4. Tap Send Feedback to submit a report with your logs attached, or share the logs via support@caffeinatedmath.com

Including your device model and iOS version helps us understand the scope of the issue.

Console

  • No interrupt for running code. Once Python code starts executing, it cannot be cancelled mid-run. There is currently no way to send an interrupt signal to the Python session on iOS.

Workaround: If code is stuck in an infinite loop, close and reopen the app. Your variables will be lost, but you can re-run your script from the Editor or Notebook.

  • Session does not persist across launches. All variables, imported packages, and console history are cleared when the app is closed. Each launch starts a fresh Python session. Save your work as .py files in the Editor or .ipynb notebooks in the Notebook, and put import statements at the top of your scripts.

Editor

  • Large files may be slow. Scripts over a few hundred lines may experience slower syntax highlighting and scrolling.

Packages

  • Not all PyPI packages are available. Only pure Python packages and those that have been compiled for WebAssembly are available through Pyodide. Most popular packages (numpy, pandas, matplotlib, scikit-learn, etc.) are supported.

  • No package updates. Once installed, packages cannot be updated to a newer version without clearing the app’s data.

Check availability: Visit pyodide.org to search for available packages before trying to install.

Plots

  • Memory pressure with many plots. Generating many plots in a single session increases memory usage. The app may become sluggish after many plots.

Workaround: Clear plots you no longer need from the Plots gallery to free memory.

Notebooks

  • Very large notebooks may be slow to render. Notebooks with many cells or large outputs may experience slower scrolling and rendering performance.

General

  • Startup time. The first launch takes 5 to 15 seconds while the Pyodide WebAssembly runtime loads and initializes. Subsequent launches are faster due to caching.

  • Memory limit. Python needs a meaningful amount of RAM to work with data, but mobile devices have less memory available than desktops. Pyodios has approximately 300 MB of memory for Python. Very large datasets or complex models may exceed this limit. See the FAQ for tips on freeing memory.

  • Package storage. Installed packages are stored locally on your device via offline wheel caching. Under heavy storage pressure, iOS may reclaim this space. If your installed packages disappear, reinstall them from the Packages tab.