Community post
Hive Matrix Explorer part 2
The Hive Matrix Explorer started as a simple terminal style experiment using JS, direct RPC connection and raw stream of blockchain activity since i dont have it anymore due pixbee shutdown.
We wanted it lightweight, very dev core energy. And honestly the terminal version is still my favorite.
You can even run it locally in the browser and watch the chain move in... It also fun... and A few non dev friends saw it but they were into it.
That’s when we thought... lets make this a bit more inclusive and make it easier for normies to open and explore.
But simple changes sometimes create real problems.
The RPC Problem
How are we going to release it without overwilming hive RPC? Just in case it goes viral and 1000 users open it, its going to open 10000 RPC connectioins to stream? We didnt want that.
We just wanted to release it publicly without accidentally stressing Hive RPC infrastructure.
I hope we did the right thing, and Hive witness can tell us if its the right approach.
The Other Problem: Memory
In our first tests the browser tab went above 1.5GB RAM.
We were just pushing operations into state forever. No limits. No trimming. Just pure stream. It worked.. but not.
So we had to implement cropping and smart buffering and only keep what is needed for display, trim old operations to avoid keeping the full chain in memory.
After optimizing it properly, the app stays under 100MB RAM even after more than 2 hours running.
Solutions?
Approach 1: The "Browser-Only" Vanilla JS Implementation
Where it started but identify the too many connections issue.
But, If you want the absolute simplest way to stream Hive data, you can do it without compiling, building, or running a Node backend.
How it works
By importing the dhive library directly via a CDN you can tap into the Hive blockchain directly from the user s browser.
// index.html
<script src="https://unpkg.com/@hiveio/dhive@latest/dist/dhive.js"></script>
<script src="script.js"></script>
// script.js
const client = new dhive.Client([
"https://api.hive.blog",
"https://api.deathwing.me"
]);
const stream = client.blockchain.getOperationsStream();
stream.on('data', (op) => {
const type = op.op[0];
const data = op.op[1];
console.log(`New operation of type: ${type}`, data);
});
So you have a Zero Backend that you can host on GitHub Pages. There is no server to maintain. Using Direct Connection The user's browser connects directly to the Hive RPC nodes.
When a user first opens the page, the screen is empty. They have to wait up few seconds for the next block to be minted before seeing any data.
Processing heavy streams of data on mobile devices can drain batteries and cause UI stuttering if not carefully virtualized.
Approach 2: The Next.js App Router
To solve the empty initial state and build a more robust application, we pivoted to Next.js framwork using a Hybrid SSR + SSE.
However, moving real time streams to a serverless SSR environment like Next.js requires a paradigm shift. If you just fetch data on the server, you only get a snapshot. If you just fetch data on the client, you're back to the empty initial state problem.
So We implemented a middle ground:
-
The Server Buffer: The Next.js framwork using backend establishes a single
@hiveio/dhivestream and maintains a buffer of the last operations in memory. -
Hybrid SSR: When a user navigates to the page, the framework executes a Server Component that grabs the current cache and injects it into the initial HTML resulting in quick loading layout shifts.
-
Server-Sent Events (SSE): Instead of the client polling the API every second, the client establishes an EventSource connection... as the server receives new Hive block data it pushes the data down via the open HTTP connection.
The Implementation details
The Backend (app/api/hive/route.ts):
import { startHiveStream, getHiveBuffer, clients } from '../../lib/hiveStream';
export const dynamic = 'force-dynamic';
export async function GET(req: Request) {
const stream = new ReadableStream({
start(controller) {
clients.add(controller);
// Instantly send the historical buffer
const buffer = getHiveBuffer();
controller.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(buffer)}\n\n`));
req.signal.addEventListener('abort', () => clients.delete(controller));
},
cancel(controller) {
clients.delete(controller);
}
});
return new Response(stream, {
headers: {
'Content-Type': 'text/event-stream',
'Connection': 'keep-alive',
},
});
}
The Frontend (Client Component):
export function useHiveLive(initialOps: HiveOp[] = []) {
const [ops, setOps] = useState<HiveOp[]>(initialOps); // Initialize with SSR data!
useEffect(() => {
// Subscribe to real-time updates seamlessly
const source = new EventSource('/api/hive');
source.onmessage = (event) => {
const newOps = JSON.parse(event.data);
setOps(prev => [...prev, ...newOps]);
};
return () => source.close();
}, []);
return { ops };
}
So we expected Users get quick data on load, followed by seamless, lightweight socket-like streaming.
If 1,000 users open the app, you only have ONE connection to the Hive RPC nodes. The server distributes the data to the clients, saving the decentralized network from being spammed with identical requests.
So, If you're hacking together a quick viewer or a static dashboard, dropping dhive in a <script> tag is incredibly satisfying.
But if you are building a production grade Web3 application where performance, and UX matter, wrapping @ hiveio/dhive in a Next.js Server-Sent Events architecture gives you the ultimate control.
Check out the repositories and start streaming the Hive blockchain!
https://github.com/rferrari/hive-matrix-viewer
Skatehive Team:
http://hive-matrix-viewer.vercel.app/team
Replies (4)
Congratulations @vaipraonde! You received a personal badge!
Wait until the end of Power Up Day to find out the size of your Power-Bee.
May the Hive Power be with you!
You can view your badges on your board and compare yourself to others in the Ranking
Check out our last posts:
Power up just to get the badge. 😂
Congratulations @vaipraonde! You received a personal badge!
Participate in the next Power Up Day and try to power-up more HIVE to get a bigger Power-Bee.
May the Hive Power be with you!
You can view your badges on your board and compare yourself to others in the Ranking
Check out our last posts:
☝🏾 yes really 😂 I'm glad you think I'm annoying I suggest you tell your downvoting friend's to grow and stop acting like babies 😂
Happy Sunday everyone I hope enjoy your day please read and share 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾
@jacobtothe Keep digging just remember @acidyo took my rep away with the help of blocktrades delegations and everything is documented 😂😂😂
☝🏾✨⭕✨☝🏾🍻🍻🍻🍻
👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾
@jacobtothe and friends Please get help there's clearly something wrong with you 🙏🏾
I hope blocktrades pays you well enough 😂😂😂😂
Some people just never learn when 😂😂😂👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾
@jacobtothe @livinguktaiwan @oflyhigh @abit @adm @eval @abitmore @hurtlocker @hurt-locker @epstein @gundamzerofour @gundamzerotwo @gundamzerofive @buratus @nattosenpai @fw206 @ocd @acidyo @mrtats @poshtoken @poshtoken.wallet @hiddenblade @alohaed @tobias-g @nattosenpai @hivetrending @erikah @davidke20 @davideownzall @zingtoken @honey-swap @friendlymoose @x-rain @hivegc @rishi556 @ocd-witness @russia-btc @ocdb @justinw @nutritree @themarkymark @geekgirl @stresskiller @forkyishere @forykw @belikechuck @leovoter @upmyvote @punkteam @makerhacks @wiseagent @steevc @davidthompson57 @vaipraonde @demotruk @meno @thelittlebank @buttcoins @snapie @colemole @davidickeyyall @crimsonclad @smooth @oldsoulnewb @artgirl @flemingfarm @neoxian @bdvoter.cur @zaku @empo.voter @empoderat @trumpman @bhattg @azircon @riverflows @lazy-panda @gogreenbuddy @tarazkp @buildawhale @logic @abit @freedom @solominer @letusbuyhive @bijoy12 @sagarkothari88 @theycallmedan @ipromote @apeminingclub @nathen007 @dlmmqb @slobberchops @chops316 @littlenewthings @bozz @adm @abit @cwow2 @adm @logic @patrice @spaminator @topcomment @theworldaroundme and friends ✨⭕✨ Please get help 🙏🏾
@jacobtothe @acidyo @themarkymark @hurtlocker and friends 😁 No one will ever trust you again you weirdo 😂
Hello everyone I hope you are all good and well today in this post is some of the evidence to prove my case
If you didn't know I've been getting downvoted for a long time on Hive
They have been trying to bully me with downvotes and words but it doesn't affect me I've been online for over 25 years
So I've dealt with people like this before it's nothing new
But what they are doing is bad Very badi joined steemit like everyone else thinking it offers freedom but I must say steemit offered much more freedom than Hive does
Everyone already knows I only post my own original content I have no need to steal anything from anyone
I've been labelled a lot of things on Hive 😂 by the biggest farmers scammers and downvoters
Actions speak louder than any words do especially when them words are coming from a compolsive liars
I will keep updating this post when I get time
https://hive.blog/hive/@ureka.stats/the-untrending-report-hive-downvote-analysis-16-09-2025-20250916181314
https://hive.blog/hivedev/@makerhacks/please-peakd-allow-me-to-completely-block-spammers-would-you-ever-vote-for-this
https://hive.blog/hive-167547/@dlmmqb/re-kgakakillerg-t34wy6
https://hive.blog/hive-170475/@acidyo/re-kgakakillerg-t32sw1
https://hive.blog/hive-167922/@themarkymark/re-kgakakillerg-t30ziu
https://hive.blog/hive/@ureka.stats/the-untrending-report-hive-downvote-analysis-29-09-2025-20250929172045
No downvotes for this racist person 🧐
https://hive.blog/hive-196387/@acidyo/re-kgakakillerg-t41yr6
https://hive.blog/dvs/@dhedge/re-kgakakillerg-t3clz3
https://hive.blog/hive-150329/@kgakakillerg/t3a8fu
https://hive.blog/musical/@steevc/re-kgakakillerg-t2kz1m
🚨🚨🚨🚨🙄🙄🙄🙄🚨🚨🚨
https://hive.blog/hive/@kgakakillerg/i-ve-been-put-on-two-blacklists
acidyo @themarkymark and friends ✨⭕✨😂😂😂](https://blurt.blog/blurt-148101/@kgakakillerg/6y7d8o-acidyo-themarkymark-and-friends)
https://hive.blog/hive-148441/@kgakakillerg/a-trip-to-clacton-on-sea-april-2024-part-5
📊 The Untrending Report - Hive Downvote Analysis - 2025-09-07
RE: Understanding Pointers in C Programming
https://hive.blog/hive/@ureka.stats/the-untrending-report-hive-downvote-analysis-16-09-2025-20250916181314
https://hive.blog/hive-124838/@oldsoulnewb/re-kgakakillerg-t2vylt 😂
RE: HIVE THRIVE— Show #27 —Guest: @eddiespino
Please Peakd, allow me to completely block spammers (Would you ever vote for this?) thanks for exposing yourself more
https://hive.blog/hive-108278/@kgakakillerg/t3hofp
https://hive.blog/hive/@ureka.stats/the-untrending-report-hive-downvote-analysis-29-09-2025-20250929172045
https://hive.blog/hive/@kgakakillerg/t3ho4g
https://hive.blog/hive-108278/@kgakakillerg/hive-is-done
https://hive.blog/hive-167547/@themarkymark/new-hive-analytics-reports-proposals-downvotes-9ag
https://steemit.com/hive-156383/@kgakakillerg/hive-is-done-part-2
https://hive.blog/hive-108278/@kgakakillerg/hive-is-done-3
https://hive.blog/hive-108278/@kgakakillerg/hurtlocker-and-friends
https://hive.blog/hive-108278/@kgakakillerg/hive-is-done-4
https://hive.blog/hive-164166/@oldsoulnewb/re-kgakakillerg-t79fo0
https://hive.blog/hive-108278/@kgakakillerg/it-s-over-themarkymark-and-acidyo
https://steemit.com/hive-156383/@kgakakillerg/hurtlocker-acidyo-themarkymark-and-the-rest-of-you-downvoting-farmers-it-s-over
https://hive.blog/hive-108278/@kgakakillerg/to-jacobtothe-and-friends
Thank you for reading and viewing this post
To all the downvoters on Hive When the downvotes stop 🛑 and my rep is back I stop sharing the truth 🙏🏾
☝🏾☝🏾☝🏾☝🏾☝🏾☝🏾 Keep calling the truth lies 😂☝🏾
So many pretend to be doing god's work but they are really working for the devil 👿
Karma will strike you and who ever supports you 🙏🏾
☝🏾☝🏾☝🏾☝🏾☝🏾☝🏾☝🏾☝🏾☝🏾☝🏾☝🏾☝🏾