Context:
In the past year, our Flow Playground succumbed to a mountain of tech debt and didn’t get the attention it needed to keep up with our evolving ecosystem. This resulted in several regressions until it became virtually unusable for many users deviating off the happy path defined by the first couple of tutorials.
Impact:
Over the past couple of months, the Flow developer experience team has been hard at work refactoring, building, and fixing the whole codebase to address the end-to-end user experience. We’ve been able to launch a stable version of the playground with some huge improvements, including:
- 99% reduction in critical errors experienced by users
- 5x speed improvement for smooth and fluid interactions
- Battle-tested against all Cadence tutorials and cookbook examples
- Account storage inspection feature is functional again
Coming up:
We’re working hard to release a V2 of Playground with our new designs that’ll include:
- Revamped UI that is optimized to be reflective of your local development experience without the hassle of installs, configuration and tooling
- Folders and files to hold your contracts, transactions and scripts that’s easily exportable, shareable, and more
- Ability to view, rewind, replay, and share chain state as you run transactions
- A guided tutorial experience that walks users through
- Smart suggestions for starter Cadence snippets, templates, and more!
We are expecting a public beta version with some of the above features by end of Q4, stay tuned to this post and Discord to keep up to date!
Check it out now! @ play.flow.com
Feel free to post any comments, concerns, or issues here.
More Details
Key improvements for end users:
- 13k unhandled errors thrown per day from the Language Server to 0
- 3.1k unhandled errors thrown from the Playground spread across 18 different issues. All of these have been resolved with errors now thrown sitting in the single digits.
- Performance jumped up in magnitudes thanks to a move from our non-relational DB to PostgreSQL for persistence.
- Upgraded infrastructure that now comes with a lot more visibility, logging, monitoring, and notification tooling we need to keep the deployment performant and healthy.
- We are now releasing on a weekly basis compared to quarterly before. This will ensure regular feature releases, tooling and dependency updates, and overall stability.
Key improvements for contributors:
- Updated the emulator the playground was using from a customized version to the latest. This will help:
- Reduce the steep onboarding curve to the codebase for new maintainers
- Standardize the Playground emulator to use a non-customized version
- Utilize the latest flow-go release
- The staging environment is now publicly available
- Significantly improved test code coverage on the backend API
- The Playground is now staffed with a dedicated owner and team to improve and maintain it into the future.
Relevant PRs and issues:
- Fixing LS errors
- [LS] Better cache invalidation for imported program checkers · Issue #1570 · onflow/cadence · GitHub
- [LS] Crashing on referencing non-existing imported variable · Issue #1544 · onflow/cadence · GitHub
- [LS] Handling parser exceptions · Issue #1949 · onflow/cadence · GitHub
- [LS] Flow client encapsulation and integration refactor by sideninja · Pull Request #1752 · onflow/cadence · GitHub
- [LS] General improvements by sideninja · Pull Request #1877 · onflow/cadence · GitHub
- [LS] Contract deploy test fix by sideninja · Pull Request #1890 · onflow/cadence · GitHub
- [LS] Use a hosted emulator from flowkit by sideninja · Pull Request #1739 · onflow/cadence · GitHub
- Fixing FE bugs
- https://github.com/onflow/flow-playground/pull/302
- Serialize project queries/mutations to fix race conditions by alse · Pull Request #344 · onflow/flow-playground · GitHub
- Adapt to the new account storage format by alse · Pull Request #328 · onflow/flow-playground · GitHub
- Fix transaction/script rename bug by alse · Pull Request #338 · onflow/flow-playground · GitHub
- Action button bug fixes by alse · Pull Request #339 · onflow/flow-playground · GitHub
- update dev portal playground links for tutorial by MrDSGC · Pull Request #333 · onflow/flow-playground · GitHub
- Misc bug fixes by alse · Pull Request #329 · onflow/flow-playground · GitHub
- Scroll tutorials on smaller screens by alse · Pull Request #337 · onflow/flow-playground · GitHub
- Update script and transaction cache by alse · Pull Request #367 · onflow/flow-playground · GitHub
- Remove delayed saving state by alse · Pull Request #364 · onflow/flow-playground · GitHub
- Update project cache without triggering new project queries by alse · Pull Request #366 · onflow/flow-playground · GitHub
Contributors:
Thank you to all the contributors that made this release possible!