Help test the release candidate!
Here are all the updates for the upcoming 2.0.4 release! This is a release candidate (RC), which means it is not yet live on the p5.js Editor. Please help us to improve the stability of the newest version of p5.js by trying out this release candidate, and reporting bugs. The 2.0.4 patch is planned for release on August 5th, 2025, unless there are bugs - then these will be fixed before release.
How to test
You can copy this sketch and make p5.js sketches with it - using the new p5.js 2.0 reference - and then report anything that doesn't work well as a bug! This will help improve the next release ๐ฑ ๐
You can use the downloads below, or use https://cdn.jsdelivr.net/npm/p5@2.0.4-rc.2/lib/p5.js in your script
tag. In the p5.js Editor, you can use this URL in the index.html
page:

What's Changed ๐
p5.strands Improvements ๐งต
p5.strands is an experimental new feature in in p5.js 2.0 for authoring shaders with JavaScript. You can check out the tutorials if you're interested in trying it out. If you're interested in diving deeper and contributing, you're welcome to join the discussion in the the #p5strands channel on our Discord, or work on the open p5.strands issues
- Alias GLSL's mix function as lerp in p5.strands (#7875) by @LalitNarayanYadav in #7887
- Add GLSL-based noise(vec2) function to p5.strands (#7897) by @LalitNarayanYadav in #7921
- Fix inline anonymous functions causing a parsing error in p5.strands callbacks by @nking07049925 in #7956
- Enhance p5.strands noise() to support noise(x, y) and 4-octave fractal noise by @LalitNarayanYadav in #7964
- Fix p5.strands uniform calls, add instance mode construct by @davepagurek in #7961
Bug Fixes ๐
- Add font readiness wait to create() function in p5.Font.js by @sophyphile in #7882
- Create Graphics fixing in dev-2.0 branch. by @perminder-17 in #7829
- Chore/upgrade eslint by @error-four-o-four in #7853
- Update zod 3 to zod 4 support in p5.js dev-2.0 by @madhav2348 in #7872
- Skip adding degenerate faces in textToModel by @davepagurek in #7951
- Individual flags to disable part of FES by the user by @limzykenneth in #7967
- Add minified ESM build output by @nickswalker in #7973
- Replace fn with direct downloadFile import to fix issue where fn was not found by @acgillette in #7971
- Fix MediaElement.copy by @pearmini in #7980
- Reset millis() after setup by @davepagurek in #8005
- add instance of video in callback (2.0) by @ksen0 in #7877
Documentation ๐
- Remove incorrect mouseX/mouseY docs regarding WEBGL mode in dev-2.0 branch. by @perminder-17 in #8006
- Update dev-2.0 docs with recently-added contributors and stewards by @ksen0 in #8000
- Documentation fix for swapped parameters in splinePoint and bezierPoint by @shawdm in #7997
- Adding docs for
code
in the refrence. by @perminder-17 in #7902 - added documentation to _getBrightness() and _getGreen() function by @FerrinThreatt in #7908
- Updating visual tests docs for 2.x versions by @perminder-17 in #7827
- Revamped config.yml(branch: dev-2.0) by @shivasankaran18 in #7776
- Fix typo in createFileInput example by @ksen0 in #7884
New Contributors
- @sophyphile made their first contribution in #7882
- @FerrinThreatt made their first contribution in #7908
- @madhav2348 made their first contribution in #7872
- @nking07049925 made their first contribution in #7956
- @nickswalker made their first contribution in #7973
- @acgillette made their first contribution in #7971
Full Changelog: v2.0.3...v2.0.4-rc.2