thejoecodes

dev blog by johnny mcfadden

Latest Articles

// Sketchy's journal β€” the whole DB
// boils down to four tables and a
// single sync expo-sqlite handle.
const db = SQLite.openDatabaseSync(
'journal.db'
)

πŸ›Ή Sketchy - Skateboard Companion App

03 May 2026 β€’ πŸ“– 30 min read
β˜• Coffee needed

Behind the scenes of Sketchy, a skate companion app built on Expo SDK 55, React Native 0.83, expo-sqlite, OpenStreetMap and EAS, with the New Architecture and React Compiler turned on.

0
0
0
REACT NATIVE TYPESCRIPT
const intervalRef = useRef(null)
const resetGame = useCallback(() => {
clearInterval(intervalRef.current)
}, [])

πŸ•ΉοΈ Building 'Simple' React Games

21 Apr 2026 β€’ πŸ“– 19 min read
β˜• Coffee needed

What I learned refactoring two browser games: grouping state, useReducer, stale closures, timer cleanup, render-time randomisation bugs, and replacing three intervals with one rAF loop.

0
0
0
REACT JAVASCRIPT
<Pressable
accessibilityRole="button"
accessibilityLabel="Submit form"
onPress={handlePress}
/>

🦜Teaching React Native to Talk

17 Mar 2026 β€’ πŸ“– 18 min read β€’ Updated 18 Apr 2026
β˜• Coffee needed

What VoiceOver and TalkBack actually need from your app. Semantic roles, focus management, live regions, and the handful of props that make all the difference.

0
0
0
ACCESSIBILITY REACT NATIVE
const { userId } = useLocalSearchParams()
useEffect(() => {
getUserDetails(userId).then(setUser)
}, [userId])

🦸 Expo & Expo Router

21 Jan 2024 β€’ πŸ“– 30 min read β€’ Updated 16 Mar 2026
β˜• Coffee needed

Expo, EAS & Expo Router: one codebase covering web, Android, and iOS, with managed workflows, OTA updates, and file-based routing.

0
0
0
TYPESCRIPT REACT NATIVE
export const resources = {
en, fr,
} as const
type Locale = keyof typeof resources

🌐 React i18n TS Support

17 Dec 2023 β€’ πŸ“– 5 min read β€’ Updated 15 Mar 2026
⚑ Lightning read

Get full TypeScript intellisense for your i18n translations using "as const".

0
0
0
TYPESCRIPT REACT
// arrow: 'this' is always the class
logName = () => console.log(this.name)
// function: 'this' depends on caller
logName() { console.log(this.name) }

🏹 Regular Function vs Arrow Function

17 Aug 2023 β€’ πŸ“– 9 min read β€’ Updated 15 Mar 2026
β˜• Coffee needed

Learn the differences between normal functions and ES6 arrow functions.

0
0
0
JAVASCRIPT

Games

Particles

Shoot incoming particles before they collide with you.

JAVASCRIPT GAMES

Emoji React

A reaction speed game. How many positive emojis can you react to?

JAVASCRIPT GAMES

Colour Match

Match the target colour as fast as you can. Build streaks for bonus points!

JAVASCRIPT GAMES
Out Now on iOS & Android

Your ultimate skateboarding companion

8,000+ tricks, firing lines with billions of combos, a roguelike climb mode, trick progression, spot finder, session journal, skate quiz, culture hub, and push notifications to get you out skating. Built for skaters, by a skater.

Skate Dice8,000+ tricks with combos, S.K.A.T.E. scoring, and YouTube links
Firing LineGenerate random trick lines across 20+ obstacles, billions of combos
The ClimbRoguelike trick challenge, every floor unique, 3 tries, no mercy
LevelsTrack your progression across trick categories and stances
Spot FinderFind skateparks and street spots on a live map
Learn to SkateStep-by-step guides to get you rolling and landing your first tricks
Bag of TricksYour personal trick collection, synced and always ready to roll from
Skate QuizTest your knowledge on pro skaters, history, companies, and culture
Culture HubSkate news, videos, and community content all in one spot
Push NotificationsGet nudged to go skate with session reminders
Sketchy home screen showing skate dice, firing line, and the climb featuresRoll dice screen with S.K.A.T.E. scoring and trick displayFiring line screen generating trick lines across obstaclesLevels progression screen with trick categoriesSpot finder map showing skateparks across IrelandThe Climb roguelike mode with starter cardsQuick play presets from beginner to expert difficultySkate quiz with categories like pro skaters, history, and culture

Apps & Sites

Push&Progress

Skateboarding lessons with accredited instructors across Northern Ireland.

SKATEBOARDING

SkateDice

Roll for your next trick. A skate dice web app.

SKATEBOARDING

Ringwork

COMING SOON

Your corner between rounds. Timers, combo generators, and session tracking for boxing training.

EXPO REACT NATIVE COMING SOON