Hi everyone! Below is a development update about p5.js. It’s cross-posted also on our Medium: blog post about p5.js 2.0 dev updates. Please feel welcome to share your thoughts in this thread! I’ll share updates every few weeks going forward, and I’m happy to address your questions and ideas here or on GitHub
What did we learn from the p5.js community check-in survey leading up to the p5.js 2.0 release?
Do you use p5.js? Whether you are a beginner, a seasoned p5.js user, or a p5.js contributor, read on to learn about the upcoming release of p5.js 2.0! It brings some exciting new features and updates based on community input gathered since the end of 2023. In a few weeks, when the release is ready, we will enter a new phase of community testing.
p5.js 2.0 will be released soon. The p5.js Editor will default to p5.js 2.0 in August 2026 (next year!). Until then, we continue to invite all users of p5.js to help shape it!
Background
p5.js 1.0 was first released in 2020. It has been used worldwide by classrooms at all levels. Members of our vibrant community have created wonderful educational resources on many topics and in many languages! In an average month, p5js.org and editor.p5js.org get almost half a million visitors. Tutorials and other resources on the p5js.org website focus on accessibility, inclusivity, and beginner-friendliness.
So, why p5.js 2.0? A major version release (change from 1.x to 2.x), makes it possible to consider bigger changes from the many different proposals solicited from the community starting in 2023. A big change can be a chance to create significant improvements and expansions. Some of the most exciting new features include support for variable fonts, beginner-friendly shaders that can be written in JavaScript rather than GLSL, new color modes (including OKLCH), and more! Many updates make the library easier to maintain and make the p5.js core more welcoming to new contributors.
Animated variable fonts in p5.js 2.0!. Created by Dave Pagurek
In my first four months as p5.js Project Lead, I conducted an anonymous survey and a series of in-person and online conversations. This survey got 31 responses (view the survey questions and anonymized responses here). Nearly half (14/31) responded that they were “not too familiar with the p5.js 2.0 project.” Very few (3/31) were already active in the existing GitHub discussion.
At the same time as conducting the anonymous survey, I also met with around forty p5.js enthusiasts in local events and online chats. I learned about the paths different people have taken with p5.js or Processing, and their visions for the future. In these conversations, qualitatively, it seemed that the familiarity with p5.js 2.0 was around half and half, too.
Taken together, the survey and the conversations so far suggest to me that more can be done to share p5.js 2.0 updates and to invite people into conversation. I hope the rest of this post can be helpful to understand the various changes in p5.js 2.0 and show where you can join the conversation.
Whether or not you join ongoing discussions, I hope every person reading this feels free to drop by for a chat with me in the next month in public office hours: you can find a time in my calendar. If this is a helpful structure to keep in touch, I’ll make more time available in the future, too!
Compatibility
Many people were not too familiar with the p5.js 2.0 project and were concerned about the upcoming changes and compatibility between p5.js 1.x and p5.js 2.0, both for sketches and for community add-on libraries.
A lot of the comments — both in the survey and on GitHub — that focus on compatibility have helped develop theupdate guide and compatibility resource, including add-on libraries and guides. The add-on libraries will come pre-loaded in the p5.js Editor once p5.js 2.0 is released. You are welcome to check out (and join) the discussion about this feature here!
In addition to making compatibility resources available, we are proactively checking known libraries for compatibility. So far, out of over a hundred, about a third have been checked by trying the demos and examples with p5.js 2.0. In many cases, there are no breaking changes. In some cases, we opened issues on those repositories about how to support both 1.x and 2.0; in some cases, it helped to improve p5.js 2.0.
Survey respondents wanted to make sure the reference would be intact and usable for both versions. As a result of both the survey feedback and the discussion on GitHub, here’s the plan: once p5.js 2.0 is released, its documentation will also be released on a beta version of the website. This beta version will not interfere with the main site so that they can coexist.
Although p5.js 2.0 will be released very soon, that does not mean it will immediately replace 1.x; we have more than a year (until August 2026) as a community to test, iterate, and improve.
Timeline
Even as p5.js 2.0 becomes more stable, p5.js 1.x will continue to be supported for at least a year. Here’s the timeline so far:
- Start of April 2025: release — opt-in in the p5.js Editor
- Start of August 2025: communication about not updating 1.x soon
- End of March 2026: after this, no further updates on 1.x
- Start of August 2026: p5.js 2.0 is the default version in the p5.js Editor
Preload & Shape
One of the biggest changes from 1.x to 2.0 is how files are loaded, which is now also something that the Friendly Error System (FES) helps guide.
When it comes to the async/await and preload topic, any newcomers to this discussion can also check out last year’s discussion about this. There are different opinions on what best serves students. Moving away from preload and toward await/async means changing p5.js to reflect changes in JavaScript so that students who learn p5.js do not have to unlearn/relearn concepts when they use JavaScript more widely. I’m open to all ideas on how we can make this transition more supportive of learners and educators. You’re welcome to check out the guide on moving from 1.x to 2.0 or talk with me directly during public office hours.
In addition to preload and promises, there are some upcoming improvements in how shapes are handled. Both preload and shape from p5.js 1.x are available as compatibility add-on libraries so that p5.js 2.0 can be used even if you prefer the 1.x style.
Tables and Data Structures
Other changes included removing functions that p5.js implemented but which are actually supported by JavaScript itself. Removing these makes the library easier to maintain: this means fewer bugs, faster fixes, and easier entry for new contributors.
The survey asked about various functions, and based on the feedback, it’s clear that while the data structures functions could be replaced by JavaScript ones, the Table API did not have a good alternative, so Table functions will remain in p5.js 2.0. All those functions that will not be part of p5.js 2.0 also have a compatibility add-on and are listed in the compatibility guide.
Getting Involved
So what’s next? This has been a summary of the first p5.js Community Check-in, which was intended for anonymous feedback from a wider audience than contributors already on GitHub and Discourse. The feedback has been very helpful, so we’ll keep conducting these every few months. You can expect the next Community Check-in Survey to be about p5.sound.js!
Transparency is not about putting information out there, but doing it in a way that can be found and understood.
— Roopa Vasudevan, 2024 Processing Foundation fellow and creator of Aligning an Open Source Ethos
The intent of everything in this post is this: I want to share with you what we’ve been doing, and I’d love to know what you’d like to see more of, or done differently, in connecting with the community in various ways.
- GitHub: continuing discussion of specific features and bugs and proactively reaching out to community add-on libraries
- Discourse: continuing to invite input, but with added regular recaps of the GitHub discussions, so that it could be a little easier to enter and navigate if you’re interested but not sure where to jump in
- Newsletter, social media: the survey was mainly shared on social media, and it found people who were not already familiar with 2.0, so we’ll keep on sharing updates there! You can expect the next Community Check-in Survey to be about p5.sound.js
- Through communities and events we are connected to: after the p5.js 2.0 release, I will reach out to educators and users who might not be on Discourse or GitHub already. If that’s you, feel free to reach first!
- Conversations: for the next few months, I will host public office hours. When I started, I piloted the “check-in” survey as a way to include more voices in decision-making around the core library, and based on the comments it’s clear something more direct and conversational is important, additional to anonymous feedback and GitHub discussion.
This is all to say that I’m happy to meet you wherever you are: if you see a survey or a discussion here or there, jump right in with your thoughts, ideas, and questions!
Until next time & thanks for tuning in!
Best,
Kit