Sign in

TJ

@tunji.dev
981 followers 241 following 525 posts

Really good buddies with the little green droid, wearer of many hats. I like to build, design and tinker. 🌐 tunji.dev Building @heron.tunji.dev, an open source atproto client for Android, iOS and Desktop. Why Heron? heron.tunji.dev

PostsRepliesMedia
TJ @tunji.dev · 22/09/2026
Experimenting with platform liquid glass on iOS in Heron
140
TJ @tunji.dev · 09/07/2026
Please file issues in Github with details so I can help. It's hard to help with just posts. Have you tried using other models? You can delete downloaded models from the UI.
000
TJ @tunji.dev · 09/07/2026
Experimenting with something new in the latest Heron release. Heron now let's you download a local inference model to translate text and it works completely offline on your device. Nothing gets sent to any server.
091
TJ @tunji.dev · 01/07/2026
This week's Heron release is a small quality of life one. The Black Heron theme has been updated to be OLED black. The previous color scheme is now under the Pied Heron theme.
091
TJ @tunji.dev · 01/07/2026
This week's Heron release is a small quality of life one. The Black Heron theme has been updated to be OLED black. The previous color scheme is now under the Pied Heron theme.
051
TJ @tunji.dev · 22/06/2026
I spent my weekend playing with view transitions on web on tunji.dev, and they're really nice! I'm surprised more websites don't use them, its largely just adding a view transition name on components on React 19+
090
TJ @tunji.dev · 15/05/2026
Adding Atmosphere app support to Heron like
1141
TJ @tunji.dev · 09/05/2026
I built push notification support for standard.site in Heron and I just got my first notification for one of my subscriptions. Feels good 😊
0203
TJ @tunji.dev · 29/04/2026
With the latest Heron update, I can prioritize my writing over other atproto records on my profile.
030
TJ @tunji.dev · 19/04/2026
You can drag down on the home timelines or tap the button on the top right
010
TJ @tunji.dev · 04/03/2026
Perfect timing!
3180
TJ @tunji.dev · 05/02/2026
2D scrolling on Heron is one of my favorite features. There are so many amazing nature photographers on here and the right layout really helps make the content pop.
030
TJ @tunji.dev · 03/02/2026
Trying something fun with the Heron gallery: support for 2D scrolling. It will be available in feeds where all the posts have media, like a profile's photos or videos, or special media only feeds like videos or some made on @graze.social.
090
TJ @tunji.dev · 31/01/2026
Adding a little morph animation from the back button to the Heron logo if going back via a gesture ☺️
1121
TJ @tunji.dev · 30/01/2026
A single pixel?
100
TJ @tunji.dev · 16/12/2025
The latest version of Heron adds a pull down gesture for timeline settings. It was fun to implement, I used the Anchored draggable and seekable transition APIs.
1171
TJ @tunji.dev · 06/12/2025
The latest version of Heron bumps Jetpack Compose to 1.10 and to Navigation 3's stable release so the animations and transitions are more polished than ever
0151
TJ @tunji.dev · 13/10/2025
Soon 👀
An image showing how much time until the Heron app is available in public beta to everyone.
070
TJ @tunji.dev · 29/09/2025
I'm excited to announce something I've been building, an open source atproto client heron.tunji.dev! Its currently available in beta on Google Play for Android devices. Please DM @heron.tunji.dev if you'd like early access. It will be released to all Android users in the next few weeks!
99321
TJ @tunji.dev · 25/08/2025
Getting ready for an alpha launch, but in the meantime, here's some UI progress! I try to maximize the amount of screen estate allocated to content when scrolling.
1419
TJ @tunji.dev · 21/07/2025
Working on a blog post for 3 unique predictive back animations you can create with the navigation events library 😊 Slide to pop Sticky shared elements resize to pop Drag to pop
040
TJ @tunji.dev · 20/06/2025
Added drag and drop to manage feeds on Heron
170
TJ @tunji.dev · 01/06/2025
Whoever they are, their bot/script is running on Google cloud in San Jose data centers:
100
TJ @tunji.dev · 01/06/2025
They're clearly having a lot of fun at my expense 🥴
100
TJ @tunji.dev · 20/05/2025
For an idea of the cool stuff you can do with this, I built this with nav3
1101
TJ @tunji.dev · 19/05/2025
I got asked how the persistent UI architecture scales when theres local animations like in the navigation bar mock below, and how to keep them with separate navigation bar instances. Solution: create movable shared element transitions using movableContentOf! I've updated the post with an example.
040
TJ @tunji.dev · 14/03/2025
Room 2.7.0-rc02 is out which fixes a NullPointerException when compiling with KSP on iOS, which means the tip of tree commit of Heron compiles again on iOS!
1181
TJ @tunji.dev · 08/03/2025
I asked the folks @graze.social if I could put metadata in my bird feed to mark it as an image only feed, and they did! Which means I can support 3 feed presentation styles in my app: Text with embeds, expanded media and condensed media!
1433
TJ @tunji.dev · 28/02/2025
Got my dynamic feed layout toggle working yday. Just need to support an image focused layout next!
071
TJ @tunji.dev · 17/02/2025
Update pull to refresh animation for a profile 😊
0182
TJ @tunji.dev · 16/02/2025
I really like bluesky, but sometimes I want less text, and more content 🦜 🦆 🦩
260
TJ @tunji.dev · 20/01/2025
aaaand I've got video working in feeds, for Android at least
080
TJ @tunji.dev · 14/01/2025
Sure thing!
130
TJ @tunji.dev · 13/01/2025
I got Heron compiling for iOS on the iPad and I still can't believe the value prop of compose multiplatform. I was able to build an offline-first multiplatform app in 4 weeks! Frame rate isn't great, and I don't know if iOS insets for the status and nav bars are supported, but my mind is blown.
3388
TJ @tunji.dev · 11/01/2025
Added a little polish to Heron for tablets today 😊
2141
TJ @tunji.dev · 09/01/2025
Back to work next week, and I got further that I thought I would with my open source bluesky client! Just needs a little polish over the next few months and I'll publish it to the play store. Here's a little progress video:
0183
TJ @tunji.dev · 23/12/2024
You were right!
3131
TJ @tunji.dev · 20/12/2024
Also the recursive CTE to get the reply thread for a post is something 🥴 Fairly sure its not optimal, but its 4 CTES, 2 of them recursive and 3 UNIONs
000
TJ @tunji.dev · 20/12/2024
Diving into posts with shared elements is an interesting experience! IDK if I want to keep it, it may get tiring after a while. Also notice how the avatar image shape morphs from a corner circle to a full circle from screen to screen.
220
TJ @tunji.dev · 16/12/2024
Or large screens?
130
TJ @tunji.dev · 16/12/2024
Oh, and what fun is a Compose app without shared elements?
130
TJ @tunji.dev · 16/12/2024
My holiday project is an open source bluesky app! Already having fun with the androidx shapes library on the timeline, where the connecting lines for the thread have "mass" and distort circular avatars by distorting them around the edges.
4211
TJ @tunji.dev · 12/11/2024
The above was just a stress test for something I've been playing around with with navigation! I saw @riggaroo.bsky.social post about using animateBounds with FlowLayouts and wanted to apply it to my NavHost to animate up to 3 panes entering or leaving depending on screen size or navigation state:
140
TJ @tunji.dev · 12/11/2024
The new animateBounds modifier in Compose 1.8 is one of those new APIs with huge ripple effects. Being able to arbitrarily animate the size and position of any composable is mind blowing. Below I have a resizable grid that shuffles on click. Look at items animate to their shuffled locations!
2181