WPILib 2023.2.1 release

This is an update release of WPILib for the 2023 season. This release fixes two major bugs in the kickoff release:

  • SendableChooser might not pick up the value set by the dashboard
  • Calls to NT flush() on clients were rate-limited to the default rate

Significant new features in this release:

  • 2023 field images have been added to Shuffleboard and PathWeaver
  • A 2023 field layout has been added for AprilTagFieldLayout
  • An AprilTag vision example has been added for both C++ and Java

Upgrading from the kickoff 2023 release is easy: simply download and run the new installer and it will update your current installation. If you already have the 2023 WPILib vscode installed, it will detect it and you can simply click “next” for that installation step. After installation, vscode will prompt you when opening your robot project whether you want to upgrade it to this version. Note that using the installer is required to get the new version of desktop tools such as Shuffleboard.

The documentation for WPILib is located at https://docs.wpilib.org/ (if you have trouble accessing this location, FIRST Robotics Competition Control System — FIRST Robotics Competition documentation is an alternate location with the same content).

If you’re new to FRC, start with Getting Started.

WPILib is developed by a small team of volunteers and the FIRST community.

What’s Changed



  • Add 2023 layout JSON by mcm001
  • Explain what April tag poses represent (NFC) by bovlb


  • Fix swerve kinematics util classes’ equals function by ohowe1
  • Pose estimator: Allow multiple vision measurements from same timestamp by mcm001
  • Fix SwerveDriveKinematics not initializing a new array each time by ohowe1
  • Fix PID atSetpoint to not return true prematurely by sciencewhiz


  • Fix spacing in command composition exception by superpenguin612
  • BREAKING: C++: Delete UB-causing rvalue variants of CommandPtr methods by Starlight220


  • Fix client flush behavior by PeterJohnson
  • Queue current value on subscriber creation by PeterJohnson


  • Cleanup PotentiometerPID, Ultrasonic, UltrasonicPID by Starlight220
  • DigitalCommunication, I2CCommunication: Add tests by Starlight220
  • Add example programs for AprilTags detection by fovea1959


  • [wpiutil] Guard MSVC pragma in SymbolExports.h by calcmogul
  • [fieldImages] Add 2023 field by sciencewhiz
  • [wpilibj] Add missing distance per pulse functions to java EncoderSim by rzblue
  • [hal] Add handle constructor and name getters for sim devices by rzblue


  • Fix SparkMax initialization sequence by jlmcmchl
  • Update to WPILib release version by TytanRock


  • Add 2023 field image by sciencewhiz
  • Remove PID Widget features only used by old PIDController by sciencewhiz


  • Use field images from allwpilib by pjreiniger


  • Fix artifact error page by ThadHouse
  • Treat ARM64 Windows like x64 Windows by jkunkee

Do we need to install the new ISO, or in our code, can we change the file build.gradle line 3 to id “edu.wpi.first.GradleRIO” version “2023.2.1” and get the changes?

If in VS Code, there is a task in the command pallet that updates WPILib. Ctrl shift p, update

This is very much not recommended and will cause broken behavior.

1 Like

If it isn’t reccomended, why is it included in the WPILib extension?

It’s required as a VS Code extension AFAIK

I don’t know any other VSCode extensions that offer that command in the command pallet. It updates the version in the gradle files for the project as well, which definitely isn’t a requirement from VSCode.

That function exists because some people use wpilib without running the offline installer. That works, but we can’t guarantee it will work in competition, as gradle sometimes likes to delete caches.

The offline installer ensures this doesn’t happen, as it contains an offline copy of all dependencies.

The setup is built to work fully online, but we really prefer to push teams to the offline setup. Especially teams that are asking how to update, as they likely don’t have an understanding of what the different installation methods are and why we use and recommend the offline installer.


To answer the question directly instead of the above indirect response, it’s HIGHLY recommended to download the new installer and rerun the installer. It will install in place without issues, and it will ensure you won’t have wpilib dependency issues at competition.

Thank you! Just FYI… I had to reboot my Mac (M1/13.1) after installing. I kept getting an error message re: Java 17 until I did.

I noticed that I wasn’t getting the new 2023 field in Shuffleboard. So, I ran the installer again and did a tools only install. Still didn’t get it. I ran the whole installer again… didn’t get it. I deleted the tools folder and that was a mistake! Neither a tools only or a full install got me functional (Shuffleboard wouldn’t launch gradle was trying to download it that kept failing). So, I deleted the entire wpilib/2023 folder and reinstalled. That did work. Just sharing in case somebody else is struggling too! Running a Mac M1. If (when!) I do it again I will save my vscode folder so I don’t have to do reconfigure my extensions and preferences.

1 Like

The students who had Macs were not able to install this release. It asks to select the artifacts. When they select it the file chooser stays up and you can then only select cancel. We tried removing the entire 2023 directory to do a fresh install but the same thing happens. We then downloaded the 2023.1.1 release and it installs without issue. Any ideas on how to get them up to the 2023.2.1 release?

Did you download the x86 or ARM version of the macOS installer?
Is the target mac machine x86 (legacy machines) or ARM (M1/M2)?
Were any other disk images mounted before running the installer?

1 Like

Ah, Yes. It was the third question. The 2023.1.1 image was still mounted. So we unmounted it and the 2023.2.1 installer was successful. Thank you so much!

1 Like

It installs “without issue”, but I am having a devil of a time getting it linked in with GitHub Desktop. GD only “sees” the older VSCode for editor linking. And the new install doesn’t “see” my existing 2023 repository, just keeps asking to import the older 2022 project.


Check your paths… remove the old paths or order them correctly?

Paths? Where are these in menus? If you’re talking about OS %PATH%, if the installer couldn’t set this correctly, I’m not going to trust myself to fiddle with it.

Yes the OS path…. I have faith in you! (You can always change it back.) I don’t use the github desktop, but perhaps where you specify the default editor you can explicitly choose the path? You can for git. It is confusing have 4 versions of vscode on my laptop, but it is also helpful.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.