HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
appsforartists
ambidex
JavaScript2015–2015
appsforartists / ambidex · Archived

ambidex

Effortlessly host your React app on both the client and the server. Some call it isomorphic JavaScript - we call it Ambidex.

2Distinct people
5Mentions
0Explicit recommenders
575GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Effortlessly host your React app on both the client and the server. Some call it isomorphic JavaScript - we call it Ambidex.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week5 dated mentions

Observed mentions: 2015-01-15 20:03:34 UTC to 2015-04-08 06:28:52 UTC. Weeks start Monday, UTC.

012015-01-12 00:00:00 UTC to 2015-01-19 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJan 122015-01-19 00:00:00 UTC to 2015-01-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-01-26 00:00:00 UTC to 2015-02-02 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2015-02-02 00:00:00 UTC to 2015-02-09 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2015-02-09 00:00:00 UTC to 2015-02-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-02-16 00:00:00 UTC to 2015-02-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-02-23 00:00:00 UTC to 2015-03-02 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsFeb 232015-03-02 00:00:00 UTC to 2015-03-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-03-09 00:00:00 UTC to 2015-03-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-03-16 00:00:00 UTC to 2015-03-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-03-23 00:00:00 UTC to 2015-03-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-03-30 00:00:00 UTC to 2015-04-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-04-06 00:00:00 UTC to 2015-04-13 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsApr 6

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Jan 122015-01-12 00:00:00 UTC2015-01-19 00:00:00 UTC101
Jan 192015-01-19 00:00:00 UTC2015-01-26 00:00:00 UTC000
Jan 262015-01-26 00:00:00 UTC2015-02-02 00:00:00 UTC110
Feb 22015-02-02 00:00:00 UTC2015-02-09 00:00:00 UTC101
Feb 92015-02-09 00:00:00 UTC2015-02-16 00:00:00 UTC000
Feb 162015-02-16 00:00:00 UTC2015-02-23 00:00:00 UTC000
Feb 232015-02-23 00:00:00 UTC2015-03-02 00:00:00 UTC101
Mar 22015-03-02 00:00:00 UTC2015-03-09 00:00:00 UTC000
Mar 92015-03-09 00:00:00 UTC2015-03-16 00:00:00 UTC000
Mar 162015-03-16 00:00:00 UTC2015-03-23 00:00:00 UTC000
Mar 232015-03-23 00:00:00 UTC2015-03-30 00:00:00 UTC000
Mar 302015-03-30 00:00:00 UTC2015-04-06 00:00:00 UTC000
Apr 62015-04-06 00:00:00 UTC2015-04-13 00:00:00 UTC101

What Hacker News says

5 sources
The first time I used Promises (and really, the first time I did any serious work in Node), I prototyped an isomorphic web server: https://github.com/appsforartists/ambidex/blob/master/src/Am... In three different places in that file, you'll find a Promise that ends in ".catch(error => console.error(error.stack))`. Before I learned that bit of boilerplate, I'd spend an hour staring at my screen wondering why things were silently broken. It's mindblowing that errors are implicitly suppressed by default with Promises. console.error ought to be automatically invoked for any error that makes it to the root scope without a .catch() (just like it is with sync code).
In Stop Trying to Catch Me
Work-related: - Spoke at a conference for the first time (React.js Conf) [1] - Released my first serious open-source project (an isomorphic React app server) [2] - The project I've been building was demoed to some executives and put our team in a really good spot. Other cool stuff: - Started buying furniture and accessories to make my room feel like home. I've always been hesitant to own large items because I've moved pretty frequently since I finished high school. Buying a handmade hardwood bed is a big deal for me. [1]: http://conf.reactjs.com/schedule.html#tweak-your-page-in-rea... [2]: https://github.com/appsforartists/ambidex/
In Ask HN: What have you achieved in January 2015?
I'm also experimenting with isomorphic React apps. I'll be presenting some of my work at React Conf at the end of the month (so this isn't yet as well documented as it should be), but here's what I'm trying to handle async data with ReactRouter: - Have the data your view depends on expressed as a named parameter in routes.jsx: https://github.com/appsforartists/ambidex-example--bike-inde... - Use those named parameters to resolve which stores need to be populated before rendering: https://github.com/appsforartists/ambidex-example--bike-inde... - Don't render the page on the server until those routes are populated: https://github.com/appsforartists/Ambidex/blob/master/src/ca... In that example, the editBike view depends on bikeID. actionsForRouterState makes sure that the viewBike action is called to populate the CurrentBike store before
Read the rest
any route that includes bikeID is rendered.
In Presenting the Most Over-Engineered Blog Ever

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.