This is the first beta release of WPILib for the 2026 season. Please join the discussions regarding beta testing at https://github.com/wpilibsuite/2026Beta/discussions.
The documentation for WPILib is located at https://docs.wpilib.org/en/latest/ (if you have trouble accessing this location, https://frcdocs.wpi.edu/en/latest/ is an alternate location with the same content).
If you're new to FRC, start with Getting Started.
System Requirements: WPILib requires 64-bit Windows 10 or 11 (Arm and 32-bit are not supported), Ubuntu 22.04 or 24.04, or macOS 13.3 or higher. C++ teams should note that the latest version of Visual Studio 2022 is required for desktop builds. Mac users will need to have the Xcode Command Line Tools installed before running the installer. This can be done by running xcode-select --install in the Terminal.
If you're returning from a previous season, check out what's new for 2026. You will need a new RoboRIO image for 2026; this is available via the FRC 2026 Beta Game Tools. Follow the WPILib installation guide to install WPILib.
If you're starting from a 2025 robot project, you will need to import your project to create a 2026 project. The import process is important, as it will make a few automated corrections for some breaking changes that happened in 2026. It is also necessary to import vendor libraries again, since last year’s vendor libraries must be updated to be compatible with this year’s projects.
A complete list of known issues with this release can be found here.
WPILib is developed by a small team of volunteers and the FIRST community.
Downloads
- Windows (2.4 GB)
- Mac (Arm) (2.2 GB)
- Mac (Intel) (2.3 GB)
- Linux (x64) (2.8 GB)
- Linux (arm64) (2.4 GB)
What's Changed since 2025.3.2
WPILib
- Remove unhelpful comments from BooleanEvent by @calcmogul in #7970
- Add Preferences.getNetworkTable() by @kcooney in #7962
- Fix typo in notifier comments by @lazypenguin34 in #8047
- Disambiguate HID Sendable names by @sciencewhiz in #8081
- Remove Jaguar (and other) motor controllers by @ThadHouse in #8298
Commands
- Mark C++ CommandPtr class as [[nodiscard]] by @bathtubed in #7803
- Deprecate Command.schedule() by @Gold856 in #7072
- Add Subsystem.idle() by @WispySparks in #7815
Epilogue
- Add superclass field & method logging to Epilogue by @Ornamus in #7993
- Use reflection to access non-public superclass fields by @Ornamus in #7996
- Optimize time and memory usage of epilogue backends by @SamCarlberg in #8190
- Support logging of protobuf-serializable types by @SamCarlberg in #8229
Math
- Adjust applyDeadband logic by @KangarooKoala in #7816
- Fix null pointer when calling timeLeftUntill by @me-it-is in #7894
- Fix Debouncer type-changing behavior by @crueter in #7870
- Fix coordinate frame docs in HolonomicDriveController by @therekrab in #7938
- Support dynamic matrix sizes in StateSpaceUtil by @LucienMorey in #7942
- Add dynamic size support for numerical jacobian computation by @LucienMorey in #7959
- Add dynamic size support for angle statistics by @LucienMorey in #7964
- Add nearest() method to Pose3d (mirroring Pose2d) by @MichaelLesirge in #8010
- Add Translation3d.nearest() by @MichaelLesirge in #8015
- Pass Translation2d by const reference instead of by value by @MichaelLesirge in #8021
- Update parameter type from list to collection in Java nearest methods by @MichaelLesirge in #8020
- Add copySignPow to MathUtil for joystick input shaping by @MichaelLesirge in #8013
- Fix TrapezoidProfile limiting velocity incorrectly by @ThePixelatedCat in #8030
- Remove redundant transposes on symmetric matrices by @calcmogul in #8131
- Add vector product and squared length operations to Translation2d/3d by @rmheuer in #8133
- Added structs for TrapezoidProfile.State and ExponentialProfile.State by @Daniel1464 in #8163
- Fix dt type in C++ tests by @calcmogul in #8179
- Synchronize C++ and Java RK4 docs (NFC) by @calcmogul in #8238
- Add 2D variants of
MathUtil.applyDeadbandandMathUtil.copySignPowfor circular joystick inputs by @MichaelLesirge in #8057 - Rename 1D copySignPow to match 2D copyDirectionPow by @MichaelLesirge in #8286
- Scale transforms instead of twists in PoseEstimator by @KangarooKoala in #8333
- Fix
ElevatorSim::GetCurrentDraw()in C++ by @bhall-ctre in #8370 - Add X44 and Minion to DCMotor by @daltzctr in #8319
Units
- Add InchesPerSecondPerSecond by @WispySparks in #7905
- Correct mil unit by @CoryNessCTR in #7950
- Add miles per hour conversation methods to Units.java for use in dashboards by @MichaelLesirge in #8026
- Fix units overload resolution by @KangarooKoala in #8267
- Add a few unit overloads by @Murat65536 in #8231
CameraServer
- Fix USB video mode handling on macOS by @yuhao1118 in #7904
- Add UVC Protocol Support for USB Camera Controls on macOS by @yuhao1118 in #7926
- Fix memory leak in usbviewer example by @spacey-sooty in #7922
- Resolve macOS camera freeze with specific devices by @yuhao1118 in #7960
Examples/Snippets
- Add compilable code snippets by @sciencewhiz in #7909
- Add DutyCycleEncoder Snippets by @sciencewhiz in #7930
- Add remaining Encoder snippets by @sciencewhiz in #7936
- Add Limit Switch snippets by @sciencewhiz in #7946
- Add snippets for Digital Input article by @sciencewhiz in #7949
- Add AnalogInput snippets by @sciencewhiz in #7951
- Misc fixes for snippets by @sciencewhiz in #7952
- Add Analog Potentiometer Snippets by @sciencewhiz in #7957
- Add Accelerometer snippets by @sciencewhiz in #7966
- Add ProfiledPIDController with feedforward snippets by @jasondaming in #8280
NetworkTables
- Check id ranges in control messages by @PeterJohnson in #7726
Upstream
- Upgrade Sleipnir by @calcmogul in #8235
- Upgrade to Eigen 5.0.0 by @calcmogul in #8240
- Remove memory library by @calcmogul in #8035
Glass/Sim GUI
- Fix NT int64 value display by @PeterJohnson in #8038
- Add GUI context getter hooks by @PeterJohnson in #8127
- FMS: Fix reading past end of GSM buffer by @PeterJohnson in #8268
SysID
- Remove Phoenix5 CANcoder preset by @spacey-sooty in #8316
WPICal
XRP
- Updating XRP for new SparkFun RP2350 Board by @jpokornyiii in #7880
Networking/Utilities
- [wpinet] Fix potential vulnerable cloned function by @npt-1707 in #7985
- [wpiutil] Update StructSerializable contract (NFC) by @KangarooKoala in #7441
- [wpiutil] Add reverse iterators to wpi::circular_buffer and wpi::static_circular_buffer, make other iterators bidirectional by @petelilley in #8275
- Add Kaitai Struct definition for data log format by @jonahsnider in #7882
- [wpiutil] Add nested struct schemas before parent schema by @jonahsnider in #7935
New Contributors
- @yuhao1118 made their first contribution in #7904
- @me-it-is made their first contribution in #7894
- @therekrab made their first contribution in #7938
- @LucienMorey made their first contribution in #7942
- @bathtubed made their first contribution in #7803
- @npt-1707 made their first contribution in #7985
- @Ornamus made their first contribution in #7993
- @MichaelLesirge made their first contribution in #8010
- @kcooney made their first contribution in #7962
- @ThePixelatedCat made their first contribution in #8030
- @lazypenguin34 made their first contribution in #8047
- @Iris-TheRainbow made their first contribution in #8148
- @petelilley made their first contribution in #8275
- @EdanThomton made their first contribution in #8295
- @Murat65536 made their first contribution in #8231
- @daltzctr made their first contribution in #8319
Full Changelog: v2025.3.2...v2026.1.1-beta-1