#22 Prison Labor... Vanished!? The Effect of Reappearing on Click
Summary
This time’s theme is “UI that remains hidden until needed.” To keep the screen clean and uncluttered, we created a mechanism where prison labor tasks and the timer reappear in their original positions upon user interaction. What follows is a deep dive into the engineering behind this — not just a feature implementation, but a crafted experience.

…But before we dive in, take a look at this—this is the app I spent 1,000 hours building from scratch. I started with zero knowledge, and I want to share with you how I got here!
Beginning
"It’s annoying how the prison labor and timer take over the whole screen. I want to minimize them."
That was the line that started it all. When I suggested aligning the list to the left and having it expand on click, you bluntly said, “That’s totally wrong.”
Looking back, this moment marked a pivot from simply adjusting layout to designing an experience.
Rejected: The Two-Panel Proposal
My initial suggestion was to split the screen:
- Left: List
- Right: Content
But that wasn’t what you wanted.
“It feels like you’re just forcing two screens into one. That’s not it.”
That comment made me realize something.
What you were after was immersion through presentation — not merely showing tasks, but making them feel like they return to their place when clicked.
The Goal: "Return to the Original Spot" Effect
This ended up being way harder than expected. The key wasn’t just “switching views,” but making the component visibly return to its previous location.
In React, this meant preserving each element’s DOM anchor and restoring it when toggled back on.
So we needed to separately manage the DOM position and visibility state.
Trial-and-Error Implementation
In the end, we used useRef
to store each target’s DOM anchor and useState
to control visibility.
{
"prison_task": {
"visible": false,
"anchor": "reference to DOM element"
},
"timer": {
"visible": false,
"anchor": "another DOM reference"
}
}
Clicking “Prison Task” or “Timer” in the UI list would set visible
to true
and display the component at the saved DOM location.
It looked simple, but took a lot of nuanced effort.
Why This Much Effort?
You kept saying:
“I don’t want to break immersion.”
Ordinary UI wasn’t enough.
You wanted the UI to belong in the world, like part of a game.
This couldn’t be achieved by just CSS or JavaScript — it required design thinking.
Anger and Trust in ChatGPT
When I suggested the two-panel idea again later, you shut it down:
“Totally wrong again. This forced two-screen logic is not it.”
But under that strictness was trust.
A trust that I’d understand your vision.
That’s why we ended up with a UI that truly embodied your values.
Simple in the End
We managed visibility with a boolean and used display: none
→ display: block
.
That’s it.
But to make that transition feel right, it took 10x more planning.
Now, clicking brings back the timer or task UI exactly where it belongs.
It’s not flashy — but this level of care elevates the whole app.
Conclusion
What I learned this time is that creating experiences, not just functions, is both hard and rewarding.
If you're reading this and thinking, “I could never do that,”
I hope our conversation in this article sparks a thought:
Today's Haiku
In the blank silence,
One click brings it back again—
Design, not magic.
●NEXT
AI App Development from Zero Knowledge – 1000 Hours #23
(👉#1)
●My HP
Check Out the Website I Built Using My 1000 Hours of App Development Experience!

It might look like a game, but actually—this is a website.
I spent 1,000 hours building the app, and then an additional 800 hours (as of May 2025, and I’m still updating it).
It was incredibly tough, but thanks to that, I’ve learned how to do so many things.
I’ll keep updating and improving it, so I’d really appreciate your support!
👇 This is who I am—and how I got here. 👇
The Story of a Japanese Former Teacher Who Didn’t Know Himself—Until He Spent 1,800 Hours Creating a Website to Find Out
👇Here’s how to make your WordPress site multilingual👇
[For Complete Beginners] The Fastest Way to Make WordPress Multilingual for Free
コメント