react-fps v1.0.6
Table of Contents
About the Project
react-fps is a tool to analyze your apps performance. Simply add the component
or use the exported hook to create your own visualization.
Features
- Includes the above UI component for logging FPS without any hassle.
- Exports a
useFpshook to create your own customized UI. - Also tracks main thread blocks and idle times.
Getting Started
Installation
yarn add react-fpsnpm i react-fpsTypeScript
This package is built with TypeScript and supports it out of the box.
Usage
Component
To use the built in UI component seen above, just use the FpsView component:
import React from "react";
import {FpsView} from "react-fps";
export function YourComponent() {
// ....
return (
// ...
<FpsView/>
// ...
);
}Props
By default the component will appear in the upper left corner with a dimension of 140x60 pixels. You can of course modify that via props:
import React from "react";
import {FpsView} from "react-fps";
export function YourComponent() {
// ....
return (
// ...
<FpsView width={240} height={180} left={60} top={80}/>
// ...
);
}You can also use bottom and right to position it relative to those borders.
import React from "react";
import {FpsView} from "react-fps";
export function YourComponent() {
// ....
return (
// ...
<FpsView width={240} height={180} bottom={60} right={80}/>
// ...
);
}Hook
useFps(windowWidth: number): {fps: number[], avgFps: number, maxFps: number, currentFps: number};Params
windowWidthdefines the number of kept values. So3saves the last three fps values,20will save the last twenty. This also is the base the average and maximum calculation.
Note! windowWidth roughly equals to seconds passed. So a window of
20 is approximately a window of 20 seconds. But there is absolutely no
guarantee that this will be the case.
Return Values
fpsis an array of fps numbers. Most recent value is the last one.avgFpsis the average frame rate over the defined window.maxFpsis the maximum frame rate recorded over the defined window.
Usage
To use the hook, just import it into your component.
import {useFps} from 'react-fps';
function YourComponent() {
const {fps, avgFps, maxFps, currentFps} = useFps(20);
// ....
}And then you can build the UI visualization of your dreams.
Roadmap
- Implement a hook version that updates itself every frame.
- Add milliseconds to render a frame stat
- Add memory consumption
- Add a customization hook and component.
Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
Distributed under the MIT License. See LICENSE for more information.
Contact
Johannes Klauss - @JohannesKlauss - klauss.johannes@gmail.com
Project Link: https://github.com/JohannesKlauss/react-fps
Prior Art
Basis of this package is the react-fps-stats
Both are react ports of stats.js.
I ported it to use hooks, added a nicer color layout and made it more customizable.